von milchtrink3r » Do, 30.04.2009 11:24
Hallo,
ich stehe nun seit Tagen vor einem riesen Problem. Auftrag ist es eine Datenbank in Base zu erstellen, die am Ende vom Netzwerk aus erreichbar ist und bearbeitet werden kann.
Die Datenbank steht und wenn ich Sie auf den Server lade, kann ich sie auch mit externen Formularen aufrufen. Das geht leider nur von meinem Rechner aus, weil der Pfad zur Datenbank nicht relativ ist.
Beispiel: Mein Rechner greift per j3nga/home/public/Datenbank drauf zu und der nächste Rechner xx/hime/public. Wenn ich unter Linux allen Rechnern den selben Mountpoint zuweise geht es, bringt mir aber nichts unter Windows.
Ich sehe hier 3 Möglichkeiten, die ich aber nicht hinbekomme:
1: Alle Formulare intern aufrufen -> Das darf ich dann nur so realisieren, wenn die Datenbank mit einer Benutzeroberfläche gestartet werden würde (z.b. Navigations Formular) ohne das ein User die Datenbank dazu sieht. Hab ich nicht hinbekommen. Kenne mich mit Makros nicht aus und die gegoogelten und die aus diesem Forum brachten nicht das erwünschte Ergebnis.
2: Ein Makro benutzen, das über einen Button zur Datenbank verbindet. Makro aus diesem Forum :
Sub Anmelden
oDoc = thisComponent
GlobalScope.BasicLibraries.loadLibrary("Tools")
StickDirectory = DirectoryNameoutofPath(oDoc.URL,"/")
GlobalScope.BasicLibraries.loadLibrary("Tools")
oForm = oDoc.drawpage.forms.getbyindex(0)
Button = oForm.getByName("PushButton")'Button für Statusbericht
Button.enabled = false
Button1 = oForm.getByName("PushButton1")'Connect Button
Button1.enabled = false
Button1.Label = "Wait..."
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
Wait 300
args1(0).Name = "SwitchControlDesignMode"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:SwitchControlDesignMode", "", 0, args1())
Wait 300
oForm.DataSourceName = StickDirectory & "/CRM.odb"
Wait 300
args1(0).Name = "SwitchControlDesignMode"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:SwitchControlDesignMode", "", 0, args1())
'>>> Option: Dialog für Statusmeldung anzeigen <<<
'Dialoglibraries.Loadlibrary("Standard")
'Dlg_Wait = CreateUnoDialog(Dialoglibraries.Standard.Dialog2)
'Dlg_Wait.setVisible(true)
'Wait 2000
'Dlg_Wait.setVisible(false)
Button = oForm.getByName("PushButton")
Button.enabled = True
Button1 = oForm.getByName("PushButton1")
Button1.enabled = True
Button1.Label = "Connect DB"
wait 500
odoc.store()
End Sub
Gibt mir einen Fehler in dieser Zeile " Button1.enabled = false"
3.Die Datenbank für Windows und Linux erreichbar machen ohne immer den Pfad in jedem Formular anzupassen, das wäre sonst ja total zeitaufwendig und nicht im Sinne der Anwender, die eigentlich damit garnichts zu tun haben sollten.
Danke im vorraus
Hallo,
ich stehe nun seit Tagen vor einem riesen Problem. Auftrag ist es eine Datenbank in Base zu erstellen, die am Ende vom Netzwerk aus erreichbar ist und bearbeitet werden kann.
Die Datenbank steht und wenn ich Sie auf den Server lade, kann ich sie auch mit externen Formularen aufrufen. Das geht leider nur von meinem Rechner aus, weil der Pfad zur Datenbank nicht relativ ist.
Beispiel: Mein Rechner greift per j3nga/home/public/Datenbank drauf zu und der nächste Rechner xx/hime/public. Wenn ich unter Linux allen Rechnern den selben Mountpoint zuweise geht es, bringt mir aber nichts unter Windows.
Ich sehe hier 3 Möglichkeiten, die ich aber nicht hinbekomme:
1: Alle Formulare intern aufrufen -> Das darf ich dann nur so realisieren, wenn die Datenbank mit einer Benutzeroberfläche gestartet werden würde (z.b. Navigations Formular) ohne das ein User die Datenbank dazu sieht. Hab ich nicht hinbekommen. Kenne mich mit Makros nicht aus und die gegoogelten und die aus diesem Forum brachten nicht das erwünschte Ergebnis.
2: Ein Makro benutzen, das über einen Button zur Datenbank verbindet. Makro aus diesem Forum :
Sub Anmelden
oDoc = thisComponent
GlobalScope.BasicLibraries.loadLibrary("Tools")
StickDirectory = DirectoryNameoutofPath(oDoc.URL,"/")
GlobalScope.BasicLibraries.loadLibrary("Tools")
oForm = oDoc.drawpage.forms.getbyindex(0)
Button = oForm.getByName("PushButton")'Button für Statusbericht
Button.enabled = false
Button1 = oForm.getByName("PushButton1")'Connect Button
Button1.enabled = false
Button1.Label = "Wait..."
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
Wait 300
args1(0).Name = "SwitchControlDesignMode"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:SwitchControlDesignMode", "", 0, args1())
Wait 300
oForm.DataSourceName = StickDirectory & "/CRM.odb"
Wait 300
args1(0).Name = "SwitchControlDesignMode"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:SwitchControlDesignMode", "", 0, args1())
'>>> Option: Dialog für Statusmeldung anzeigen <<<
'Dialoglibraries.Loadlibrary("Standard")
'Dlg_Wait = CreateUnoDialog(Dialoglibraries.Standard.Dialog2)
'Dlg_Wait.setVisible(true)
'Wait 2000
'Dlg_Wait.setVisible(false)
Button = oForm.getByName("PushButton")
Button.enabled = True
Button1 = oForm.getByName("PushButton1")
Button1.enabled = True
Button1.Label = "Connect DB"
wait 500
odoc.store()
End Sub
Gibt mir einen Fehler in dieser Zeile " Button1.enabled = false"
3.Die Datenbank für Windows und Linux erreichbar machen ohne immer den Pfad in jedem Formular anzupassen, das wäre sonst ja total zeitaufwendig und nicht im Sinne der Anwender, die eigentlich damit garnichts zu tun haben sollten.
Danke im vorraus