Daten visuell erfassen in 1:n- und 1:1- Beziehungen

Zahlungseingänge automatisch erfassen

Alles, was Sie dazu brauchen, ist ein Formular, in dem die Aufträge tabellarisch oder als Einzelformular angezeigt werden. Hier müssen Sie ein Kombinationslistenfeld für die Auswahl des Wertes für das Feld Status einfügen, in dem die Werte aus der Tabelle tabStatus angezeigt werden. Damit nun auch ein Zahlungseingang erfasst wird, wenn der Benutzer den Status des Auftrags ändert, müssen Sie eine Ereignisprozedur für das Change-Ereignis (Bei Änderung) des Kombinationslistenfeldes erstellen (Listing 1).

Private Sub Status_Change()
Dim strSQL As String
strSQL = ""
'Wenn Auftrag schon in tabZahlungen vorhanden ist, löschen
strSQL = ""
If Me.Status.Text = "bezahlt" Then
'Zahlungseingang in der Tabelle tabZahlungen erfassen
If Me.Auftragsart.Value = 2 Then 'Gutschrift
strSQL = "DELETE FROM tabZahlungen WHERE Auftrag=" & Me.ID.Value
Application.CurrentDb.Execute strSQL
strSQL = "INSERT INTO tabZahlungen (Betrag,Referenz,Auftrag) " & _
"VALUES(" & getWert(Me.Auftragswert.Value * (-1)) & ",""Auftrag " &
_
Me.ID.Value & """," & Me.ID.Value & ");"
ElseIf Me.Auftragsart.Value = 1 Then 'Rechnung
strSQL = "DELETE FROM tabZahlungen WHERE Auftrag=" & Me.ID.Value
Application.CurrentDb.Execute strSQL
strSQL = "INSERT INTO tabZahlungen (Betrag,Referenz,Auftrag) " & _
"VALUES(" & getWert(Me.Auftragswert.Value) & ",""Auftrag " & _
Me.ID.Value & """," & Me.ID.Value & ");"
End If
ElseIf Me.Status.Text = "offen" Then
'eventuell vorhandene Datensätze löschen
strSQL = "DELETE FROM tabZahlungen WHERE Auftrag=" & Me.ID.Value
End If
'SQL-Anweisung ausführen
If strSQL > "" Then
Application.CurrentDb.Execute strSQL
End If
End Sub

Sie müssen dazu im Prinzip nichts weiter machen, als eine entsprechende SQL-Anweisung zu formulieren und auszuführen. Zunächst sollten Sie eventuell vorhandene Datensätze löschen. Haben Sie nämlich versehentlich den Status bezahlt gewählt, müssen Sie das ja auch wieder rückgängig machen können, indem ein anderer Wert für das Feld Status ausgewählt wird.