Heute mußte ich feststellen, daß der Befehl "DoCmd.Save" in Microsoft Access 2003 nicht, wie erwartet, funktioniert. Ich habe ihn in einem Formular in Verwendung, dort wird, wenn der Anwender das Jahr auswählt, aus dem Jahr und einer fortlaufenden Nummer die sogenannte "Seriennummer" des Dokumentes generiert, in das Feld Seriennummer im Formular eingesetzt und dann das Formular gesichert, damit der nächste Benutzer, der ein neues Dokument anlegt, eine neue Seriennummer generiert:
' Generate next Serial Number
Dim strNextSerialNumber
strNextSerialNumber = _
Mid(sqlDocuments!maxSerialNumber, 6)
strNextSerialNumber = strNextSerialNumber + 1
If IsNull(strNextSerialNumber) Then
' Enter first Number
strNextSerialNumber = "000001"
Else
' Enter generated Number
strNextSerialNumber = Left("000000", 6 - _
Len(strNextSerialNumber)) & strNextSerialNumber
End If
Me.docSerialNumber = _
Me.docYear & "_" & strNextSerialNumber
' Save Immediately
DoCmd.Save
So war es gedacht, doch kam es immer wieder vor, daß zwei Dokumente die gleiche Seriennummer bekommen sollten, was natürlich durch den Constraint in der Datenbank verhindert wird.
Nach einigem Rumprobieren, kam ich auf den Befehl
DoCmd.RunCommand acCmdSaveRecord
der genau das tut, was "DoCmd.Save" eigentlich tun sollte, nämlich die Daten aus dem Formular sofort in die Datenbank zurückschreiben.
Heute mußte ich feststellen, daß der Befehl “DoCmd.Save” in Microsoft Access 2003 nicht, wie erwartet, funktioniert. Ich habe ihn in einem Formular in Verwendung, dort wird, wenn der Anwender das Jahr auswählt, aus dem Jahr und einer fortlaufenden Nummer die sogenannte “Seriennummer” des Dokumentes generiert, in das Feld Seriennummer im Formular eingesetzt und dann das Formular gesichert, damit der nächste Benutzer, der ein neues Dokument anlegt, eine neue Seriennummer generiert:
‘ Generate next Serial Number
Dim strNextSerialNumber
strNextSerialNumber = _
Mid(sqlDocuments!maxSerialNumber, 6)
strNextSerialNumber = strNextSerialNumber + 1
If IsNull(strNextSerialNumber) Then
‘ Enter first Number
strNextSerialNumber = “000001″
Else
‘ Enter generated Number
strNextSerialNumber = Left(“000000″, 6 – _
Len(strNextSerialNumber)) & strNextSerialNumber
End If
Me.docSerialNumber = _
Me.docYear & “_” & strNextSerialNumber
‘ Save Immediately
DoCmd.Save
So war es gedacht, doch kam es immer wieder vor, daß zwei Dokumente die gleiche Seriennummer bekommen sollten, was natürlich durch den Constraint in der Datenbank verhindert wird.
Nach einigem Rumprobieren, kam ich auf den Befehl
DoCmd.RunCommand acCmdSaveRecord
der genau das tut, was “DoCmd.Save” eigentlich tun sollte, nämlich die Daten aus dem Formular sofort in die Datenbank zurückschreiben.
Artikel, die Sie auch interessieren könnten:
coded by nessus