Re: [de-users] Schließen einer Datenbankdatei aus dem Formular

2010-01-14 Diskussionsfäden Robert Großkopf
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

2010-01-13 Diskussionsfäden Robert Großkopf
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

2010-01-13 Diskussionsfäden Robert Großkopf
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

2010-01-12 Diskussionsfäden Robert Großkopf
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

2010-01-12 Diskussionsfäden Robert Großkopf
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

2010-01-12 Diskussionsfäden Robert Großkopf
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

2010-01-12 Diskussionsfäden Robert Großkopf
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

2010-01-11 Diskussionsfäden Robert Großkopf
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