Neuigkeiten:

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

Mobiles Hauptmenü

Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!

Begonnen von Flocko, September 13, 2016, 13:39:46

⏪ vorheriges - nächstes ⏩

Flocko

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.

DF6GL

#1
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?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

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.
Gruß Klaus

Flocko

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 :)

MzKlMu

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 Then

ZitatHabe 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.

Gruß Klaus

Flocko

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

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Flocko

Wohoooo, mit dem ersten Code funktioniert es!

Vielen Dank  :)

Flocko

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 #)

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access