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
Datenbank von Linux und Windows erreichbar machen ?
Moderator: Moderatoren
-
- Beiträge: 7
- Registriert: Fr, 20.03.2009 20:05
Re: Datenbank von Linux und Windows erreichbar machen ?
Hallo,
ich gebe einfach mal ein paar Anmerkungen dazu.
- meines wissens ist die interne HSQLDB nicht multiuserfähig.
- ich habe nach Abschluss meiner Übungsphase MySQL installiert und meine Anwendung darauf umgestellt.
Damit bin ich nahezu uneingeschränkt multiuserfähig und da die Verbindung zur Datenbank via TcpIP (über die IP-Adresse) aufgebaut wird, sollte das unter Linux genauso wie unter Windows funktionieren.
- die ooBase-Anwendung muß natürlich auf jedem Rechner separat verfügbar sein und wird auch jeweils separat gestartet.
- Ich habe zur Vermeidung der IDE und zur Unterdrückung der internen Menüs von OO ein kleines Startmodul als externes Formular geschrieben, in dem nur ein Dialog ausgeführt wird (Start der Anwendung / Datensicherung / Ende)
- das externe Formular startet wie gesagt die Anwendung, wobei das auch nur ein (internes) Formular mit einer Reihe von PushButtons ist, mit denen dann alle Module aufgerufen werden können. In der Startprozedur dieses Formulars konfiguriere ich das System, stelle die Verbindung zur MySQL-DB her, prüfe Benutzer und Kennwort und lasse dann den Anwender nur noch in die von mir vorgesehenen Funktionen.
- wichtig war mir zusätzlich, daß kein Anwender die Möglichkeit hat, irgendwas an der Anwendung zu verändern.
Dazu habe ich nach längerer Sucherei eine wirklich einfache Möglichkeit gefunden, alle Menüs auszublenden sodaß das gesamte Formular nur noch die von mir gewollten Bedienungselement enthält.
Falls Du dazu Fragen haben solltest helfe ich gerne weiter und stelle Dir ggf. auch relevante Makros zur Verfügung.
Gruß eBayer
ich gebe einfach mal ein paar Anmerkungen dazu.
- meines wissens ist die interne HSQLDB nicht multiuserfähig.
- ich habe nach Abschluss meiner Übungsphase MySQL installiert und meine Anwendung darauf umgestellt.
Damit bin ich nahezu uneingeschränkt multiuserfähig und da die Verbindung zur Datenbank via TcpIP (über die IP-Adresse) aufgebaut wird, sollte das unter Linux genauso wie unter Windows funktionieren.
- die ooBase-Anwendung muß natürlich auf jedem Rechner separat verfügbar sein und wird auch jeweils separat gestartet.
- Ich habe zur Vermeidung der IDE und zur Unterdrückung der internen Menüs von OO ein kleines Startmodul als externes Formular geschrieben, in dem nur ein Dialog ausgeführt wird (Start der Anwendung / Datensicherung / Ende)
- das externe Formular startet wie gesagt die Anwendung, wobei das auch nur ein (internes) Formular mit einer Reihe von PushButtons ist, mit denen dann alle Module aufgerufen werden können. In der Startprozedur dieses Formulars konfiguriere ich das System, stelle die Verbindung zur MySQL-DB her, prüfe Benutzer und Kennwort und lasse dann den Anwender nur noch in die von mir vorgesehenen Funktionen.
- wichtig war mir zusätzlich, daß kein Anwender die Möglichkeit hat, irgendwas an der Anwendung zu verändern.
Dazu habe ich nach längerer Sucherei eine wirklich einfache Möglichkeit gefunden, alle Menüs auszublenden sodaß das gesamte Formular nur noch die von mir gewollten Bedienungselement enthält.
Falls Du dazu Fragen haben solltest helfe ich gerne weiter und stelle Dir ggf. auch relevante Makros zur Verfügung.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
-
- Beiträge: 7
- Registriert: Fr, 20.03.2009 20:05
Re: Datenbank von Linux und Windows erreichbar machen ?
Hallo Ebayer,
erstmal danke für deine ausführliche Antwort.
Jetzt noch eine Frage, wenn ich die gesamten Formulare intern laufen lasse und mir ein zusätliches Formular "Navigation" erstelle, das dann Verbindung über Buttons zu den anderen Formularen herstellt, ist es dann nicht egal wo die Datenbank liegt und wer von wo aus drauf zugreift. Das mit dem Menue ausblenden und wieder einbleden habe ich schon hinbekommen, ich glaube auch das es Makros von dir sind, die du einem anderen User zur Verfügung gestellt hast.
Nur muss dann, beim Start der Datenbank das Navigationsformular im Vordergrund sein und die Datenbank am besten minimiert oder garnicht erst sichtbar, wie bei einem externen Formular.
Meiner Logik nach wäre das am einfachsten.
Wenn das so nicht geht, bleibt mir also nur der Weg über mysql ?
Gruß
erstmal danke für deine ausführliche Antwort.
Jetzt noch eine Frage, wenn ich die gesamten Formulare intern laufen lasse und mir ein zusätliches Formular "Navigation" erstelle, das dann Verbindung über Buttons zu den anderen Formularen herstellt, ist es dann nicht egal wo die Datenbank liegt und wer von wo aus drauf zugreift. Das mit dem Menue ausblenden und wieder einbleden habe ich schon hinbekommen, ich glaube auch das es Makros von dir sind, die du einem anderen User zur Verfügung gestellt hast.
Nur muss dann, beim Start der Datenbank das Navigationsformular im Vordergrund sein und die Datenbank am besten minimiert oder garnicht erst sichtbar, wie bei einem externen Formular.
Meiner Logik nach wäre das am einfachsten.
Wenn das so nicht geht, bleibt mir also nur der Weg über mysql ?
Gruß
Re: Datenbank von Linux und Windows erreichbar machen ?
Das Problem ist, daß die von ooBase benutzte HSQLDB NICHT MULTIUSERFÄHIG IST
Wenn Du also mit mehreren Benutzern gleichzeitig auf die im Netz liegenden Daten zugreifen willst, geht das NICHT mit der internen Datenbank.
Dir bleibt dann wirklich nur der Weg über MySQL oder eine vergleichbare DB...... ist ohnehin viel leistungsfähiger, schneller und sicherer.
Das FrontEnd, also Deine Anwendung mußt Du jedenfalls zur Zeit (ich vermute auch zukünftig, weil SUN von Oracle übernommen wurde) auf jeder Arbeitsstation installieren. Das ist ja auch grundsätzlich kein Problem. Wie Du sicher weißt, wird von oo mit dem Start der Anwendung eine Lock-Datei im Verzeichnis der Anwendung (in Deinem Fall FrontEnd) erstellt. Die damit verbundene Logik von OO (Recovery etc. - kenne ich auch nicht im Detail) verhindert, daß die Anwendung nur 1 mal auf dem Server installiert werden kann.
Ich vermute mal, daß Du das kleine Testprogramm "Verkehr" von mir hast. Darin sind im Grunde die wichtigsten Komponenten enthalten. Allerdings besteht das Programm nur aus einem externen Formular ohne weitere interne Menus. Wenn Du wie bereits beschrieben, Deine Anwendung über ein externes Startmodul startest und sich das eigentliche Menu als Formular mit ausgeblendeten Systemmenus in der Hauptanwendung befindet, siehst Du nichts mehr von der Datenbank.
Genauso, wie es in einer ordentlichen Anwendung sein soll. Ich kann Dir bei Bedarf das ganze mal mit ein paar Screenshoot's verdeutlichen. Melde Dich halt.
Gruß eBayer
Wenn Du also mit mehreren Benutzern gleichzeitig auf die im Netz liegenden Daten zugreifen willst, geht das NICHT mit der internen Datenbank.
Dir bleibt dann wirklich nur der Weg über MySQL oder eine vergleichbare DB...... ist ohnehin viel leistungsfähiger, schneller und sicherer.
Das FrontEnd, also Deine Anwendung mußt Du jedenfalls zur Zeit (ich vermute auch zukünftig, weil SUN von Oracle übernommen wurde) auf jeder Arbeitsstation installieren. Das ist ja auch grundsätzlich kein Problem. Wie Du sicher weißt, wird von oo mit dem Start der Anwendung eine Lock-Datei im Verzeichnis der Anwendung (in Deinem Fall FrontEnd) erstellt. Die damit verbundene Logik von OO (Recovery etc. - kenne ich auch nicht im Detail) verhindert, daß die Anwendung nur 1 mal auf dem Server installiert werden kann.
Ich vermute mal, daß Du das kleine Testprogramm "Verkehr" von mir hast. Darin sind im Grunde die wichtigsten Komponenten enthalten. Allerdings besteht das Programm nur aus einem externen Formular ohne weitere interne Menus. Wenn Du wie bereits beschrieben, Deine Anwendung über ein externes Startmodul startest und sich das eigentliche Menu als Formular mit ausgeblendeten Systemmenus in der Hauptanwendung befindet, siehst Du nichts mehr von der Datenbank.
Genauso, wie es in einer ordentlichen Anwendung sein soll. Ich kann Dir bei Bedarf das ganze mal mit ein paar Screenshoot's verdeutlichen. Melde Dich halt.
Gruß eBayer
Zuletzt geändert von eBayer am Do, 30.04.2009 14:34, insgesamt 1-mal geändert.
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
-
- Beiträge: 7
- Registriert: Fr, 20.03.2009 20:05
Re: Datenbank von Linux und Windows erreichbar machen ?
Hallo Ebayer,
danke nochmals, ich verstehe das nicht mehrere Leute gleichzeitig an der Datenbank arbeiten können. Wenn die Datenbank aber nun LOKAL gespeichtert ist und beim Starten ein bestimmtes Formular im Vordergrund stehen soll und die eigentliche Datenbank minimiert ist, wie realisiere ich das per Makro (ist jetzt ein anderes Projekt, was mich persönlich betrifft).
Wäre nett wenn du dafür noch eine Lösung hättest.
Gruß Milch
danke nochmals, ich verstehe das nicht mehrere Leute gleichzeitig an der Datenbank arbeiten können. Wenn die Datenbank aber nun LOKAL gespeichtert ist und beim Starten ein bestimmtes Formular im Vordergrund stehen soll und die eigentliche Datenbank minimiert ist, wie realisiere ich das per Makro (ist jetzt ein anderes Projekt, was mich persönlich betrifft).
Wäre nett wenn du dafür noch eine Lösung hättest.
Gruß Milch
Re: Datenbank von Linux und Windows erreichbar machen ?
Ich habe Dir mal ein paar Bildschirme ausgedruckt und wollte sie hier beifügen. (ist zu groß)
Wenn Du mir Deine MailAdr gibst, kann ich es Dir mailen.
Du brauchst nur die ZIP-Datei entpacken und dann das darin befindliche Dokument mit Wordpad öffnen. (Writer verzerrt leider die Darstellung)
Daraus solltest Du das Benutzerkonzept erkennen.
Die Anwendung kann ich Dir leider nicht ohne Vorarbeiten geben, weil doch sehr viele Abhängigkeiten drin sind.
Aber vielleicht hilft es Dir ja schon mal weiter.
Gruß eBayer
Wenn Du mir Deine MailAdr gibst, kann ich es Dir mailen.
Du brauchst nur die ZIP-Datei entpacken und dann das darin befindliche Dokument mit Wordpad öffnen. (Writer verzerrt leider die Darstellung)
Daraus solltest Du das Benutzerkonzept erkennen.
Die Anwendung kann ich Dir leider nicht ohne Vorarbeiten geben, weil doch sehr viele Abhängigkeiten drin sind.
Aber vielleicht hilft es Dir ja schon mal weiter.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008