Seite 1 von 1

Öffnen einer nicht registrierten Datenbank (Base)

Verfasst: Fr, 10.06.2011 08:11
von rito
Und wieder ein neues Problem für mich

Ich würde gerne aus Writer heraus per Makro auf die Daten einer nicht registrierten Datenbank-Datei (Base) zugreifen.

Mein Buch zur OpenOffice-Programmierung zeigt mir jedoch lediglich Wege für schon registrierte Datenbanken.
Zugriffe auf die Datenbank sollten mit relativen Pfaden erfolgen, da ich die Dateien weitergeben möchte und ja nicht weiß wie deren Verzeichnisstruktur aussieht.

Folgendes habe ich im Netz gefunden:
DatenBanken = createUnoService("com.sun.star.sdb.DatabaseContext")
NeuDB=DatenBanken.getByname("file:///c:/test5.odb") <=Hier sollte der Pfad relativ sein.
DatenBanken.registerobject("NeueDB",NeuDB) <=Wofür ist der String in den Anführungszeichen?

Und würde das so gehen mit diesem Beispiel?

Re: Öffnen einer nicht registrierten Datenbank (Base)

Verfasst: Fr, 10.06.2011 09:24
von rito
Genauer zum relativen Pfad:

Ich möchte ein Writerdokument bearbeiten und aus Writer die Datenbank aufrufen und die Datenbank soll zum Writerdokument mittels relativem Pfad geöffnet werden.

Ich hoffe man konnte mich mit meinem Kauderwelsch verstehen :D

Re: Öffnen einer nicht registrierten Datenbank (Base)

Verfasst: Fr, 10.06.2011 17:43
von F3K Total
Hallo rito,
so könnte es klappen:

Code: Alles auswählen

Sub register_database_from_writer

odoc=thisComponent'Writer Dokument

oFolder="Folder_DB" 'Name des Ordners der Datenbank
oDBname="DBname.odb" 'Name der Datenbank, muß natürlich existieren, sonst gibt es einen Fehler

url_DB=replace(odoc.url,odoc.title,"")+oFolder+"/"+oDBname'zusammengesetzter Pfad zur Datenbank
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
NeuDB=DatabaseContext.getByName(url_DB)
DatabaseContext.registerobject(oDBname,NeuDB)'neue Datenbank anmelden

Msgbox "Die Datenbank "+oDBname+" wurde unter dem Pfad "+url_DB+" registriert"

End Sub
Gruß R

Re: Öffnen einer nicht registrierten Datenbank (Base)

Verfasst: Sa, 11.06.2011 08:30
von DPunch
Aloha
rito hat geschrieben:DatenBanken.registerobject("NeueDB",NeuDB) <=Wofür ist der String in den Anführungszeichen?
Der String in den Anführungszeichen legt fest, unter welchem Namen die Datenbank bei Base registriert werden soll (Extras -> Optionen -> Base -> Datenbanken)

Dazu sei noch angemerkt, dass Du die Datenbank gar nicht registrieren musst - und vielleicht auch nicht solltest -, wenn es keine Interaktion zwischen Benutzer und Datenbank geben soll in Form von z.B. Serienbriefen o.Ä.

Anstatt .registerObject kannst Du also direkt mit (in Deinem Codeschnipsel)

Code: Alles auswählen

oConnection = NeuDB.getConnection("","")
weitermachen.

Re: Öffnen einer nicht registrierten Datenbank (Base)

Verfasst: Di, 14.06.2011 15:45
von rito
Vielen Dank für eure Antworten! Wird gleich mal ausprobiert!

Gruß
rito