Doppeleingaben

Hallo,

könnt Ihr mir helfen, ich möchte Doppeleingaben bei der Eingabe verhindern, habe jetzt etwas gefunden und für mich weiterentwickelt. Es klappt aber nicht so ganz,ich bekomme immer eine Fehlermeldung in der Zeile If Not … Then,
„Syntaxfehler, es fehlt ein Operator“, was fehlt,
wie muss die Zeile richtig heissen, damit das Programm läuft? Oder bin ich ganz auf der falschen Fährte, wie kann es richtig gehen? Danke für die Hilfe

Private Sub Form_AfterUpdate()

Dim Objekt As String
Dim Ort As String
Dim Anschrift As String
Dim txt As String

Objekt = Me.Objekt
Ort = Me.Ort
Anschrift = Me.Anschrift

abc = "[Objekt] = " & Objekt & " AND " & _
"[Ort] = " & Ort & " AND " & "[Anschrift] = " & „’“ & Anschrift & „’“

If Not IsNull(DLookup(„Anschrift“, „Form_frm_Objekt52“ ,abc)) Then
MsgBox „Eintrag ist schon vorhanden, …“, vbOKOnly + vbCritical, „Fehler!“

Cancel = vbCancel
End If
End Sub

Du musst in deinem zusammengeklebten String „abc“ die darin eingefügten Strings mit Doppel-Hochkomma bzw. Einfach-Hochkomma klammern.

abc = „[Objekt] = '“ & Objekt & "’ AND " & _

BTW: Warum setzt du auf das Feld in der Datenbank nicht einen Unique-Index? Dann sorgt die DB dafür, dass keine Eintrag doppelt ist. Du musst nur den DB Fehler abfangen.

HTH
Quaser

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Je nachdem, welchen Datentyp deine Felder haben, muss es etwa so heissen:

Private Sub Form\_AfterUpdate()
If Isnull(Me!Objekt) then 
 Krit = Krit & " [Objekt] IS NULL "
else
 Krit = Krit & " [Objekt] = " & Me!Objekt 
end if
If Isnull(Me!Ort) then 
 Krit = Krit & " [Ort] IS NULL "
else
 Krit = Krit & " AND [Ort] = '" & Me!Ort & "'"
end if
'usw

If Not IsNull(DLookup("Anschrift", "Form\_frm\_Objekt52" ,Krit)) Then
 MsgBox "Eintrag ist schon vorhanden, ...", vbOKOnly + vbCritical, "Fehler!"
 Cancel = **True**
End If
End Sub

vbCancel hat an dieser Stelle nichts zu suchen (OK, es ist auch 0 …)

Daneben taucht die Frage auf, was „Form_frm_Objekt52“ sein soll. Eine Tabelle oder Abfrage? Wenn ja, dann ist das ein sehr unglücklich gewählter Name! Wenn nein, dann geht das so natürlich nicht…

Einen zusammengesetzten Schlüssel über die Felder zu legen halte ich für keine besonders gute Idee - zumal man ja in der Praxis meist weitaus laxer sucht (z.B. mit LIKE oder mit Fuzzy-Suchverfahren) und dann den Benutzer vor die Wahl stellt, ob der gefundene Hein Meier im Dolenweg mit Heinrich Meyer im Dohlenweg identisch ist…

Schau dir dazu vielleicht auch mal das Beispiel „Suchen/SQL dynamisch erstellen“ im DBWiki an.

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

vielen dank für die Antwort,
Ich habe mir die Suche sql Datenbank im Wicki angesehen, sie ist toll, ich versuche daraus Informationen für meine datenbank abzuleiten,
nach fuzzy habe ich auch gesucht, allerdings
habe ich noch keinen Weg gefunden, wie ich das für meine
DB umsetzen könnte, so möchte ich fragen, ob es nicht auch so gehen könnte und was noch fehlt, ich habe die Abfrage immer wieder verändert und es fehlt vielleicht gar nicht mehr soviel, aber was? Danke

Private Sub Form_AfterUpdate()

Dim Objekt As String
Dim Ort As String
Dim Anschrift As String
Dim abc As String

Objekt = Me.Objekt
Ort = Me.Ort
Anschrift = Me.Anschrift

abc = "[Objekt] = " & „’“ & Objekt & „’“ & " AND " & "[Ort] = " & „’“ & Ort & „’“ & " AND " & "[Anschrift] = " & „’“ & Anschrift & „’“
(ist dieser Eingabeblock falsch?)

If IsNull(Me!Objekt) Then
abc = abc & " [Objekt] IS NULL "
Else: abc = abc & " [Objekt] = ‚" & Me!Objekt & "‘"
End If
If IsNull(Me!Ort) Then
abc = abc & " [Ort] IS NULL "
Else: abc = abc & " AND [Ort] = ‚" & Me!Ort & "‘"
End If
If IsNull(Me!Anschrift) Then
abc = abc & " [Anschrift] Is Null"
Else: abc = abc & " And [Anschrift] = ‚" & Me!Anschrift & "‘"
End If

If Not IsNull(DLookup(„Anschrift“, „tbl_Objekte“, abc)) Then
MsgBox „Eintrag ist schon vorhanden, …“, vbOKOnly + vbCritical, „Fehler!“

Cancel = True
End If

End Sub

Danke für die Hilfe.

Ich hatte dir doch geschrieben, wie es geht - warum hast du das wieder verschlimmbessert!?!

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

Obacht bei ’ und Textvergleichen
Hallo, allerseits!

Krit = Krit & " AND [Ort] = ‚" & Me!Ort & "‘"

Obiges funktioniert in aller Regel. Es kommt allerdings zu Fehlern, wenn ich als Ort K’lautern oder M’gladbach eingebe.

Sämtliche Texte bei Textvergleichen sollten also so angepasst werden, dass die einfachen ’ im Text verdoppelt werden, also als Kriterienstring z. B.:

Krit="[Ort]=‚K‘‚lautern‘"

Bei Interesse suche ich den Code raus, der das macht…

Gruß, Manfred

Wem sagst du das…
… also am besten gleich:

Krit = Krit & " AND [Ort] = '" & Replace(Me!Ort,"'","''") & "'"

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

… also am besten gleich:
Krit = Krit & " AND [Ort] = ‚" & Replace(Me!Ort,"‘","’’") &
„’“

Si. Und jetzt nur noch das NULL abfangen, falls das als Kriterium auch zugelassen wird und nicht durch die umgebende Bedingung als Filterkriterium ausgeschlossen wird.

Dann sollten wir aber endgültig sicher sein.

Gruß, Manfred