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:
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
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.
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.