Guten Tag,
durch Abfrage, ob eine .lck-Datei vorhanden ist und älter als 15sek, wollte ich feststellen, ob schon ein anderer User in der auf einem NAS gespeicherten (eingebetteten) Datenbank arbeitet. Dafür frage ich die FileDateTime der .lck-Datei ab.
Das scheitert aber daran, dass ein zweiter User der durch den ersten User erzeugten .lck-Datei eine Modifikation verpasst UND die Funktion FileDateTime nicht das Erstellungsdatum, sondern das der letzten Modifikation abfragt - daher sieht es dann beim Zeitvergleich mit now - 15 sec. so aus, als sei die Datei ganz neu und also erst vom zweiten User selbst erzeugt worden.
Gibt es denn eine Möglichkeit, tatsächlich das Erzeugungsdatum statt des letzten Modifikationsdatums einer Datei abzufragen?
Danke für einen heißen Tipp!
BITTE helfen Sie uns das LibreOffice Forum zu erhalten!
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
Herzlichen Dank an Alle, die bisher gespendet haben! Spenden heute: 0 Euro
>DANK IHRER SPENDEN -> KEINE WERBUNG FÜR REGISTRIERTE LIBREOFFICE-FORUM-USER!<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei
Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei
Du wirst das Erstellungsdatum einer *.lck-Datei nicht heraus bekommen, wenn es modifiziert wurde. So etwas wird nicht zusammen mit der *.lck-Datei gespeichert.
Du modifizierst diese Datei ja vermutlich, weil Du erneut die *.odb-Datei starten lässt, oder? Ich würde da so vorgehen, dass ich vor dem Start der *.odb-Datei nachschaue, ob die .lck-Datei existiert.
Du modifizierst diese Datei ja vermutlich, weil Du erneut die *.odb-Datei starten lässt, oder? Ich würde da so vorgehen, dass ich vor dem Start der *.odb-Datei nachschaue, ob die .lck-Datei existiert.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei
Hallo Robert, danke für die schnelle Antwort.
Ich hätte gedacht, dass das Erstellungsdatum erhalten bleibt, weil ich es ja z.B. im Windows-Explorer in den Datei-Eigenschaften noch angezeigt bekomme. Aber das nützt mir ja nichts, wenn es keine Funktion gibt, die das abfragt, also mache ich es natürlich besser so, wie Du es vorschlägst.
Das hatte ich eigentlich auch vorgehabt, aber wohl noch nicht die richtige Stelle gefunden für den Aufruf.
Der ist als Aktion zugewiesen unter :"Extras" - "Anpassen" - "Ereignisse" - "Dokument öffnen".
Wo müsste er denn zugewiesen werden, damit er noch vor der .lck-Erzeugung abläuft?
So sieht er aus:
---------------------------------
Sub OnOpenDocument()
Dim oController AS OBJECT
Dim oDoc AS OBJECT
Dim sUrl_Start AS STRING
oController = ThisDatabaseDocument.CurrentController
If not (oController.isConnected()) Then oController.connect() ' Connect to the database, if necessary
oDoc = ThisComponent
sUrl_Start = oDoc.URL
if FileDateTime(sUrl_Start & ".lck")<dateadd("s",-15,now()) Then
Msgbox("Datei bereits an anderem Arbeitplatz geöffnet")
Exit Sub
End if
Datenbankbackup(6)
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, "frmObjekte", FALSE) ' Parameters: ObjectType, Parameter ObjectName, ForEditing
End Sub
---------------------------------
Ich hätte gedacht, dass das Erstellungsdatum erhalten bleibt, weil ich es ja z.B. im Windows-Explorer in den Datei-Eigenschaften noch angezeigt bekomme. Aber das nützt mir ja nichts, wenn es keine Funktion gibt, die das abfragt, also mache ich es natürlich besser so, wie Du es vorschlägst.
Das hatte ich eigentlich auch vorgehabt, aber wohl noch nicht die richtige Stelle gefunden für den Aufruf.
Der ist als Aktion zugewiesen unter :"Extras" - "Anpassen" - "Ereignisse" - "Dokument öffnen".
Wo müsste er denn zugewiesen werden, damit er noch vor der .lck-Erzeugung abläuft?
So sieht er aus:
---------------------------------
Sub OnOpenDocument()
Dim oController AS OBJECT
Dim oDoc AS OBJECT
Dim sUrl_Start AS STRING
oController = ThisDatabaseDocument.CurrentController
If not (oController.isConnected()) Then oController.connect() ' Connect to the database, if necessary
oDoc = ThisComponent
sUrl_Start = oDoc.URL
if FileDateTime(sUrl_Start & ".lck")<dateadd("s",-15,now()) Then
Msgbox("Datei bereits an anderem Arbeitplatz geöffnet")
Exit Sub
End if
Datenbankbackup(6)
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, "frmObjekte", FALSE) ' Parameters: ObjectType, Parameter ObjectName, ForEditing
End Sub
---------------------------------
Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei
Der Haken liegt bei Dir in dem Makro selbst. Die Lockdatei wird ohne Makros erst erzeugt, wenn auf die Tabellen zugegriffen wird, weil erst dann eine Verbindung benötigt wird.
Du erzeugst erst eine Verbindung und fragst dann nach der Lock-Datei
So dürfte das eher passen.
Du erzeugst erst eine Verbindung und fragst dann nach der Lock-Datei
Code: Alles auswählen
Sub OnOpenDocument()
Dim oController AS OBJECT
Dim oDoc AS OBJECT
Dim sUrl_Start AS STRING
oDoc = ThisComponent
sUrl_Start = oDoc.URL
if FileExits(sUrl_Start & ".lck") Then
Msgbox("Datei bereits an anderem Arbeitplatz geöffnet")
Exit Sub
End if
oController = ThisDatabaseDocument.CurrentController
If not (oController.isConnected()) Then oController.connect() ' Connect to the database, if necessary
Datenbankbackup(6)
oController.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, "frmObjekte", FALSE) ' Parameters: ObjectType, Parameter ObjectName, ForEditing
End Sub
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei
Nicht mal eine Stunde ist vergangen, und schon kommt Antwort mit der richtigen Lösung. Toll! Danke dafür.
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️