Access VBA: Wie erkennt man, ob ein anderer Benutzer eine Tabelle aktualisiert?

Antwort

In Microsoft Access gibt es keine eingebaute, einfache Möglichkeit, direkt per VBA zu erkennen, ob ein anderer Benutzer gerade eine bestimmte Tabelle aktualisiert oder bearbeitet. Access ist eine Dateibasierte Datenbank, und Mehrbenutzerzugriffe werden über Sperrdateien (.ldb oder .laccdb) geregelt, aber nicht auf Tabellenebene, sondern auf Datensatz- oder Seitenebene. **Mögliche Ansätze:** 1. **Zeitstempel-Feld in der Tabelle:** Füge ein Feld wie `LastUpdated` (Datum/Uhrzeit) in die Tabelle ein. Bei jedem Update wird dieses Feld mit `Now()` aktualisiert. Du kannst dann regelmäßig per VBA abfragen, ob sich der Zeitstempel geändert hat. ```vba Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("SELECT LastUpdated FROM DeineTabelle") If Not rs.EOF Then If rs!LastUpdated > DeinLetzterBekannterZeitstempel Then MsgBox "Die Tabelle wurde aktualisiert." End If End If rs.Close Set rs = Nothing ``` 2. **Überwachung der .laccdb-Datei:** Die Access-Sperrdatei zeigt, ob andere Benutzer die Datenbank geöffnet haben, aber nicht, ob sie gerade eine bestimmte Tabelle bearbeiten. Du könntest aber prüfen, ob andere Benutzer verbunden sind. 3. **Eigene Protokolltabelle:** Erstelle eine Protokolltabelle, in die bei jedem Update ein Eintrag geschrieben wird (z.B. Benutzername, Zeit, Tabelle, Aktion). Diese kannst du dann auslesen. 4. **Tabellen-Sperrung abfragen:** Du kannst versuchen, einen Datensatz exklusiv zu sperren. Wenn das nicht gelingt, ist er vermutlich von einem anderen Benutzer in Bearbeitung. Das ist aber fehleranfällig und nicht für produktive Umgebungen empfohlen. **Fazit:** Eine direkte, zuverlässige Abfrage, ob ein anderer Benutzer gerade eine Tabelle aktualisiert, ist in Access nicht vorgesehen. Die beste Praxis ist meist die Verwendung eines Zeitstempels oder einer Protokolltabelle. Weitere Infos: - [Microsoft: Mehrbenutzerumgebungen in Access](https://support.microsoft.com/de-de/office/grundlegendes-zur-mehrbenutzerumgebung-in-access-2e0a27c6-5e4c-4b0b-8c7b-0b5e7b6c4c7a) - [Access-FAQ: Mehrbenutzerbetrieb](https://www.accessfaq.de/index.php?sid=49) Wenn du eine SQL-Server-Backend verwendest, gibt es dort bessere Möglichkeiten zur Überwachung von Locks und Änderungen.

KI fragen

Verwandte Fragen

Wie prüfe ich in Access VBA, ob eine spezielle Abfrage vorhanden ist?

Um in Microsoft Access per VBA zu prüfen, ob eine spezielle Abfrage (Query) existiert, kannst du die QueryDefs-Auflistung des aktuellen Datenbankobjekts verwenden. Hier ein Beispiel, wie du das m... [mehr]

Wie funktioniert der INSERT INTO ... IN ... SELECT ... FROM-SQL-Befehl in Access/VBA?

In Microsoft Access kannst du mit einer **INSERT INTO ... SELECT ... FROM ...**-Anweisung Daten aus einer Tabelle (oder Abfrage) in eine andere Tabelle einfügen. Das Grundschema sieht so aus: ``... [mehr]

Wie ermittelt man in Access VBA, mit welchen Datentypen ein Feld gefüllt ist?

Um in Microsoft Access mit VBA zu ermitteln, mit welchen Datentypen ein Feld in einer Tabelle gefüllt ist, gibt es zwei Ansätze: **1. Datentyp des Feldes in der Tabellendefinition abfragen:... [mehr]

Microsoft Access: VBA DELETE FROM mit mehreren Attributen?

In Microsoft Access VBA kannst du eine `DELETE`-Anweisung verwenden, um Datensätze aus einer Tabelle zu löschen, die mehreren Bedingungen entsprechen. Hier ist ein Beispiel, wie du dies tun... [mehr]

Wie funktioniert die SQL-Anweisung 'SELECT * INTO ... IN ... FROM ...' zur Übertragung von Daten zwischen Access-Datenbanken?

Die SQL-Anweisung ```sql SELECT * INTO [tbl TagesIstWerteBestände] IN " & strPfadExtern & " FROM [1z111 -1z101/1z102- BeständeHZV_InExterneDB]; ``` bedeutet Folgendes: -... [mehr]

Muss ein AutoFeld in der Zieltabelle bei SQL INSERT INTO in Access/VBA deklariert werden?

Nein, das **Autofeld** (in Access meist als „AutoWert“ oder „Autonumber“ bezeichnet) muss und soll beim `INSERT INTO`-Befehl **nicht** deklariert oder mit einem Wert belegt wer... [mehr]

Warum erscheint in Access bei SELECT-Abfragen im Abfrageentwurfsansicht ein Alias wie audr1: vor Feldnamen?

In Microsoft Access wird im Abfrageentwurf (Abfrageentwurfsansicht) automatisch ein Alias wie „audr1:“ vor einem Feldnamen angezeigt, wenn: 1. **Das Feld aus einer Abfrage stammt:** Wenn... [mehr]

Wie kann man in Access eine Abfrage automatisch auf eine andere Tabelle umstellen, wenn die ursprüngliche Tabelle nicht verfügbar ist?

Um in Microsoft Access eine Abfrage so zu gestalten, dass sie auf eine alternative Tabelle zugreift, falls die ursprüngliche Tabelle nicht verfügbar ist, gibt es keine eingebaute „Fall... [mehr]

Kann in Access ein Zahlenfeld mit "" (leerem String) befüllt werden?

In Microsoft Access kann ein Zahlenfeld (z. B. Felddatentyp „Zahl“ oder „Währung“) nicht mit einem leeren String („“) befüllt werden. Wenn du versuchst, e... [mehr]

Wie entferne ich einen Satzwechsel aus einem Datenfeld meiner CSV-Datei mit Access VBA?

Um einen bestimmten Satzwechsel aus einem Datenfeld in einer CSV-Datei mit Access VBA zu entfernen, kannst du den folgenden Ansatz verwenden. Hier ist ein Beispiel, wie du dies umsetzen kannst: 1. **... [mehr]