Makro per Makro beenden

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

desmond
*
Beiträge: 16
Registriert: Mo, 05.09.2011 10:14

Makro per Makro beenden

Beitrag von desmond »

Hallo,

habe ein Makro erzeugt, das bei Start der ODB automatisch ein Formular aufruft. Das soll auch gern so bleiben. Das Problem dabei ist, dass mit dem Beenden der ODB die Lock-Datei erhalten bleibt und die ODB somit nicht "vollständig" beendet ist. Kopieren/ Verschieben/ Umbennen etc. ist dadurch nicht möglich. Ist das Makro nicht aktiviert, bleibt die Lock auch nicht erhalten...

Gibt es eine Möglichkeit per Makro das Aufrufen-Makro zu beenden und damit auch das Schließen der Lock-Datei zu ermöglichen? Anbei mal das Aufrufen-Makro:

Code: Alles auswählen

REM  *****  BASIC  *****

sub open_form

DIM DatabaseContext AS OBJECT
DIM Datenquelle AS OBJECT
DIM Verbindung AS OBJECT
Dim oParms(1) As New com.sun.star.beans.PropertyValue

oCon = ThisDatabaseDocument.CurrentController
If NOT ( oCon.isConnected() ) Then oCon.connect()

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatabaseContext.getByName(ThisDatabaseDocument.getLocation())
Verbindung = Datenquelle.GetConnection("","")

oDoc = ThisComponent.getformdocuments.getbyname("Startseite")
if not isnull (oDoc.getComponent) then
odoc.open
else
oDocname=oDoc.name
oParms(0).name="OpenMode"
oParms(0).value="open"
oParms(1).name="ActiveConnection"
oParms(1).value=Verbindung
oFormDocs=ThisComponent.FormDocuments
oFormDocs.loadComponentFromURL(oDocname, "", 0, oParms())
endif
end sub
Vielen Dank!
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro per Makro beenden

Beitrag von komma4 »

desmond hat geschrieben:Gibt es eine Möglichkeit per Makro das Aufrufen-Makro zu beenden
Jetzt mal abgesehen davon, dass Makro-Fragen ins zuständigen Unterforum gehören...

Was bringt Dich zu der Annahme, dass das Makro nicht beendet ist?
Nach End Sub ist Schluss - ein Makro hat keine Kontrolle über die LOCK-Datei!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
desmond
*
Beiträge: 16
Registriert: Mo, 05.09.2011 10:14

Re: Makro per Makro beenden

Beitrag von desmond »

Ich hab es ausprobiert. Nehme ich das Makro raus und starte das Formular händisch, verschwindet beim schließen der ODB auch die lck...
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro per Makro beenden

Beitrag von komma4 »

Das Makro läuft nicht mehr.

Rufe im Formular (per Schaltfläche) ein anderes Makro auf... dann siehst Du es.
Es können nicht zwei Makros parallel laufen.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
desmond
*
Beiträge: 16
Registriert: Mo, 05.09.2011 10:14

Re: Makro per Makro beenden

Beitrag von desmond »

Ja, sicher. Da hast du natürlich recht.

Fakt ist aber, dass nach dem Schließen die .lck erhalten bleibt, wenn ich die ODB mit dem Makro geöffnet habe und die .lck nach dem Schließen verschwunden ist , wenn das Makro nicht aktiviert war... Irgendwie muss es mit diesem Makro zusammen hängen.
paradigma
***
Beiträge: 51
Registriert: Fr, 15.04.2011 10:35
Wohnort: Zürich
Kontaktdaten:

Re: Makro per Makro beenden

Beitrag von paradigma »

Hallo desmond

Ich kenne das Problem.

In deinem aufgeführten Makro erstellst du eine Datenbankverbindung.

Diese muss du explizit wieder schliessen, bevor du die Anwendug beendest. Wenn du diese nicht explizit wieder schliesst, bleibt die Datenbankdatei gelockt.

Die ganz genauen Befehl kann ich dir nicht liefern, da ich dazu mehr Informationen bräuchte.

Es handelt sich jedoch um die Befehle close und dispose

Als erstes würde ich einfach mal probieren:

oCon.close
oCon.dispose

Bin nur nicht ganz sicher, ob oCon in deinem Fall die richtige Variable ist.

Falls dich das nicht weiter bringt, wäre es am einfachsten, wenn du die Anwendung hochladen könntest. Da schaue ich es gerne mal an.

Gruss

Beni
Antworten