Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Flocko am September 13, 2016, 13:39:46

Titel: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: Flocko am September 13, 2016, 13:39:46
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.
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: DF6GL am September 13, 2016, 13:46:06
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?
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: MzKlMu am September 13, 2016, 13:50:36
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.
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: Flocko am September 13, 2016, 14:12:56
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 :)
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: MzKlMu am September 13, 2016, 14:17:27
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.

Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: Flocko am September 13, 2016, 15:17:22
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
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: DF6GL am September 13, 2016, 15:20:42
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
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: Flocko am September 13, 2016, 15:53:19
Wohoooo, mit dem ersten Code funktioniert es!

Vielen Dank  :)
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: Flocko am September 13, 2016, 16:16:01
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 #)
Titel: Re: Nach Eingabe Prüfen ob der Datensatz schon vorhanden ist...?!
Beitrag von: DF6GL am September 13, 2016, 16:17:59
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