Writer-Formular Datenbankverbindung wechseln

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Writer-Formular Datenbankverbindung wechseln

Beitrag von F3K Total »

Hallo zusammen,
ich habe folgendes Problem:
Mit "GRANT" und "SET PASSWORD" kann ich in einer HSQLDB einem USER eine Rolle und ein Passwort zuordnen.
Dazu muss ich "DBA" sein.
Wenn ich die Änderungen durchgeführt habe, soll der USER im geöffneten WRITER Formular angemeldet werden, und zwar mit seiner Rolle, nicht als DBA
Ich stelle mir vor, dass ich dazu die Datenbankverbindung einmal kappen, und dann wieder neu verbinden muß.
Hat jemand eine Idee, wie dass in Basic geht?

beste Grüße von Rik
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Writer-Formular Datenbankverbindung wechseln

Beitrag von RobertG »

Da ich keinen entsprechenden Testaufbau habe, hier einmal ein Schuss ins Blaue. Müsste natürlich von der internen Datenbank und *.odb auf Deine Variante umgesetzt werden. Prinzipiell gibt es aber die Möglichkeit, die Verbindung zu schließen

Code: Alles auswählen

oDatenquelle = ThisComponent.Parent.CurrentController
oVerbindung = oDatenquelle.ActiveConnection()
oVerbindung.close()
If NOT (oDatenquelle.isConnected()) THEN
   oDatenquelle.connect()
END IF
Bei mir lässt sich in Base direkt die Verbindung schließen und mit einer neuen Kontaktsuche wieder öffnen.

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Writer-Formular Datenbankverbindung wechseln

Beitrag von F3K Total »

Hallo Robert,
ich war eine Woche nicht zuhause, daher antworte ich erst jetzt.
Deine Methode kannte ich, die funktioniert in einer .odb Datei, ich suchte eine Lösung für ein Writer Formular und habe sie inzwischen gefunden:

Code: Alles auswählen

oform =  thiscomponent.drawpage.forms.MainForm
Verbindung = oform.activeconnection
odatasource = Verbindung.parent

ssql = "ALTER USER12 SET PASSWORD 'meinPasswort'"
SQL_Statement.executeupdate(ssql)

ssql = "GRANT USERROLE TO USER12"
SQL_Statement.executeupdate(ssql)

ssql = "REVOKE DBA FROM USER12"
SQL_Statement.executeupdate(ssql)

Verbindung.close

Verbindung = oDataSource.getConnection ("USER12", "meinPasswort")
oform.activeconnection = Verbindung '... und hier wird die Verbindung wieder hergestellt
Vielen Dank,
beste Grüße von Rik
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Writer-Formular Datenbankverbindung wechseln

Beitrag von F3K Total »

Hallo zusammen,
Kommando zurück!
Zwar kann ich mit dem o.a. Befehl die Verbindung meines Hauptformulares zur DB wieder herstellen, aber ich habe Probleme mit dem Subformular.
Es ist über zwei Parameter (Foreign Keys) an das Hauptformular gebunden.
Trotz "movetoinsertrow" kommt eine Fehlermeldung beim Eingeben eines neuen Datensatzes "Attempt to insert null into a non nullable column".
Ich habe herausgefunden, dass die Parameter nicht zur Verfügung stehen, MRI zeigt 0.
Trotz "subform.load"
Wie schaffe ich es, das nicht nur das Hauptformular, sondern auch das Unterformular nach dem Schliessen und erneutem Öffnen der Verbindung zur Datenbank korrekt verknüpft geladen wird?
Hat da jemand einen Tipp für mich?

Beste Grüße von Rik
Antworten