Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, Das Problem konnte ich auf die automatische Öffnung des Formulars zum Start der Datenbank eingrenzen: ... Habe eine neue DB erstellt, mir einer Tabelle und einem Formular, Deine beiden Makros da reingeackt, das erste an Dokument öffnen der DB gebunden, das zweite an einen Knopf im Formular. Datei öffnen = Formular wird geöffnet. (.lck-Datei ist vorhanden) Knopf im Formular drücken = DB und Formular werden geschlossen (.lck-Datei ist nicht mehr vorhanden) Mit anderen Worten: Es funktioniert hier wie erwartet. OOo 3.1.1, Windows. Kannst Du eine (minimale) DB zusammenbasteln, mit der das Problem bei Dir auftritt, und mir die zukommen lassen? Ich habe natürlich noch weiter geforscht. Mittlerweile bin ich so weit, dass die Geschichte nicht einmal bei allen Formularen dieser einen Datenbank auftaucht. Da ich auch bei einem einfachen Beispiel gemerkt habe, dass es geht, hat mich doch der Ehrgeiz gepackt. Ich versuche das Problem so weit wie möglich einzugrenzen. Entweder kommt dann eine Erfolgsmeldung oder diese minimal zusammengebastelte DB. Danke für das Angebot und Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, Kommt zu dem gleichen Ergebnis wie ich es bereits erzielt habe. Jetzt keine Fehlermeldung, aber nach dem Speicherbefehl hatte ich die ja inzwischen auch nicht mehr. OpenOffice schließt, aber die Lock-Datei bleibt weiterhin bestehen. Hmm das bedeutet, dass noch eine andere Verbindung offen ist. Ist irgendwo in Deinem Makro Code, der eine Verbindung anders als via ThisDatabaseDocument.CurrentController.connect/ActiveConnection anlegt (zum Beispiel per ThisDatabaseDocument.DataSource.getConnection( ... )), und diese Verbindung nicht korrekt aufräumt? Das Problem konnte ich auf die automatische Öffnung des Formulars zum Start der Datenbank eingrenzen: SUB Formular_Start REM Start direkt nach dem Start der Datenbank, zuerst wird die Datenbankverbindung überprüft oController = ThisDatabaseDocument.CurrentController If NOT ( oController.isConnected() ) Then oController.connect() End If REM ... dann wird auf das Startformular Artikeleingabe zur Eingabe (also schreibgeschützt, FALSE) zugegriffen oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM,Artikeleingabe,FALSE) END SUB Nehme ich den Aufruf dieser Startroutine raus und starte das Formular so, dann erscheint beim Schließen per Makro keine Lock-Datei mehr. ... dass es nicht an Base in den Grundfunktionen liegen konnt, konnte ich ja schnell mit einer leeren Datenbank mit lediglich einer Tabelle und dem Schließen per Makro nachvollziehen. Also, geöffnet wird die Datenbank beim Start - nur wird diese von mir erzeugte Verbindung nicht geschlossen, wenn ich SUB Schliessen REM Schließt OpenOffice, aber leider nicht die Lock-Datei der Datenbank oController = ThisDatabaseDocument.CurrentController oController.closeSubComponents oController.ActiveConnection.close() oDoc = ThisDatabaseDocument oDoc.store() oDoc.close(True) END SUB laufen lasse. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, Kommt zu dem gleichen Ergebnis wie ich es bereits erzielt habe. Jetzt keine Fehlermeldung, aber nach dem Speicherbefehl hatte ich die ja inzwischen auch nicht mehr. OpenOffice schließt, aber die Lock-Datei bleibt weiterhin bestehen. Hmm das bedeutet, dass noch eine andere Verbindung offen ist. Ist irgendwo in Deinem Makro Code, der eine Verbindung anders als via ThisDatabaseDocument.CurrentController.connect/ActiveConnection anlegt (zum Beispiel per ThisDatabaseDocument.DataSource.getConnection( ... )), und diese Verbindung nicht korrekt aufräumt? Ich vermute, dass es irgend etwas in der Richtung ist. Was Du unabhängig davon versuchen kannst, ist, an der ActiveConnection des Controllers das SQL-Statement SHUTDOWN auszuführen. (Ich schreib' jetzt nicht den Code dafür, da vertu' ich mich nur wieder :) - Idee ist, eine Statement anzulegen, und das SQL dort reinzustopfen). Das ist eigentlich ein schmutziger Trick, und sollte nicht angewandt werden, wenn Du nicht ganz sicher bist, dass niemand mehr eine Verbindung zu der Datenbank offen hat. Aber in Deinem Szenario sollte es sicherstellen, dass die DB korrekt heruntergefahren wurde. Habe ich gemacht. Jetzt erscheint keine Lock-Datei mehr, dafür aber leider die Dokumentenwiederherstellung bei dem größeren Datenbankdokument jedes Mal. Ein kleineres Dokument mit lediglich einer Tabelle und den entsprechenden Anweisungen funktionierte merkwürdigerweise dann reibungslos, wenn ich beim Runterfahren oDoc.close(False) eingab. Ich habe die Befürchtung, dass ich das Vorhaben des Schließens aus dem *.odb- Dokument heraus vor allem in Hinsicht auf die Datensicherheit erst einmal begraben muss. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, ThisDatabaseConnection.ActiveConnection.close() Lapidare Antwort von Basic: Objektvariable nicht belegt. Als wenn keine Verbindung da ist. Argh. Da war ich gerade frisch im Büro, ohne Kaffee ... ThisDatabaseDocument statt ThisDatabaseConnection, natürlich. Tss, Dein Finden meiner Flüchtigkeitsfehler funktionierte aber auch schon mal besser :) Nichts für ungut, aber so weit war ich im Testen auch schon: Da kommt nur Eigenschaft oder Methode nicht gefunden. Da fand ich Objektvariable nicht belegt schon viel schöner - so eine Meldung hatte ich bisher eher selten. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, ThisDatabaseConnection.ActiveConnection.close() Lapidare Antwort von Basic: Objektvariable nicht belegt. Als wenn keine Verbindung da ist. Argh. Da war ich gerade frisch im Büro, ohne Kaffee ... ThisDatabaseDocument statt ThisDatabaseConnection, natürlich. Tss, Dein Finden meiner Flüchtigkeitsfehler funktionierte aber auch schon mal besser :) Ich bin in meinen Tests jetzt noch ein Stück weiter. Bevor ich jetzt das Dokument schließen lasse, gebe ich eine Speicherungsbefehl ab: oDoc = ThisDatabaseDocument oDoc.store() oDoc.close(True) Jetzt wird das Schließen aus dem Formular raus bisher klaglos hingenommen, nur hat das Ganze weiterhin den Schönheitsfehler, dass die Lock-Datei bestehen bleibt. Dies scheint allerdings ein Standardfehler von Base her zu sein. Auch wenn ich die Datenbank normal schließe und nur noch das Auswahlfenster (was hier von einigen so wenig geliebt ist ...) offen habe, besteht weiterhin die Lock-Datei. Die verschwindet erst, wenn OpenOffice ganz geschlossen ist - und ich schließe ja nur das DatabaseDocument, obwohl damit auch das ganze andere Zeug verschwindet. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank ... Jetzt wird das Schließen aus dem Formular raus bisher klaglos hingenommen, nur hat das Ganze weiterhin den Schönheitsfehler, dass die Lock-Datei bestehen bleibt. Dies scheint allerdings ein Standardfehler von Base her zu sein. Auch wenn ich die Datenbank normal schließe und nur noch das Auswahlfenster (was hier von einigen so wenig geliebt ist ...) offen habe, besteht weiterhin die Lock-Datei. Die verschwindet erst, wenn OpenOffice ganz geschlossen ist - und ich schließe ja nur das DatabaseDocument, obwohl damit auch das ganze andere Zeug verschwindet. Scheint mir etwas in Richtung http://de.openoffice.org/issues/show_bug.cgi?id=105383 zu gehen und, wenn ich die daran anhängenden Mails richtig verstehe, vielleicht in der 3.2 nicht mehr aufzutreten. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, Nichts für ungut, aber so weit war ich im Testen auch schon: Da kommt nur Eigenschaft oder Methode nicht gefunden. Da fand ich Objektvariable nicht belegt schon viel schöner - so eine Meldung hatte ich bisher eher selten. Okay, Versuch Nummer 3 in dieser Sache: ThisDatabaseDocument.CurrentController.ActiveConnection.close(). Kommt zu dem gleichen Ergebnis wie ich es bereits erzielt habe. Jetzt keine Fehlermeldung, aber nach dem Speicherbefehl hatte ich die ja inzwischen auch nicht mehr. OpenOffice schließt, aber die Lock-Datei bleibt weiterhin bestehen. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Schließen einer Datenbankdatei aus dem Formular
Hallo Frank, ich versuche gerade für jemanden den Wunsch zu realisieren, mittels eines Buttons aus einem Formular der Datenbankdatei heraus Formular und Datei zu schließen. Das Schließen der Formulare ist mit oController = ThisDatabaseDocument.CurrentController oController.closeSubComponents kein Problem. oDoc = ThisDatabaseDocument oDoc.close(True) führt aber regelmäßig dazu, dass OpenOffice das Ganze als Absturz interpretiert Magst Du dafür einen Bug in IssueZilla schreiben? Ich muss dann einmal wieder kramen nach meinen Anmeldungsdaten ... aber werde das wohl machen. Setze ich oDoc.close(True) nach geschlossenem Formular bei der Datenbank.odb ab, so schließt sich zwar das Datenbankfenster, aber die Lock-Datei (*.lck) bleibt bestehen. Zumindest kommt aber nicht die Botschaft eines Absturzes ... Versuch' mal ThisDatabaseConnection.ActiveConnection.close() Lapidare Antwort von Basic: Objektvariable nicht belegt. Als wenn keine Verbindung da ist. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org