Seite 1 von 1

[gelöst] autoregistrierung von base Datenbank

Verfasst: Di, 23.08.2011 20:42
von juergen_w1987
hallo,

habe gerade openoffice auf 3.3.0 upgedatet.
Neues problem ich habe ein skript dass die Datenbank beim starten automatisch registriert. jetzt ist das aber seit 3.3.0 anders wollte schnell mal fragen wie man das skript anpassen muss??
http://www.openoffice.org/dev_docs/feat ... istrations

Code: Alles auswählen

Sub selfRegister (dbName as String)
   
   Dim dbContext As Object 
   Dim regDb As Object 
   Dim url As String
   dbContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
   	url = thisComponent.getUrl
	regDb = dbContext.getByName (url)
	dbContext.registerObject (dbName, regDb)
Die Fehlermeldung ist dass es schon den "dbName" gibt. wäre schon zufrieden wenn mir jemand den befehl zum löschen der registrierten Datenbank sagt. Damit ich die registrierung lösche und im anschluss gleich wieder die Datenbank neu registriere.

Ps: Das ganze brauche ich da die Datenbank des öfteren hin und her geschoben wird.

danke mfg

jürgen

Re: auto registrierung von base Datenbank

Verfasst: Di, 23.08.2011 22:30
von komma4
juergen_w1987 hat geschrieben:Damit ich die registrierung lösche und im anschluss gleich wieder die Datenbank neu registriere.
Das ist unnötig.

Siehst Du Dir das Objekt dbContext mit einem Objekt-Inspektor, wie XRAY
an, dann siehst Du:

a) eine Methode .hasByName, um zunächst das Vorhandensein zu prüfen, damit Du in dem Fall
b) die Eigenschaft .Name mit .setPropertyValue auf einen neuen (verschobenen) Pfad ändern kannst.


Das hilft Dir weiter?

Re: auto registrierung von base Datenbank

Verfasst: Mi, 24.08.2011 11:30
von juergen_w1987
lösugng:

Code: Alles auswählen

Sub selfRegister (dbName as String)
   Dim dbContext As Object 
   Dim regDb As Object 
   Dim isRegegistered As boolean 
   Dim url As String
   dbContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
   	url = thisComponent.getUrl
	regDb = dbContext.getByName (url)
 	isRegistered = dbContext.hasRegisteredDatabase(dbName)
 		if(isRegistered) Then 
    		dbContext.revokeObject(dbName)
			dbContext.registerObject (dbName, regDb)
		else 
			dbContext.registerObject (dbName, regDb)
		End if
		
End Sub