Man kann mit StarBasic auch eine neue Datenbank anlegen. Dies geht aber nicht über
ein
neues Dokument, wie man nach dem Menü Neu -> Datenbank erwarten könnte, sondern direkt
über den Datenbankcontainer (com.sun.star.sdb.DatabaseContext).
Dabei wird eine neue Instanz einer Datenquelle erzeugt und diese mit den nötigen Parameter
(
Datenbanktyp, Name, Pfad etc.) versehen, danach gespeichert und registriert.
Erstmal holt man sich die vorhandenen Datenquellen:
DatenBanken = createUnoService("com.sun.star.sdb.DatabaseContext")
In diesem Service steht die Methode createinstance zur Verfügung die eine neue Datenquelle
erzeugt.
NeueDatenBank= DatenBanken.createinstance()
Der wichtigste Parameter ist "URL" in diesem steht die eigentliche Verknüpfung
zu der
Datenbank.
Der Syntax für diese Verknüpfung ist sdbc:treiber:datenbank.
Hier Beispiele:
Datenbank
|
Verknüpfung
|
Adabas
|
sdbc:adabas::mydb
|
Dbase
|
sdbc:dbase:c:\text\daten
|
Tabelle
|
sdbc:calc:c:\test.ods
|
ODBC
|
sdbc:odbc:Visual FoxPro-Datenbank
|
Access
|
sdbc:ado:access:PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
SOURCE=C:\Eigene Dateien\db1.mdb
|
Outlook
|
sdbc:address:outlook
|
( Weitere Beispiele folgen noch)
Hier mit einer Dbase-Datenbank:
NeueDatenBank.url="sdbc:dbase:c:\text\daten"
Weitere wichtige Parameter:
IsPasswordRequired - True, wenn ein Password für die Datenbank benötigt wird.
IsReadOnly - True, wenn die Datenbank nur lesend geöffnet werden kann.
Password - Passwort für die Datenbank.
User - User der Datebanken
Abschließend wird die neue Datenbank gespeichert und im Datenbankcontainer registriert.
NeueDatenBank.DatabaseDocument.storeAsURL("file:///c:/test.odb",getArgs())
DatenBanken.registerObject("NeueDB",
NeueDatenBank)
So und jetzt das ganze nochmal hintereinander:
DatenBanken = createUnoService("com.sun.star.sdb.DatabaseContext")
NeueDatenBank= DatenBanken.createinstance()
NeueDatenBank.url="sdbc:dbase:c:\text\daten"
NeueDatenBank.DatabaseDocument.storeAsURL("file:///c:/test.odb",getArgs())
DatenBanken.registerObject("NeueDB",
NeueDatenBank)