Wir sind auf Ihre Unterstützung angewiesen!
💚 BITTE helfen Sie uns HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
mysql autoconnect, form autostart
mysql autoconnect, form autostart
Meine Datenbank läuft auf einem mysql server. Dieser braucht einen Benutzer+Passwort.
Ich würde gerne beim Start der Datenbank automatisch ein Formular öffnen. Ich habe schon etliche Varianten probiert, klappt aber nicht. Ich vermute es scheitert an der Verbindung zum mysql server. Hier muß man immer manuell Passwort und Benutzer eingeben.
Läßt sich die Verbindung zum mysql server automatisieren, sodaß ich das Passwort nicht mehr eingeben muß?
mein code:
Sub AutoloadForm
Con = ThisDatabaseDocument.CurrentController
If NOT ( oCon.isConnected() ) Then oCon.connect()
oCon.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM,"Lagerverwaltung.StammdatenListe",FALSE)
End Sub
das Makro habe ich "Aktion bei Dokument öffnen" hinterlegt.
Ich würde gerne beim Start der Datenbank automatisch ein Formular öffnen. Ich habe schon etliche Varianten probiert, klappt aber nicht. Ich vermute es scheitert an der Verbindung zum mysql server. Hier muß man immer manuell Passwort und Benutzer eingeben.
Läßt sich die Verbindung zum mysql server automatisieren, sodaß ich das Passwort nicht mehr eingeben muß?
mein code:
Sub AutoloadForm
Con = ThisDatabaseDocument.CurrentController
If NOT ( oCon.isConnected() ) Then oCon.connect()
oCon.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM,"Lagerverwaltung.StammdatenListe",FALSE)
End Sub
das Makro habe ich "Aktion bei Dokument öffnen" hinterlegt.
Re: mysql autoconnect, form autostart
Hallo drheiser,
aus dem Handbuch, ohne es anzupassen:
Robert
aus dem Handbuch, ohne es anzupassen:
GrußIF NOT oDatenquelle.IsPasswordRequired THEN oVerbindung = oDatenquelle.GetConnection("","")
Hier wäre es möglich, fest einen Benutzernamen und ein Passwort einzugeben, wenn eine Passworteingabe erforderlich wäre. In den Klammer steht dann ("Benutzername","Passwort").
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: mysql autoconnect, form autostart
Vielen Danke für die Antwort, Robert.
Leider klappt das nicht.
Es erfolgt kein autoconnect mit der mysql Datenbank und vermutlich wird auch deshalb das "Start"-Formular nicht automatisch geöffnet.
Hier mal mein code:
sub OnOpenDocument()
Dim oController
oController = ThisDatabaseDocument.CurrentController
IF NOT oController.IsPasswordRequired THEN oVerbindung = oController.GetConnection("benutzer","passwort")
IF NOT ( oController.isConnected() ) THEN oController.connect() ' Connect to the database, if necessary
oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, "Lagerverwaltung.StammdatenListe", FALSE ) ' Parameters: ObjectType, Parameter ObjectName, ForEditing
End Sub
Leider klappt das nicht.
Es erfolgt kein autoconnect mit der mysql Datenbank und vermutlich wird auch deshalb das "Start"-Formular nicht automatisch geöffnet.
Hier mal mein code:
sub OnOpenDocument()
Dim oController
oController = ThisDatabaseDocument.CurrentController
IF NOT oController.IsPasswordRequired THEN oVerbindung = oController.GetConnection("benutzer","passwort")
IF NOT ( oController.isConnected() ) THEN oController.connect() ' Connect to the database, if necessary
oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, "Lagerverwaltung.StammdatenListe", FALSE ) ' Parameters: ObjectType, Parameter ObjectName, ForEditing
End Sub
Re: mysql autoconnect, form autostart
... da muß ich mich leider ohne Antwort der Frage anschließen. Warum erhält man nach einem
dennoch nur die Fehlermeldung
"Type: com.sun.star.sdbc.SQLException, Message: [OOoBase] Es besteht keine Verbindung zur Datenbank.."
Es sollte doch möglich sein, anstelle des interaktiven Dialogs, den man mit CurrentController.Connect() aufrufen kann, auch ohne Dialog automatisch die Datenbankverbindung für das Formular zu erzeugen - nur wie?
Entwickler, die sich mit dem MVC-Paradigma hinter dem Ganzen besser auskennen, können vielleicht weiterhelfen?
Code: Alles auswählen
If Not oController.isConnected() Then oController.DataSource.GetConnection(sUser,sPassword)
oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, meinFormularname, FALSE ) '
"Type: com.sun.star.sdbc.SQLException, Message: [OOoBase] Es besteht keine Verbindung zur Datenbank.."
Es sollte doch möglich sein, anstelle des interaktiven Dialogs, den man mit CurrentController.Connect() aufrufen kann, auch ohne Dialog automatisch die Datenbankverbindung für das Formular zu erzeugen - nur wie?
Entwickler, die sich mit dem MVC-Paradigma hinter dem Ganzen besser auskennen, können vielleicht weiterhelfen?
Re: mysql autoconnect, form autostart
Hallo devdol,
ich habe das jetzt einmal mit MySQL ausprobiert. Die Weitergabe des Passwortes über
ist anscheinend nicht möglich.
Die folgende Verfahrensweise führt bei mir zu einer Verbindung:
Ob da der Dialog, der sonst erscheint, die Eingabe des Passwortes über GetConnection verhindert, kann ich nicht sagen.
Gruß
Robert
ich habe das jetzt einmal mit MySQL ausprobiert. Die Weitergabe des Passwortes über
Code: Alles auswählen
oDatasource.GetConnection("username","password")
Die folgende Verfahrensweise führt bei mir zu einer Verbindung:
Code: Alles auswählen
oDatasource = ThisComponent.DataSource
oDatasource.Password = "password"
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: mysql autoconnect, form autostart
Hallo Robert,
vielen Dank für den interessanten Vorschlag!
Folgendes habe ich jetzt in einem Autostart-Makro stehen, welches an das Ereignis "Dokument öffnen" gebunden ist:
Das interessante dabei ist:
* Alle Zuweisungen in (1) sind möglich und funktionieren auch (wie man sich mit Xray überzeugen kann).
* Der Aufruf von GetConnection() zeigt keinen Dialog mehr an
* Trotzdem liefern beide MsgBoxes "False" für den .Connected-Status, und in Block (3) kommt folgrichtig die Fehlermeldung
"Type: com.sun.star.sdbc.SQLException, Message: [OOoBase] Es besteht keine Verbindung zur Datenbank."
* Ändert man "oDatasource.IsPasswordRequired = True", ändert das auch nichts an vorgenanntem Verhalten.
Der Zugriff auf die Datenbank (mariadb; Verbundungsart: mysql(odbc", weil das die einzige zu sein scheint, die zumindest meistens einigermaßen fehlerfrei funktioniert) ist mit einem bestimmten Benutzernamen und leerem Kennwort möglich.
Setze ich einen anderen berechtigten DBuser ein mit einem nichtleeren Kennwort, funktioniert das ganze ebenfalls nicht, also kann es auch nicht am Spezialfall "Leerstring" liegen.
Hat es irgendjemand geschafft, ein Formular, das mysql-Daten anzeigt, automatisch zu öffnen, ohne jedes Mal den Dialog "Authentifizierung erforderlich" passieren zu müssen?
vielen Dank für den interessanten Vorschlag!
Folgendes habe ich jetzt in einem Autostart-Makro stehen, welches an das Ereignis "Dokument öffnen" gebunden ist:
Code: Alles auswählen
' (1)
oDatasource = ThisComponent.DataSource
oDatasource.Password = sPassword
oDatasource.User = sUser
oDatasource.IsPasswordRequired = False
oDatasource.GetConnection(sUser,sPassword)
' Xray oDatasource
' (2)
oController=ThisComponent.CurrentController
MsgBox "Connected:"+oController.isConnected()
If (Not oController.isConnected() ) Then
oController.DataSource.GetConnection(sUser,sPassword)
MsgBox "Nach getConnection ; Connected:"+oController.isConnected()
End If
'
' (3)
oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, _
sFormularName, FALSE ) ' Parameters: ObjectType, Parameter ObjectName, ForEditing:FALSE
* Alle Zuweisungen in (1) sind möglich und funktionieren auch (wie man sich mit Xray überzeugen kann).
* Der Aufruf von GetConnection() zeigt keinen Dialog mehr an
* Trotzdem liefern beide MsgBoxes "False" für den .Connected-Status, und in Block (3) kommt folgrichtig die Fehlermeldung
"Type: com.sun.star.sdbc.SQLException, Message: [OOoBase] Es besteht keine Verbindung zur Datenbank."
* Ändert man "oDatasource.IsPasswordRequired = True", ändert das auch nichts an vorgenanntem Verhalten.
Der Zugriff auf die Datenbank (mariadb; Verbundungsart: mysql(odbc", weil das die einzige zu sein scheint, die zumindest meistens einigermaßen fehlerfrei funktioniert) ist mit einem bestimmten Benutzernamen und leerem Kennwort möglich.
Setze ich einen anderen berechtigten DBuser ein mit einem nichtleeren Kennwort, funktioniert das ganze ebenfalls nicht, also kann es auch nicht am Spezialfall "Leerstring" liegen.
Hat es irgendjemand geschafft, ein Formular, das mysql-Daten anzeigt, automatisch zu öffnen, ohne jedes Mal den Dialog "Authentifizierung erforderlich" passieren zu müssen?
Re: mysql autoconnect, form autostart
Hallo devdol,
ist für mich auch nur eine Sache von trial-and-error sowie xray:
Der Zugriff auf die Tabellen klappte so, weil die Verbindung wohl mit der Passwortweitergabe klar war.
Gruß
Robert
ist für mich auch nur eine Sache von trial-and-error sowie xray:
Code: Alles auswählen
SUB ConnectDB
oDatasource = ThisComponent.DataSource
oDatasource.Password = "my Password"
ThisComponent.CurrentController.Connect()
ThisComponent.FormDocuments.getByName( "formname" ).open
END SUB
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
[gelöst] Re: mysql autoconnect, form autostart
Hallo Robert,
erst mal tausend Dank für Deine Hilfsbereitschaft! Habe mich so gefreut, weil
schon etwas anderes zu sein scheint als
das per se ja funktioniert, doch vielleicht nicht mit der Methode der Zugangsdaten-Parametrisierung nicht zusammenpaßt
(das Verständnis von MVC und damit auch das Innenleben von LO erschließt sich mir als Nicht-Entwickler nicht und wird es wohl auch nie...).
Gleichwohl, mit
öffnet sich das Formular wieder nur nach jenem Dialog, der bereits richtig (mit sUser und leerem Kennwort) vorbelegt ist, dennoch Bestätigung verlangt.
Nach soviel Error habe ich nun noch ein weiteres Quentchen Trial hinzugefügt und statt des .Password-Attribus das .IsPasswordRequired zugewiesen:
Erstaunlich finde ich das deshalb, weil unter "Eigenschaften/Kennwort erforderlich: [ ]" diese Tatsache schon auf augenscheinlich globalem Level für die Anwendung vorkonfiguriert ist. Doch täuscht hier der Augenschein wohl wieder mal.
Auf jeden Fall tut das kleine Makro jetzt endlich genau das, was es soll, nämlich mir gefühlte 100 Klicks auf ein sinnfreies "OK" täglich zu ersparen. Und wir können endlich diesen Beitragsfaden mit [gelöst] verzieren!
Danke nochmals an RobertG, denn ohne Deine Anregung hätte ich wie einige weiter oben wohl auch schon wieder aufgeben müssen.
erst mal tausend Dank für Deine Hilfsbereitschaft! Habe mich so gefreut, weil
Code: Alles auswählen
ThisComponent.FormDocuments.getByName(sFormName).open
Code: Alles auswählen
oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, sFormName, FALSE )
(das Verständnis von MVC und damit auch das Innenleben von LO erschließt sich mir als Nicht-Entwickler nicht und wird es wohl auch nie...).
Gleichwohl, mit
Code: Alles auswählen
sUser = (...)
sPassword = "" ' trifft im konreten Fall zu
oDatasource = ThisComponent.DataSource
oDatasource.Password = sPassword ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ThisComponent.CurrentController.Connect()
ThisComponent.FormDocuments.getByName( sFormName).open
Nach soviel Error habe ich nun noch ein weiteres Quentchen Trial hinzugefügt und statt des .Password-Attribus das .IsPasswordRequired zugewiesen:
Code: Alles auswählen
sUser = (...)
oDatasource = ThisComponent.DataSource
oDatasource.IsPasswordRequired = False ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ThisComponent.CurrentController.Connect()
ThisComponent.FormDocuments.getByName( sFormName).open
Auf jeden Fall tut das kleine Makro jetzt endlich genau das, was es soll, nämlich mir gefühlte 100 Klicks auf ein sinnfreies "OK" täglich zu ersparen. Und wir können endlich diesen Beitragsfaden mit [gelöst] verzieren!
Danke nochmals an RobertG, denn ohne Deine Anregung hätte ich wie einige weiter oben wohl auch schon wieder aufgeben müssen.
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️