ich bin neu hier, habe aber nach längerem Suchen keine Auskunft darüber gefunden, wie man Datensätze aus einer OOBase-Datenbank untereinander in ein OOWriter-Dokument ausgeben kann, ohne dabei auf eine Tabelle zurückgreifen zu müssen (das wäre z.B. in einem Bericht aus der Datnbank der Fall).
Also: ich habe eine OO-Datenbank. Aus der jeweiligen Tabelle lese ich per Makro und HSQL die Daten aus. Sie werden in ein OOWriter-Dokument ausgegeben. Hinter jedem Datensatz kommt ein Absatzwechsel.
Nun möchte ich aber, daß jeder Datensatz auf eine Extraseite kommt. Dazu müßte ich nach dem jeweiligen ausgelesenen Datensatz einen Seitenumbruch einfügen, und zwar in die Schleife, die alle datensätze ausliest.
Ich kann den Befehl nicht finden. Alles was ich finde, ist, wie man einen Seitenwechsel in einer OOCalc-Tabelle einfügt.
BTW: Eine Lösung dieses Problems stellt einen ähnlichen Ansatz das wie die Berichtfunktion in MSAccess bzw. MSWord: dort können die einzelnen Datensätze ebenfalls in einzelne Seiten desselben Dokumentes ausgegeben werden.
Herzlichen Gruß an alle
Werner
----------------------------------------------------------
meine bisherigen, zusammengestoppelten Erfolge
----------------------------------------------------------
Code: Alles auswählen
Sub Main
DIM DatabaseContext AS OBJECT
DIM Datenquelle AS OBJECT
DIM Verbindung AS OBJECT
DIM Authentifizierung AS OBJECT
DIM SQL_Anweisung AS OBJECT
DIM Abfrageergebnis AS OBJECT
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' Datenbankkontext erzeugen
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
' Datenquelle wählen
Datenquelle = DatabaseContext.getByName("db-001")
' bei Bedarf Dialog für Passwortschutz aufrufen
IF NOT Datenquelle.IsPasswordRequired THEN
Verbindung = Datenquelle.GetConnection("","")' ("Benutzername","Passwort")
ELSE
Authentifizierung = createUnoService("com.sun.star.sdb.InteractionHandler")
Verbindung = Datenquelle.ConnectWithCompletion(Authentifizierung)
END IF
' SQL-Kommunikationskanal aufbauen
SQL_Anweisung = Verbindung.createStatement()
' SQL-Abfrage ausführen
DIM Sql AS STRING
Sql = "SELECT ""id"", ""titel"" FROM ""verzeichnis"" WHERE ""gruppe"" = 'Abfragekriterium' ORDER BY ""id"" DESC"
Abfrageergebnis = SQL_Anweisung.executeQuery(Sql)
' SQL-Abfrageergebnis auswerten
IF NOT ISNULL(Abfrageergebnis) THEN
WHILE Abfrageergebnis.next
odoc=thiscomponent 'bleibt immer gleich
otext=odoc.text 'bleibt immer gleich
ocursor=otext.createtextcursor() 'bleibt immer gleich
otext.insertString(ocursor, "ID",false)
otext.insertString(ocursor, chr(9),false)
otext.insertString(ocursor, Abfrageergebnis.getString(1),false)
otext.insertControlCharacter(ocursor, "PARAGRAPH_BREAK",false)
otext.insertString(ocursor, "Titel",false)
otext.insertString(ocursor, chr(9),false)
otext.insertString(ocursor, Abfrageergebnis.getString(2),false)
otext.insertControlCharacter(ocursor, "PARAGRAPH_BREAK",false)
otext.insertControlCharacter(ocursor, "PARAGRAPH_BREAK",false)
WEND ' nächster Datensatz
END IF
End Sub[b]