Eindeutiger id-Eigenschaftswert, um eine Access-databaseinstanz zu identifizieren

Ich habe einen Zugang 'Anwendung' (.adp file), wenn es öffnet, habe ich es aktualisieren eine Admin-database mit dem Benutzernamen und time offen. Wenn es schließt, aktualisiert es die Admin-database mit Benutzernamen time geschlossen – das sind sperate datasätze in der Ereignistabelle so sieht es aus

username,dbaction,time bob,open,13:00 gareth,open,13:05 bob,close,14:00 

Wenn der Benutzer, wo man die db zweimal öffnen würde, wäre es 2 offen und 2 enge Aktionen aufgezeichnet, aber keine Möglichkeit, festzustellen, welche database-session jeder der beiden engen Ereignisse gehörte.

Was ich in dieser Tabelle speichern möchte, ist eine eindeutige Kennung, um die offenen und geschlossenen Aktionen zusammen mit "jeder session" zu verknüpfen. Vorzugsweise möchte ich eine Eigenschaft ov das Anwendungsobjekt in vba verwenden, wenn etwas existiert. Ist es sogar die time, in der das db geöffnet wurde? Ich könnte meine eigene ID generieren, wenn databaseen geöffnet sind und sie in einer variables bis zum Schließen speichern, aber id lieber etwas in gebaut verwenden. Irgendwelche Ideen?

Ich mache das mit einem versteckten ungebundenen Formular, das beim Start geöffnet wird. In dieser Form setze ich den datasatz in den Tisch ein. Ich hole dann die Autonummer-ID (oder was auch immer SQL server dieses Feld anruft) dieses datasatzes und speichern in einem Text-Steuerelement. Wenn du irgendeine Entwicklung machst und du einen Fehler getroffen hast und den laufenden Code zurücksetzt, verlierst du alle globalen variables, also bevorzuge ich die Verwendung von Formularen, um diese variables zu speichern.

In den versteckten forms On Close Event habe ich dann den gleichen Rekord mit dem date / Uhrzeit verlassen. Ich benutze diese Technik für weit über ein Jahrzehnt ohne Probleme.

Sie können eine globale ' Id_session -Variable haben, die beim Start (random generierte uniqueIdentifier zum Beispiel) initiiert wurde, die Sie in einer Spalte " id_Session " Ihrer "Event" -Tabelle speichern. Wenn die database geöffnet wird, wird der datasatz in die Tabelle 'Ereignis' eingefügt und die datasatzkennung als globale Variable gespeichert. Wenn die database geschlossen ist, wird der vorhandene datasatz identifiziert (über den id_session-Wert) und in der database aktualisiert.

In der Tat verstehe ich nicht das Interesse eines eingebauten Identifikators anstelle dieser Lösung.

Es ist wahrscheinlich eine Methode, die in einer Zugriffsdatenbank läuft, wenn sie geöffnet wird. Hier können Sie eine randome Kennung generieren und in einer globalen variables speichern. Wenn Sie Ihre Log-Zeile schreiben, können Sie diese Kennung hinzufügen, damit Sie das Login und das Logout verfolgen können.

Update: Sie können den hier gezeigten Code verwenden, um eine GUID zu generieren, die so ziemlich gauranteed ist, um einzigartig zu sein, also sollte dies tun, was Sie wollen. Wenn es nicht nötig ist, zu klären, da ich die Frage nicht verstehe.

Alle diese Antworten scheinen mir zu schlau um die Hälfte zu sein.

Was ich tue, füge ein Autonummer-Feld in die Tabelle ein, in der ich diese einlogge und dann den Autonummer-Wert des Start-Event-datasatzes erfasse und ihn irgendwo in (in der Regel in einem versteckten Feld auf dem Start-Formular der App) für den deployment beim Herunterfahren aufbewahrt um das Shutdown-Ereignis mit der ID-Nummer des Start-Events zu schreiben.

ist HWND einzigartig für 2 Access-Anwendungen, die zur gleichen time auf möglicherweise auf dem gleichen PC oder 2 verschiedenen PCs geöffnet werden?