Seite 1 von 1

Writer Dokument per Macro mit DB verbinden

Verfasst: Sa, 26.05.2007 18:13
von agrupe
Hallo,

ich versuche gerade, ein bestehendes Writer-Dokument zu öffnen, darin Texte zu schreiben und gleichzeitig die im Dokument befindlichen Elemente, die auf Datenbanktabellen verweisen zu nutzen.

Öffnen klappt und Text schreiben klappt auch.

Ich öffne das Dokument aus einem Formular mit :
sURL=convertToURL("home/OO/Documents/SalesDB/Rechnungsformular.odt")
oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank",0, Arg())

Lediglich die Formular-Felder sind mal leer, mal mit dem (wie erwarteten) 1. Datensatz gefüllt.

Hat das Dokument keine Verbindung zur Datenbank, obwohl das aufrufende Formular mit der DB verbunden ist? Wenn dem so ist, wie erstelle ich die Verbindung?

Ich habe schon probiert, einfach die Datenbank ebenfalls (nach Öffnen des Writer-Dokuments) per Macro zu öffnen. das hat aber keine Auswirkung:

DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext")
oDatenquelle=DatabaseContext.getByName("salesdb")
oDatVerb=oDatenquelle.getConnection("","")

Mich wundert, dass es mal klappt, meist aber nicht.

Hintergrund: Ich will ein Formular drucken, muss aber den enthaltenen Tabelleninhalt per Macro reinschreiben, da OO keine Tabellenelemente per PDF exportieren kann (s. anderer Thread von mir).

Gruß

Andreas

Verfasst: So, 27.05.2007 09:24
von Toxitom
Hallo Andreas,

du schreibst wenig über die Umgebungen: Dein Writerdokument hat - so vermute ich mal - ein Formular drauf und dieses hat eine Verbindung zu einer Datenbank? Zu einer angemeldeten Datenbank oder zu einer nicht angemeldetetn. Was für eine Art der Datenbank ist das ? eine HSQLDB- (respektive Base oder eine andere?
Du sagst, manchmal klappt es, manchmal nicht. Kannst du das genauer verifizieren?
Könnte es ein Zeitproblem sein? das Verbinden zur Datenbank kann einige Minuten dauern - solange wird nichts dargestellt?
Natürlich kannst du auch manuell eine Verbindung zur Datenbank herstellen (wie dargestellt) - nur ... was erwartetst du dann? Die Verbindung steht - aber du nutzt sie nicht?
Das Formular selbst stellt die Verbindung ebenfalls her - automatisch und unabhängig. Jetzt hast du eigentlich zwei Verbindungen. Du kannst natürlich jetzt über diene oDatVerb einen eigenen Resultset wezeugen und den dann per Makro manuell auswerten - das Formular macht auch nicchts anderes - nur eben intern und automatisch :-)

Viele Grüße
Thomas

Verfasst: So, 27.05.2007 11:02
von agrupe
Hallo Thomas,

ich habe das Problem gefunden. Wenn das Formular geöffnet wurde, wurde per Macro automatisch auf den letzten Datensatz gesprungen. Dies war im Formular hinterlegt.

Scheinbar gab es dann ein internes Timing-Problem, wenn ich (mitten im Datensatzwechsel, der recht lange braucht) versuche, weitere Manipulationen am Datensatz vorzunehmen. Manchmal, ging es dadurch, manchmal hing die Sache.

Habe das Startmacro entfernt, nun läufts.

Danke für die Antwort, sie hat mich auf die richtige Spur gebracht.

Gruß

Andreas