Hallo zusammen,
ich versuche gerade ein Formular zu entwerfen, welches den Nutzer bei einer Eingabe unterstützt. Auf dem Formular befinden sich Kombinationsfelder die dem Anwender Eingabemöglichkeiten aufzeigen. Sobald dann auf Speichern geklickt wird soll der Datensatz nur angelegt werden wenn noch kein gleicher Datensatz besteht...
Mein Ansatz ist folgender:
Dim strSQL As String
If DCount("*", "tblEingabe", ["Wert1 = '" & Me!Kombofeld1 & "' AND "Wert2 = '" & Me!Kombofeld2 & "'"]) > 0 Then
MsgBox ("Datensatz schon vorhanden!")
Cancel = True
Else
strSQL = "INSERT INTO....
End If
End Sub
Damit erhalte ich den Fehler:
Laufzeitfehler 2465: MS Access kann das in Ihrem Ausdruck angesprochene Feld 'I1' nicht finden.
Das Feld wurde aber gar nicht angesprochen.
Hallo,
If DCount("*", "tblEingabe", "Wert1 = '" & Me!Kombofeld1 & "' AND Wert2 = '" & Me!Kombofeld2 & "'") > 0 Then
vorausgesetzt, dass "Wert1" und "Wert2" Tabellenfelder mit Datentyp TEXT sind und in Spalte 0 der Kombifeldliste der Vergleichswert steht.
PS: warum benutzt Du nicht ein gebundenes Formular und verzichtest damit auf das Insert-Statement?
Hallo,
was ist der Datentyp der Felder Wert1 und Wert2 ?
PS:
Zahlen bei Felder (Wert1, Wert2 lassen oftmals einfalsches Datenmodell vermuten. Was steht denn in diesen Werten ?
Warum bindest Du das Formular nicht an die Tabelle, dann braucht es keine Insert.
Die Kontrolle ob vorhanden kann trotzdem erfolgen. Gebundene Formulare sind einfacher in der Handhabung.
Weiterhin kann man einen zusammengesetzten Index verwenden der automatisch Doppelungen verhindert.
Danke schonmal für die Hilfe.
Also im Kombofeld2 steht ein Datum, Kombofeld1 ist ein Text.
Daher funktioniert der Lösungsvorschlag auch nicht,...gibt es noch eine andere Möglichkeit wie es mit meinem Ansatz klappt?
Habe in letzter Zeit nur noch mit Insert gearbeitet, hat meiner Meinung nach auch einige Vorteile :)
Hallo,
das Datum ist eine Zahl. Versuche es so )mit den Anpassungen von Franz.
If DCount("*", "tblEingabe", "Wert1 = '" & Me!Kombofeld1 & "' AND Wert2 = " & Me!Kombofeld2 ) > 0 ThenZitatHabe in letzter Zeit nur noch mit Insert gearbeitet, hat meiner Meinung nach auch einige Vorteile
welche ?
Meiner Meinung nach gibt es keine Vorteile für ungebunden Formulare. Alles was Du dann programmieren musst, kann Access serienmäßig auch und das auch noch besser.
Funktioniert leider nicht, ich dneke das liegt an dem Datumsformat dd.mm.yyyy :-\
Mir kommt es teilweise individuell anpassbarer vor aber vllt habe ich die gebundenen auch nicht ganz kapiert ;D
Hallo,
also, wenn Wert2 ein Datum ist, dann wohl so:
If DCount("*", "tblEingabe", "Wert1 = '" & Me!Kombofeld1 & "' AND Wert2 = " & Format(Cdate(Me!Kombofeld2),"\#yyyy-mm-dd\#") ) > 0 Then
"Cdate" ist evtl. überflüssig.
auch:
If DCount("*", "tblEingabe", "Wert1 = '" & Me!Kombofeld1 & "' AND Int(Wert2) = " & Int(Cdate(Me!Kombofeld2)) ) > 0 Then
Wohoooo, mit dem ersten Code funktioniert es!
Vielen Dank :)
Ich habe in einem Fall ein Datum mehr, dachte mit ner kleinen Abänderung haut das dann auch hin aber da stimmt doch was nicht... :'(
If DCount("*", "tblEingabe", "Wert1 = '" & Me!Kombofeld1 & "' AND Wert2 = " & Format(Cdate(Me!Kombofeld2),"\#yyyy-mm-dd\#") AND Wert3 = " & Format(Cdate(Me!Kombofeld3),"\#yyyy-mm-dd\#")) > 0 Then
--> Fehler beim kompilieren. (Bei #)
Hi,
If DCount("*", "tblEingabe", "Wert1 = '" & Me!Kombofeld1 & "' AND Wert2 = " & Format(Cdate(Me!Kombofeld2),"\#yyyy-mm-dd\#") & " AND Wert3 = " & Format(Cdate(Me!Kombofeld3),"\#yyyy-mm-dd\#")) > 0 Then