Helfen Sie uns bitte noch HEUTE!

❤️ DANKE >><< DANKE ❤️

Vielen Dank für Ihre SPENDE.

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Aubergino
Beiträge: 25
Registriert: Di 6. Feb 2024, 20:12

Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei

Beitrag von Aubergino » Mo 4. Mär 2024, 12:40

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!

RobertG
Beiträge: 2747
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei

Beitrag von RobertG » Mo 4. Mär 2024, 16:05

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

Aubergino
Beiträge: 25
Registriert: Di 6. Feb 2024, 20:12

Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei

Beitrag von Aubergino » Mo 4. Mär 2024, 18:36

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

RobertG
Beiträge: 2747
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei

Beitrag von RobertG » Mo 4. Mär 2024, 19:20

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

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
So dürfte das eher passen.
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

Aubergino
Beiträge: 25
Registriert: Di 6. Feb 2024, 20:12

Re: Datei-Erstellungsdatum ermitteln - nicht letzte Modifikation - für Zugriffssperre über lck-Datei

Beitrag von Aubergino » Mo 4. Mär 2024, 19:49

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 ❤️

Antworten