evolution
Goto Top

Access 2013 - Nach Auswahl von Dropdown prüfen on Datensatz bereits existiert

Hallo,

ich hab mal eine Frage. Ich habe eine Eingabemaske in Access. Hier gibt es unter anderem 2 Auswahlfelder (Dropdown).
1. DD = Name (Name der Person ID)
2. DD = Test (Name der LK, die geschrieben wurde ID)

Jetzt würde gerne bei Auswahl automatisch prüfen, ob es bereits einen Datensatz in der Tabelle hierfür gibt. Man wählt den Namen und dann den Test. Dann soll die Prüfung erfolgen und ggfls. einen Meldung erfolgen.
Die Meldung sollte nach Möglichkeit keine Message-Box sein, da man die ja immer wegdrücken muss. Hatte mir vorgestellt, dass man ein Textfeld irgendwo daneben einblendet.. Wenn das geht.

Kann mir hier jemand helfen oder einen Ansatz geben. Vielen Dank im Voraus.

Content-ID: 253890

Url: https://administrator.de/contentid/253890

Ausgedruckt am: 08.11.2024 um 21:11 Uhr

colinardo
colinardo 05.11.2014 aktualisiert um 11:34:15 Uhr
Goto Top
Hi,
die DCount()-Funktion kannst du dafür verwenden.Hatten wir hier schon mal:
MS Office Access, prüfen ob wert in einer anderen tabelle vorhanden

Grüße Uwe
evolution
evolution 05.11.2014 um 13:19:29 Uhr
Goto Top
Ok.. jetzt hab ich den richtigen Thread..

Ich hab es jetzt als Ereignis (bei Focusverlust - da ich nicht wusste was nach Auswahl ist) gemacht und bekomme eine Fehlermeldung:
Laufzeitfehler 2158
Sie können auf die Eigenschaften einer Methode oder eines Steuerelements nur verweisen, wenn das Steuerelement den Focus hat.
Damit kann ich leider absolut nichts anfangen..

Private Sub Test_LostFocus()
'If DCount("*", "Datenbank", "test_id" & Me.Test.Text & "' AND lks_id'" & Me.Kunde.Text & "'") > 0 Then  
    If DCount("*", "sys_lks_noten", "[test_id] = '" & Me.Test.Text & "' AND [lks_kunden_id] = '" & Me.Kunde.Text & "'") > 0 Then  
       MsgBox "Schon vergeben"  
    Else
       MsgBox "Gibt es noch nicht"  
       'Cmd.RunSQL "INSERT INTO sys_lks_noten ( kunden_id, test_id, punkte, max_punkte, datum ) SELECT [Formulare]![lks_erfassen]![ID] AS Ausdr1, [Formulare]![lks_erfassen]![Test] AS Ausdr2, [Formulare]![lks_erfassen]![Punkte] AS Ausdr3, [Formulare]![lks_erfassen]![erreichbare_punkte] AS Ausdr4, [Formulare]![lks_erfassen]![Datum] AS Ausdr5;"  
    End If
End Sub
colinardo
Lösung colinardo 05.11.2014 aktualisiert um 14:58:09 Uhr
Goto Top
melde mich gleich nochmal, hier ist das Internet tot .... Die Bauarbeiter auf der Strasse haben ganze Arbeit geleistet, na prima Kabel durch face-sad
Für heut ist Feierabend ...

Verwende statt der .Text Eigenschaft die .Value Eigenschaft der Dropdown-Felder und das _Change Event der Dropdownfelder.
evolution
evolution 05.11.2014 um 14:13:20 Uhr
Goto Top
Dann bekomme ich den Fehler 3464. Datentypenkonflikt in Kriterienausdruck

If DCount("*", "sys_lks_noten", "[test_id] = '" & Me.Test.Value & "' AND [kunden_id] = '" & Me.Kunde.Value & "'") > 0 Then
colinardo
colinardo 05.11.2014 aktualisiert um 14:29:38 Uhr
Goto Top
Du musst ja auch die Datentypen der Dropdowns (gebundene Spalte) und der Spalten in deiner Tabelle prüfen. Diese müssen übereinstimmen. D.h. wenn du auf eine Zahl prüfst darfst du im Kriterienausdruck keine Hochkommata verwenden, da diese Text kennzeichnen.

Ich lade die später mal eine DemoDB hoch, bin jetzt leider nur noch via langsamer GSM-Verbindung online.

Also bis später, wenn die das Kabel heute noch geflickt bekommen face-wink
evolution
evolution 05.11.2014 aktualisiert um 14:44:38 Uhr
Goto Top
Super.. Vielen Dank!
jetzt geht es auch, wenn ich die Hochkomma lösche.

Allerdings ist das nur meine halbe Frage.. In dieser Version bekomme ich ha eine MsgBox angezeigt, die ich wegklicken muss..
Ich hätte gerne neben dem Feld nur einen Hinweis. Also quasi ein Textfeld, das immer eingeblendet wird, ohne dass der Nutzer was was bestätigen soll.
Es ist ja nur ein Check, ob schon vorhanden.. Danach muss man ja noch Punkte, und anderer Felder eingeben und dann erst speichern..
colinardo
Lösung colinardo 05.11.2014 aktualisiert um 14:57:52 Uhr
Goto Top
Kein Problem, du legst dir z.B. ein zusätzliches Textfeld mit dem Namen txtMeldung an. Dann machst du folgendes um den Text in dem Textfeld zu setzen:
Me.txtMeldung.Value = "Es wurde kein Eintrag gefunden ..."  
feddich. Der Phantasie sind da keine Grenzen gesetzt :-.)
colinardo
colinardo 05.11.2014 um 14:55:26 Uhr
Goto Top
evolution
evolution 05.11.2014 um 14:57:28 Uhr
Goto Top
Super.. Genau das war es was ich gesucht habe.. Vielen Dank!!!