Hallo,
wenn doppelte Einträge schon existieren, wird die Index-Methode nicht ohne Weiteres funktionieren.
ich würde gerne meinen DS auf doppelte Eingaben prüfen.
Mein Code dafür:
Private Sub Charge_AfterUpdate()
Dim strKrit As String
strKrit = „[FA-Nr]=’“ & Me![FA-Nr] & „’ " & _
„AND [Charge]=’“ & Me![Charge] & „’ "
If DCount(“*“, „tbl_FA_daten“, strKrit) > 0 Then
Select Case MsgBox(„FA schon vorhanden“)
End Select
Me.Undo
[FA-Nr].SetFocus
End If
End Sub
Wenn es sich um Textfelder in der Tabelle handelt funktioniert
es, aber das Steuerelement ist als Zahl deklariert.
Was muß ich denn ändern, damit Steuerelemente mit Zahleninhalt
geprüft werden? Ich verwende Access 2000.
Das ist eine falsche Vorstellung der Datentypen:
Nur Felder (von VBA-Variablen/Funktionen jetzt mal abgesehen) in Tabellen können verschiedene Datentypen haben. Formular-Textfelder sind immer vom Typ Variant.
Insofern muß die Frage nach den Datentypen der Tabellenfelder gestellt werden.
Sind beide Tabellenfelder von Datentyp Zahl, Long, muß es so lauten (Hochkommata entfallen und für Sicherheit nz() verwenden):
–Select Case ist unnütz/sinnlos
–Bei Form-Steuerelementen „ME“ als Referenz auf das akt. Form(objekt) benutzen
–Besser Charge_BeforeUpdate einsetzen
– Auf Sonder - und Leerzeichen in (Objekt)Namen verzichten
Private Sub Charge_BeforeUpdate(Cancel as Integer)
Dim strKrit As String
strKrit = „[FA_Nr]=“ & nz(Me![FA_Nr],0) & _
" AND [Charge]=" & nz(Me![Charge],0)
If DCount("*", „tbl_FA_daten“, strKrit) > 0 Then
MsgBox „FA schon vorhanden“
Me.Undo
Cancel=true
Me![FA_Nr].SetFocus
End If
End Sub
Viele Grüße vom Bodensee
Franz, DF6GL