Seite 1 von 1

Makro per Makro beenden

Verfasst: Mi, 18.04.2012 13:35
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!

Re: Makro per Makro beenden

Verfasst: Mi, 18.04.2012 14:39
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!

Re: Makro per Makro beenden

Verfasst: Mi, 18.04.2012 14:43
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...

Re: Makro per Makro beenden

Verfasst: Mi, 18.04.2012 14:57
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.

Re: Makro per Makro beenden

Verfasst: Mi, 18.04.2012 15:04
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.

Re: Makro per Makro beenden

Verfasst: Mi, 18.04.2012 18:42
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