Neuigkeiten:

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

Mobiles Hauptmenü

Code für Datensatzsuche in explizitem Feld

Begonnen von Neuling1, Februar 22, 2012, 20:02:07

⏪ vorheriges - nächstes ⏩

Neuling1

Guten Abend,
meine Datensätze sind bestimmte Personen. In das Formular müssen also Namen eingegeben werden. Ich möchte eine Funktion erstellen, die dem Dateneingeber ermöglicht, sich zu vergewissern, ob er diese Person schon eingegeben hat.
Ich dachte an die Befehlsschaltfläche "Datensatz suchen", kenne aber den Code nicht, der bewirkt, dass explizit im  Feld "Name" gesucht wird. Der Dateneingeber soll nicht extra in das entsprechende Feld klicken müssen, wie es der Fall ist, wenn ich mit dem Befehlsschaltfläche-Assistent eine Suchschaltfläche einrichte.
Ich hatte schon ein Nachschlagefeld für Name und Vorname überlegt, mache mir aber Sorgen, dass sich der Datensatz versehentlich verschiebt.  Also z.B. falscher Vorname zum Namen und falsche ID-Nr (Autowert, Primärschlüssel) Vorname/Name sind allerdings indiziert......
Danke
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Stapi

Hallo Neuling1

Nachschlage Felder in Tabellen sind jeden Fall zu meiden. Auf dein Formular ein ungebundenes Kombifeld in dem du " Dein Datensatz suchst"  Schau mal hier im Forum unter "Datensatz suchen"  dort findest du einige Beispiele.

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

Neuling1


Hat jemand ein Einsehen mit mir Laien?
Ich habe jetzt mehrere Stunden damit verbracht, nach Codes bezüglich der Datensatzsuche zu suchen. Ich bin nicht in der Lage, sie bei mir so umzusetzen, dass sie funktionieren, es gibt immer wieder Fehler.
Wahrscheinlich ist es allen Programmierern klar, wo was geändert werden muss, damit es klappt, ich komme nicht weiter. Jetzt habe ich eine Befehlsschaltfläche mit dem Code
Private Sub Suche_Click()
Dim strWert As String

strWert = InputBox("Geben Sie einen Namen ein.", "Name suchen", _
    , 5800, 800)
   
If strWert <> "" Then
Me.Filter = "P_Name = '" & strWert & "'"
Me.FilterOn = True
Else
'MsgBox "Keine Eingabe"
End If
End Sub

und es gibt eine Fehlermeldung, es erscheint ein Dialogfeld, indem der Tabellenname und der Feldname des Primärschlüssels angezeigt wird, mit der Aufforderung nach Parameterangabe.
Klicke ich einfach auf ok, dann verschwindet die Aufforderung und manchmal wird dann auch der gesuchte Name angezeigt. aber so kann man es ja auch nicht lassen.

Ich verstehe, dass es nervt, wenn eine Frage 1000 mal gestellt wird, aber ich komme wirklich nicht voran.
Es wäre sehr nett, wenn jemand helfen will
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

DF6GL

Hallo,

"es gibt eine Fehlermeldung"

wie lautet die?



"indem der Tabellenname und der Feldname des Primärschlüssels angezeigt wird, mit der Aufforderung nach Parameterangabe."


läßt darauf schliessen, dass es dieser Feldname im Formular irgendwo verwendet wird, es diesen aber (mit dieser Schreibweise ) nicht gibt.
--> alle Steuerelement(-namen) dahingend prüfen, ob der Eintrag in deren Steuerelementinhalten mit den Namen der Felder aus der Datenherkunft übereinstimmt.


Wie lautet die Datenherkunft des Forms? Wenn es ein Abfragename ist, wie lautet dann der SQL-String dieser Abfrage?



PS: besser Fakten posten statt irgendwelche Prosa   ;)
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

Neuling1

Hallo Franz,
ich werd verrückt, jetzt klappt es!!!!!!!!!!!!
Ich habe doch 1000 Versuche gestertet, unter anderem mit einem zusätzlichen ungebundenen Textfeld, das ich noch nicht gelöscht hatte! Jetzt hab ichs gelöscht und es klappt mit der Messagebox über die Befehlsschaltfläche!!!!!!!!Wahnsinn!!!!!!!!!!!!! Bin ich froo!!!!!!!!!!!!!!!!
1000 Dank für deine Antwort, man verzweifelt, wenn es einfach nicht voran geht!
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Stapi

Hallo Neuling 1

Wunderbar wenn wir dir helfen konnten, dann setze bitte den Beitrag auf gelöst.

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

Neuling1

es hat leider doch nicht funktioniert. Zu früh gefreut. Ich bekomme immer noch diese Fehlermeldung. Auch setzt sich der Filter nicht allein zurück, es wird nur der gefilterte Datensatz angezeigt. Wenn ich feststelle, diesen Namen gibt es nicht in der Tabelle, möchte ich ihn eingeben, führt aber, wenn ich die Schaltfäche "neuer Datensatz" anklicke, wieder dazu, dass das Dialogfeld mit der Parameteraufforderung aufblendet.
Es existiert in meinem Formular nur eine Schaltfläche mit dem Namen "Suche". Es gibt auch nur ein Feld, das "P_Name" heißt, daran kann es auch nicht liegen. Auch nur das Feld mit dem Primärschlüssel heißt "Pat_ID". Und genau danach wird in der Parameterfrage gefragt. Ich habe mal einen Print gemacht und angehängt

[Anhang gelöscht durch Administrator]
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Stapi

Guten Morgen Neuling

Vorschlag: Richte ein ungebundenes Kombifeld ein im Bezug auf deine Tabelle "Mit_den_Mitarbeiter" (wie auch immer sie heißt). Danfüge beigefügten Code unter Alt+F11 dem Feldein.

Private Sub Kombinationsfeld73_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[P_Name] = " & Str(Nz(Me![Kombinationsfeld73], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    Set rs = Nothing
End Sub

Der Vorteil du must nach verwendung des Filter, keinen Filter entfernen um dein Formular weiter nutzen zu können, und du siehst bei aufschlagen des Kombifeld ob dein Name schon vorhanden ist.

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

Neuling1

Hallo Stefan,
ganz herzlichen Dank,
Problem ist gelöst!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Heidi
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll