stefankittel
Goto Top

MS Access und zusätzlichen Autowert

Hallo,

vieleicht ja Jemand eine tolle Idee dazu.

Ich erstelle gerade eine kleine Access-Datenbank in der Dokumente verwaltet werden sollen.
Es ist kein fester Auftrag sondern eine dynamisches Testen was vom Ablauf funktioniert weil der Bedarf nicht klar ist.

Also eine Tabelle mit verschiedenen Werten.
Nun soll jeder Datensatz eine laufende Nummer bekommen.

Den normalen Autowert kann ich aber nicht verwenden.
- es darf keine Lücken geben (diese gibt es z.B. wenn die Erstellung eines Datensatzes abgebrochen wird)
- es wird Sprünge zum Jahreswechsel geben (könnte man mit VBA hinfummeln, nicht schön)

Ich probiere gerade mit den Events des Forms.
Es ist eine Tabellenansicht wo man auch Datensätze unten einfach anfügen kann.

Bei Form_BeforeInsert erscheint meine gewünschte ID erst beim speichern des Datensatzes.
Eigentlich prima.
Aber1: Man muss mit dem Cursor zwei nach unten drücken um zum neuen Datensatz zu kommen. Das iritiert
Aber2: Wenn man einmal nach unten drückt und dann ESC ist diese Nummer wieder leer. Er hat dann den Datensatz gespeichert aber die Änderung der Nummer verworfen

Bei Form_BeforeInsert erscheint die gewünschte ID schon beim erstellen.
Aber da ist sie noch nicht gespeichert.
Wenn man an 2 PCs gleichzeitig einen Datensatz erstellt, wird die selbe Nummer verwendet.
Einer bekommt beim Speichern dann eine Fehlermeldung.

Private Sub Form_BeforeInsert(Cancel As Integer)
    Me.InternalID = DMax("[InternalID]", "Tab_Document") + 1  
End Sub

Ich könnte das hinzufügen zur Tabellenansicht einfach verbieten und einen Button "Neu" machen.
Aber wenn man 50-60 Datensätze hinzufügen möchte, ist das schon nerviger als rein Cursor nach Unten.

Jemand eine bessere ID?
Ich würde gerne in der Tabelle für den Standardwert schon eine Funktion verwenden.
Aber das kann Access nicht. Man kann über VBA den Standardwert fest eintragen, aber ist ja nicht dasselbe.

Stefan

Content-Key: 3283593869

Url: https://administrator.de/contentid/3283593869

Printed on: April 25, 2024 at 07:04 o'clock

Member: StefanKittel
Solution StefanKittel Jul 08, 2022 at 00:21:11 (UTC)
Goto Top
Hallo,

wie immer muss man es nur Jemanden erzählen und schon kommt man auf die Lösung.
um diese Zeit seid Ihr das halt face-smile

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If (Me.InternalID = 0) Then
        Me.InternalID = DMax("[InternalID]", "Tab_Document") + 1  
    End If
End Sub