Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datensatz welcher die Bedingung nicht erfühlt darf nicht gespeichert werden.

Begonnen von smily68, Februar 18, 2013, 12:37:52

⏪ vorheriges - nächstes ⏩

smily68

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


69bruno

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
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

smily68

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.

PatrickM

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