Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

Re: Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

von Stephan » Mi, 08.03.2017 11:58

Danke @all, ich werde das Gesagte berücksichtigen.


Gruß
Stephan

Hinweis (falls jemand später nachliest) - das Makro muss lauten:

Code: Alles auswählen

sURL = ConvertToURL("D:\Adressverwaltung.odb")
oDocument = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Array() )
oDocView = oDocument.CurrentController.Frame.ContainerWindow
oDocView.Visible = False
oDocument.getCurrentController().connect
...
Wait(100)
oDocument.close(True)

Re: Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

von RobertG » Di, 07.03.2017 20:07

Hallo Stephan,

hier der komplette Weg, wie ich ihn gehen würde:

Code: Alles auswählen

sURL = ConvertToURL("D:\Adressverwaltung.odb")
sURL = oForm.DataSourceName
oDocument = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg() )
oDocView = oDocument.CurrentController.Frame.ContainerWindow
oDocView.Visible = False
oDocument.getCurrentController().connect
...
Wait(100)
oDocument.close(True)
Das Wait dazwischen habe ich bei meiner Geschichte mit den Berichten eingebaut, das Erstellen des Berichtes nicht klappte.

Gruß

Robert

Re: Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

von Toxitom » Di, 07.03.2017 09:42

Hey Stephan,

das Problem dürfte schon die nicht geschlossene Verbindung sein.

Mit oCon.close() schliesst Du ja nur den aktiven Datenkanal zur Datenbank - nicht aber die Verbindung zum Dokument oder - wie Robert erwähnt hat - das Dokument selbst.

Nach meinem Gefühl müsstest Du den Service "oBaseContext" entsorgen - falls es nix anders gibt zur Not über "dispose()"?

Wahrscheinlich würde ich aber vorher die Datenquelle entsorgen - also, wenn es ein "getByName" gibt, wird es meist auch ein "removebyName" oder so geben. und dan erstg den Service "killen";)

Ne Versuch wäre es wert....

Viele Grüße
Tom

Re: Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

von Stephan » Mo, 06.03.2017 20:14

RobertG hat geschrieben: Mo, 06.03.2017 17:47 Da habe ich allerdings nicht nur die Verbindung, sondern eben das ganze Dokument geschlossen:

Code: Alles auswählen

oDocument.close(True)
mmh, ich habe keinen direkten Zugriff auf das Dokument-Objekt(?)

Hinweis: ich habe die *.odb nicht direkt geöffnet, sondern mein Makrocode läuft aus einer odt-Datei heraus.



Gruß
Stephan

Re: Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

von RobertG » Mo, 06.03.2017 17:47

Hallo Stephan,

ob es da einen bestimmten LO 5.0-Bug gibt kann ich nicht sagen. Ich habe bisher auch lediglich in einem Makro einmal das Schließen einer Datenbank nach Nutzung versucht (Aufruf eines Berichtes von außerhalb der DB - Writer-Formular). Da habe ich allerdings nicht nur die Verbindung, sondern eben das ganze Dokument geschlossen:

Code: Alles auswählen

oDocument.close(True)

Gruß

Robert

Schließen einer DB-Verbindung bei LO 5.0.4 macht Probleme

von Stephan » Mo, 06.03.2017 10:49

Hallo,

Ich greife auf eine nicht angemeldete DB-Datei wie folgt zu:

Code: Alles auswählen

oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
sName = ConvertToURL("D:\Adressverwaltung.odb")
oDataSource = oBaseContext.getByName(sName)
oCon = oDataSource.getConnection("", "")

oStatement = oCon.createStatement() 
	xe = oStatement.executeQuery("Select ""Nachname"" , ""Vorname"" , ""Firmenname""  FROM ""Person"" ORDER BY ""Nachname"" ASC")

'...

oCon.close()
hierbei scheint das oCon.close() nicht zu 'wirken', denn es wird zwar keine Fehlermeldung ausgegeben, aber im Verzeichnis der DB wird die Datei "Adressverwaltung.odb.lck" nicht gelöscht und LO lässt sich deshalb später nicht schliessen, sondern blockiert bzw. hängt sich auf.

Das Problem ist augenscheinlich versionsabhängig denn es tritt hier nur bei LO 5.0.4 auf, auch ein Neuanlegen des Benutzerverzeichnisses bringt nichts.



Ich wäre dankbar für einen Hinweis wie man dem Problem begegnen kann oder eine explizite Bestätigung das das ein bekannter Fehler der Version LO 5.0.4 ist.


Gruß
Stephan

Nach oben