Neuigkeiten:

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

Mobiles Hauptmenü

Anlegen eines Datensatzes unter bestimmten Bedingungen verhindern

Begonnen von KonradR, Dezember 23, 2023, 09:31:41

⏪ vorheriges - nächstes ⏩

KonradR

Hallo liebe Accessfreunde,

ich habe ein Formular erstellt und möchte erreichen, dass ein Datensatz nur angelegt wird, wenn bestimmte Kriterien erfüllt sind. Sind alle Kriterien erfüllt, soll der Datensatz angelegt werden. In meinem Fall soll im Kombinationsfeld cboeinkaVersiIDRef des Formulars ein Wert stehen. Ist der Wert vom Kombinationsfeld = NULL dann soll kein Datensatz angelegt werden. Leider wird immer ein neuer Datensatz angelegt. Hier mein bisheriger Code:
Private Sub cboeinkaVersiIDRef_Exit(Cancel As Integer)
'Den Cursor zwingen im Kombinationsfeld zu bleiben, bis der Inhalt <> 0 ist.
    If IsNull(Me!cboeinkaVersiIDRef) Then
        MsgBox "EXIT Der Inhalt von cboeinkaVersiIDRef ist: Null " & vbCrLf & "bitte eine Versionsbezeichnung eingeben"
        Cancel = True
        Me!cboLadenTextIDRef.Enabled = False
        Me!cboMarkeTextIDRef.Enabled = False
        Me!cboProduProNaIDRef.Enabled = False
        Me!cboProduvepckArtIDRef.Enabled = False
        Me!cboProduInhaltGewicht.Enabled = False
        Me!cboProduVerpaEinheitIDRef.Enabled = False
        Me!cboProduPreis.Enabled = False
        Me.AllowAdditions = False
    Else
        Me!cboLadenTextIDRef.Enabled = True
        Me!cboMarkeTextIDRef.Enabled = False
        Me!cboProduProNaIDRef.Enabled = False
        Me!cboProduvepckArtIDRef.Enabled = False
        Me!cboProduInhaltGewicht.Enabled = False
        Me!cboProduVerpaEinheitIDRef.Enabled = False
        Me!cboProduPreis.Enabled = False
    End If
End Sub

Habt ihr eine Idee, wie ich das bewerkstelligen kann?

PhilS

Das BeforeUpdate (Vor Aktualisierung) Ereignis des Formulars ist gut geeignet um solche Prüfungen durchzuführen.

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Me!cboeinkaVersiIDRef.Value) Then
        MsgBox "Der Inhalt von cboeinkaVersiIDRef ist: Null " & vbCrLf & "bitte eine Versionsbezeichnung eingeben"
        Cancel = True
    End If
End Sub

Wenn das ganze eine "harte" Regel ist, die niemals umgangen werden darf, würde ich zusätzlich unbedingt das Feld in der Tabelle auf Required=Yes (Eingabe Erforderlich=Ja) stellen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

KonradR

#2
Hallo PhilS,

Danke, dass war sehr hilfreich und funktioniert super.