Bezug auf vorherigen Datensatz

Hallo,

wie ist es in Access möglich sich auf einen vorherigen Datensatz zu beziehen? Also angenommen ich will eine Fahrtenbuch-Datenbank erstellen und in einem Formular soll eine Person immer den Endkilometerstand der eigenen Reise eintragen. Beim Anfangskilometerstand soll sich der Datensatz den Endkilometerstand des davor liegenden Datensatzes holen, also so, dass es bei falscher Eingabe keine Überschneidungen des Kilometerstandes gibt. Wie ist so etwas machbar?

MfG

Moin, Bert,

Du musst dem Access sagen, wie es den Vorgänger finden soll.

Schreib beim Ereignis „Endstand_Change“ eine Sub, die sich den passenden Datensatz besorgt und das Feld „Anfangsstand“ versorgt. Der Anfangsstand sollte nur dann eingabefähig sein, wenn kein Vorgänger existiert.

Gruß Ralf

Hallo,

im Eingabeformular kannst du in dem „BeimAnzeigen“-Ereignis ein VBA Funktion codieren, die falls im Feld „Anfangsstand“ noch nichts drinsteht mittels einem Select-Statment der Form „Select Max(Endstand) as NeuerAnfang FROM Kilometertabelle“ das Feld versorgt.

Tschau
Peter

Du erstellst in einem Modul eine Funktion wie z. B.:

Function KM_Letzter() As Long
On Error GoTo Fehler
Dim strSQL As String
Dim rst As DAO.Recordset
strSQL = "SELECT TOP 1 tblFahrtenbuch.EndeKM FROM tblFahrtenbuch " & _
„ORDER BY tblFahrtenbuch.EndeKM DESC;“
Set rst = CurrentDb.OpenRecordset(strSQL)
KM_Letzter = rst!EndeKM
Set rst = Nothing
Exit Function

Fehler:
Set rst = Nothing
If Err = 3021 Then ’ Beim 1. Datensatz wird nichts gefunden
KM_Letzter = 0 ’ Dann wird halt 0 eingetragen
Exit Function ’ Und Tschüss
End If

MsgBox Err & " (Letzter KM): " & Err.Description ’ Anderer Fehler
End Function

In der Formulareigenschaft „Vor Aktualisierung“ schreibst Du (2. Zeile!):

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me!BeginnKM) Then Me!BeginnKM = KM_Letzter
End Sub

Dann brauchst Du nur noch den Endstand im Formular eintragen.
Es gibt noch weitere Möglichkeiten.

Gruß

Michael