Hallo
Ich habe folgende Konstellation:
In einem Formular mit Unterformular als Tabellenform kann ich durch ein Kombifeld Bücher auswählen, die ich ausleihen möchte. Ist ein Buch bereits ausgeleiht kommt eine Meldung. Nun möchte ich, dass dieser Datensatz nach der MsgBox Meldung aus der gelöscht, respektive nicht erfasst werden kann.
Mein Code ohne dies Funktion sieht wie folgt aus:
Private Sub cboCode_AfterUpdate()
Dim blnAusgeliehen
strText = "Das Buch ist bereits ausgeliehen"
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tblBuch WHERE buch_ID =" & Me.ausleih_Buch_IDF, dbOpenSnapshot)
blnAusgeliehen = rs!buch_Ausgeliehen
If blnAusgeliehen = True Then
MsgBox (strText)
End If
Set db = Nothing
End Sub
Gruss Daniel
Aber ausgeliehen ist doch ein relevanter Bestandteil des Datensatzes, der auch in der Tabelle (z.B. als Boolean) gespeichert werden sollte. Dann würde ich die Tabelle derart anzeigen, dass nur die Titel angezeigt werden, die nicht ausgeliehen sind und in einer weiteren Tabelle würde ich die Bücher informativ anzeigen, die ausgeliehen sind, aber zum Beispiel vorbestellt werden können.....
ala: Verfügbare Bücher / vorhandene aber zur Zeit nicht orderbare Bücher
Hallo
Das Formular von dem ich schreibe, ist das Erfassungsformular für das Ausleihen. Ich kann hier das Buch erfassen, dass ich ausleihen möchte. Ich möchte dabei im Kombifeld alle Bücher anzeigen, aber mit der Meldung dass das Buch ausgeleiht ist. Der Fall, dass ich ein Buch erfasse, dass ist theoretisch nicht möglich, kann aber in der Praxis vorkommen.
Der Nächste Prozessschritt ist, die ausgewählten Bücher definitive auszuleihen. Dabei schreibe ich die Bücher in eine Tabelle Ausgeliehen und stelle in der Tabelle Bücher den Flag auf ausgeliehen.
Mein Problem / Frage ist, allgemein wie kann ich verhindern das der Datensatz gespeichert wird.
Hallo Daniel,
du führst die Abfrage, ob schon ausgeliehen ist oder nicht, im AfterUpdate durch.
Zu diesem Zeitpunkt ist der Datensatz schon gespeichert.
Führ die Abfrage im BeforeUpdate aus. Und wenn das Buch schon ausgeliehen ist,
dann kannst Du das Speichern mit Cancel=true abbrechen und wenn gewollt auch die getätigten Formulareingaben zurücksetzen (Me.Undo).
Gruß
Patrick