Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: KonradR am Dezember 23, 2023, 09:31:41

Titel: Anlegen eines Datensatzes unter bestimmten Bedingungen verhindern
Beitrag von: KonradR am Dezember 23, 2023, 09:31:41
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?
Titel: Re: Anlegen eines Datensatzes unter bestimmten Bedingungen verhindern
Beitrag von: PhilS am Dezember 23, 2023, 09:41:32
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.
Titel: Re: Anlegen eines Datensatzes unter bestimmten Bedingungen verhindern
Beitrag von: KonradR am Dezember 23, 2023, 11:59:32
Hallo PhilS,

Danke, dass war sehr hilfreich und funktioniert super.