Hallo
Ich bin am Ueberlegen wie ich folgendes Problem lösen kann:
Ich schreibe ein Bibliothek Programm. Im Formular für das Erfassen von Büchern die ausgelehnt werden, mache ich eine Prüfung, ob das entsprechende Buch nicht schon ausgelehnt ist. Wenn ja kommt eine Meldung, danach möchte ich diesen Datensatz löschen. Das Formular besteht aus einem Hauptformular wo der Ausleiher und das Datum erfasst wird. In einem Unterformular werden die Bücher erfasst. Beim Auswahlfeld für die Bücher habe ich folgenden Code hinterlegt:
Private Sub PruefungAusgelehnt()
'Ueberprüft ob das Buch ausgelehnt ist
Dim blnAusgeliehen
strText = "Das Buch ist bereits ausgeliehen"
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tblBuch WHERE buch_ID =" & Me.ausleihPos_Buch_IDF, dbOpenSnapshot)
blnAusgeliehen = rs!buch_Ausgeliehen
If blnAusgeliehen = True Then
MsgBox (strText)
db.Execute ("Delete * FROM tblAusleihSelect WHERE ausleih_ID = " & Me!ausleihPos_Buch_IDF)
Me.Refresh
End If
Set db = Nothing
End Sub
Leider bleibt mit diesem Code der Datensatz bestehen. Ich möchte eigentlich das ein Buch das ausgelehnt ist nicht erfasst werden oder gespeichert werden kann. Wer kann mir helfen?
Gruss Daniel
Hi,
mit dem Ereignis "Vor Aktualisierung" kommst Du mit weniger Aufwand an Dein Ziel, da Du dort Deine Abfrage vor dem Speichern machen kannst.
Wenn die erfüllt ist, kannst Du mit cancel + Me.Undo die Eingaben rückgängig machen.
Harald
PS
Am besten im Ereignis "vor Aktualisierung" vom Steuerelementes den Test durchführen, dann ersparst Du Dir ggf. auch die Eingaben von weiteren Infos.
Hallo,
noch besser wäre, ausgeliehene Bücher gleich gar nicht zur Auswahl (z. B. mit/in einem Kombifeld) zu stellen...
Danke, das war sehr aufschlussreich. Diesen Befehl Me.Undo kannt ich noch nicht. Ich werde auch in Auswahlliste alle Bücher, die ausgeliehen sind rausfiltern.
Gruss Daniel