Office: (Office 2010) "Suchformular" erstellen

Helfe beim Thema "Suchformular" erstellen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich fange gerade mit einer einfachen Datenbankanwendung an, wozu ich aber einige Fragen hätte. Ich fang einfach mal an: Ich habe eine... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Stephanjap, 10. Februar 2016.

  1. "Suchformular" erstellen


    Hallo zusammen,

    ich fange gerade mit einer einfachen Datenbankanwendung an, wozu ich aber einige Fragen hätte. Ich fang einfach mal an:

    Ich habe eine Tabelle Mitarbeiter mit den folgenden Feldern:
    - MitarbeiterID (Autowert)
    - Personalnummer (Text)
    - Vorname (Text)
    - Nachname (Text)
    - Foto (Anlage)

    Daraufhin habe ich eine Abfrage für die Tabelle mit allen Feldern erstellt.

    Nun erstelle ich ein Formular mit der Abfrage als Datensatzherkunft. Ich ziehe also Felder in mein Formular und platziere sie irgendwie. Hierzu eine Frage: Das Feld MitarbeiterID ist für den Anwender eher uninteressant. Daher war meine Idee die Breite für das Textfeld auf 0 zu setzen, so dass der Anwender das Feld nicht mehr sieht. Oder kann man auch ganz darauf verzichten, dass Feld in das Formular einzufügen? Und falls ja, warum? Wie wird dann gewährleistet, dass ein neuer Datensatz, der im Formular eingegeben wird, auch eine MitarbeiterID erhält?

    Im Formular habe ich außerdem drei Schaltflächen, um einen neuen Datensatz hinzuzufügen, einen Datensatz zu speichern oder zu löschen.

    Jetzt kommt die Frage zur "Suchmaschine".

    Man könnte ein Listenfeld mit einigen Feldern aus der Tabelle Mitarbeiter erstellen (z.B. MitarbeiterID (Breite 0), Vorname und Nachname), so dass man durch Klicken auf den Vornamen & Nachnamen in der Liste auf den entsprechenden Datensatz springt, wo dann auch die restlichen Felder zum Mitarbeiter stehen (wie z.B. Personalnummer und Foto).

    Das geht bei wenigen Mitarbeitern vielleicht noch gut. Könnte man nicht eine "Suchmaschine" erstellen, die so ähnlich wie Google funktioniert?

    Ich gebe in die Suche Personalnummer, Vorname und/oder Nachname ein, wodurch die Anzahl der auswählbaren Mitarbeiter verkleinert wird.

    Also meine Idee ist ein Listenfeld, wo man durch Klicken einen Datensatz abrufen kann mit einer "Suchmaschine" zu kombinieren.

    Vielleicht gibt es ja noch bessere Ideen.


    Vielen Dank schon mal für die Antworten!


    Viele Grüße,
    Stephanjap

    :)
     
    Stephanjap, 10. Februar 2016
    #1
  2. Moin,

    dazu braucht's ein Kombinationsfeld namens Suchfeld und ein wenig Code dahinter:
    Code:
    Mein Suchfeld ist ungebunden und hat 4 Spalten: Mitglied, Name, Vorname, Geburtsdatum. Die ID Mitglied zeige ich dabei im Suchfeld nicht an.

    Auf dem Formular sollte die ID aber zu sehen sein, wenn auch nicht eingabefähig.

    Gruß
    Ralf
     
    drambeldier, 11. Februar 2016
    #2
  3. Moin,
    Lass das Feld drin und stell es in den Eigenschaften (Reiter Format) auf unsichtbar.
    Dann kannst du dich bei vielen Aktionen einfach darauf beziehen (Löschen etc.)
    Das geht auch, allerdings nur mit etwas mehr Programmierung. Vielleicht reicht dir ja schon ein Kombifeld zur Auswahl/Suche, wenn du da die Mitarbeiter beispielsweise nach Nachname sortiert drin hast, dann springt das Kombi bei Eingabe von "m" automatisch auf den ersten "Maier" ...

    maike
     
  4. "Suchformular" erstellen

    Danke für die Antworten! Kombibox ist eher unhandlich, weil das sehr viele Datensätze werden sollen. Daher bin ich auf der Suche nach einer anderen Lösung.

    Wie viel Programmieraufwand wäre das denn? Leider kenn ich mich mit VBA nicht aus. Gibt es trotzdem eine "einfache" Lösung?

    LG, Stephanjap
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Stephanjap, 11. Februar 2016
    #4
  5. Du hast ein Endlosformular, in dem du alle Datensätze siehst.
    Im Kopfteil legst du für jedes Feld in dem du suchen willst ein ungebundenes Feld an, z.b.
    fldVorname, fldNachname
    dazu einen Button "suchen", bei dem dann folgender Code ist

    Code:
    So werden dann nur noch die zutreffenden Datensätze angezeigt.
    mit dem eingebauten * (Stern) lässt sich auch nach Teilbegriffen suchen, z.b. 'meier' gibt alle Meier und auch z.b. Lachenmeier aus
    Geschickterweise machst du dann noch einen Button, der den Filter löscht ...
     
  6. Den von Jean gezeigten Filter kannst du im Prinzip auch für ein Listenfeld erstellen, da würde ich dann die Datenherkunft (Abfrage) neu setzen mit sFilter als WHERE-Teil.
    maike
     
  7. >> Kombibox ist eher unhandlich

    das sehe ich nicht so, man kann das ja so einstellen, dass es anhand der eingegebenen Buchstaben gleich in die Gegend vorzieht (Autovervollständigen, glaube ich). Mit "Mü" lande ich alo bei Mühsam, Müller, Mürtner ...
     
    drambeldier, 12. Februar 2016
    #7
  8. "Suchformular" erstellen

    Funktioniert aber nur für ein Feld auf einmal und nur von vorne beginnend. Gerade bei Personensuchen hat man oft das Problem, dass man die genaue Schreibweise nicht kennt. So kann in einen Filterfeld (wie oben von mir beschrieben) z.b. auch M*er eingegeben werden um Meier, Meyer, Maier und Mayer zu finden ...
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  9. Hallo

    um dein Wunsch richtig zu verstehen:
    möchtest Du z.B. in einem Endlos Formular auf den entsprechende DS springen
    das heist SUCHEN
    oder alle mit den angegebenen Name/vornaben Anzeigen
    das währe dan FILTERN

    ich habe hier Eini Muster MDB

    https://dl.dropboxusercontent.com/u/...erSort2003.zip

    alle Fomulare amanfang mit FrmASuche... SUCHEN

    die ander FILTERN z.B.: FrmKundenListe03 ist ein Beispiel
     
    Lanz Rudolf, 13. Februar 2016
    #9
  10. So werden dann nur noch die zutreffenden Datensätze angezeigt.
    mit dem eingebauten * (Stern) lässt sich auch nach Teilbegriffen suchen, z.b. 'meier' gibt alle Meier und auch z.b. Lachenmeier aus
    Geschickterweise machst du dann noch einen Button, der den Filter löscht ...

    Also ich habe mal den Code eingefügt, aber er funktioniert bei mir noch nicht.

    Ich bin wie folgt vorgegangen:

    Auf Basis der Tabelle Mitarbeiter habe ich eine Abfrage erstellt mit den Feldern MitarbeiterID, Vorname, Nachname und Personalnummer. Bis auf MitarbeiterID (Autowert) haben alle Felder den Feldtypen Text.

    Anschließend hab ich also ein Endlosformular erstellt mit der Abfrage als Datensatzherkunft und habe 3 ungebundene Textfelder sowie 2 Schaltflächen (je eins für "Suchen" und "Filter löschen") erstellt.

    Schließlich habe ich den Code von dir übernommen für die Schaltfläche "Suchen" beim Ereignis "beim Klicken".

    Bei mir kam dann folgender Fehler:
    Dieser Fehler tritt auf, wenn ein Ereignis nicht ausgeführt werden konnte, weil der Speicherort der Logik für das Ereignis nicht ausgewertet werden kann. Falls z. B. die OnOpen-Eigenschaft eines Formulars auf =[Field] festgelegt ist, tritt dieser Fehler auf, weil die Ausführung eines Makros oder Ereignisnamens erwartet wird, wenn das Ereignis auftritt.


    Mein Code-Feld sieht so aus..

    Edit
    Ich habe beim Code das "End Sub" in Zeil 2 entfernt... war das vielleicht für den obigen Fehler verantwortlich?
    Jetzt kommt aber der Laufzeitfehler 13 mit Typen unverträglich
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Stephanjap, 14. Februar 2016
    #10
  11. Hallo
    möglich das der Fehler hier ist:
    Wenn personalnummer eine Zahl ist
    dann muss die nicht in ' stehen also evtl. so
    sFilter = sFilter & "personalnummer like *" & fldPersonalnummer & "* "

    das End Sub würde ich auch wieder einfühgen

    das Du nicht Probleme hast mit Filter und/oder Wehre bedingungen zu erstellen
    Lies einmal in der OH (OnlineHilfe) oder in meiner Doc s. Fusszeile unten rechts
    zu Buildcriteria
    in meiner Doc Seite 73 -76
    5.3.13 Where-Bedingung mit BuildCriteria erstellen
    Spz. für Datum 297
    10.19.26 Kriterien für Datum Vergleich (Filter) mit BuildCriteria erstellen
     
    Lanz Rudolf, 14. Februar 2016
    #11
  12. Moin,

    Laufzeitfehler 13: Nicht deklarierte Variablen bekommen einen Datentyp, den Du evtl. nicht gebrauchen kannst. In die zweite Zeile gehört Option Explicit, und zwar immer! Damit werden Dir nicht deklarierte Variablen gezeigt.

    Anstatt fldbezeichnung fldVorname, vermute ich.

    Auf numerische Felder mit LIKE zu Filtern ist übrigens sinnlos.

    Gruß
    Ralf
     
    drambeldier, 14. Februar 2016
    #12
  13. "Suchformular" erstellen

    Die Syntax stimmt auch noch nicht, z.B. hier:
    Code:
    Setz mal hier ein Debug.Print,
    Code:
    dann kannst du dir den fertig zusammengebauten Filterstring im Direktfenster ansehen (Strg + g) und ggfls. hier posten.
    maike
     
  14. Hallo
    im weiteren würde ich Dir entfehlen
    eine Fehler Behandlung nach diesem muster in dein Code ein zu bauen:

    Code:
    Ersetze alle DMuster mit dem namen Deiner Sub/Function

    der hinweis von maikek mit debuge.print ist schon einmal Sehr GUT



    anstelle von:

    If Not IsNull(Me.fldNachname) Then

    könntest DU auch das Schreiben :
    If Len(Trim$(Nz(Me.fldNachname))) < 1 Then
    ' Ist NULL oder Leerschlag was bel formular felder nicht das gleiche ist
    Else
    ' ist ok für Filter
    EndIf
    mehr dazu in meiner Doc
    Seite 236
    9.1.1 Unterschied zwischen NULL (““) und Leerschlag (“ “)
     
    Lanz Rudolf, 14. Februar 2016
    #14
  15. \@Lanz Rudolf:

    Ich habe mir deine DB angesehen. Das Formular frmASucheKundenNachKdNr kommt dem nah was ich suche.

    Ich erstelle für die Mitarbeiter also einfach ein Endlosformular und filter nach einem Kriterium (bei mir könnte das für unterschiedliche Felder sein, wie z.B. Vorname, Nachname, Personalnummer, was sich ja durch weitere Textfelder problemlos ergänzen lassen sollte... oder?)


    Kannst du mir aber nochmal genau erklären, wie ich das ganze, so wie bei deiner DB hinkrieg und worauf ich acht geben muss?
    Ich copypaste eure Lösungen immer, aber bei mir klappt das ganze das häufig nicht...


    Viele Grüße,
    Stephanjap
     
    Stephanjap, 15. Februar 2016
    #15
Thema:

"Suchformular" erstellen

Die Seite wird geladen...
  1. "Suchformular" erstellen - Similar Threads - Suchformular erstellen

  2. Automatisierung erstellen

    in Microsoft Outlook Hilfe
    Automatisierung erstellen: Hallo, wir haben folgendes Problem: Unserer Rechnungsprogram ist angeblich nicht individuell programmierbar und geht nur auf einen Kundenwunsch ein. Bei der Erstellung Rechnung-per Mail wird eine...
  3. Suchformular

    in Microsoft Access Hilfe
    Suchformular: Hallo Zusammen, ich benötige Hilfe bei einem Formular = Suchformular. In diesem Formular habe ich ein ungebundenes Textfeld und eine Befehlsschaltfläche. Ich habe auch schon eine Abfrage...
  4. Suchformular

    in Microsoft Access Hilfe
    Suchformular: Hallo zusammen, ich habe mich extra für eine Frage, die mich derzeit beschäftigt, angemeldet & hoffe hier kann mir weitergeholfen werden. Ich stehe aktuell vor folgender Herausforderung: Ich...
  5. Suchformular

    in Microsoft Access Hilfe
    Suchformular: Guten Tag Leute, Situation Ich möchte ein Suchformular erstellen, bei dem man die Suche mit mehreren Kombinationsboxen einschränken kann. Ich habe mir dieses Video zur Hilfe genommen: [MEDIA]...
  6. jmc´s Demo-DB Adressliste mit Listenfeld im Suchformular?

    in Microsoft Access Hilfe
    jmc´s Demo-DB Adressliste mit Listenfeld im Suchformular?: Hallo Community, habe als Access-Neuling durch dieses Form schon zahlreiche Fragen für mich klären können und eigentlich schon genau das Beispiel gefunden, das ich brauche: die mdb...
  7. Suchformular für Tabelleninhalte!?!?

    in Microsoft Access Hilfe
    Suchformular für Tabelleninhalte!?!?: Servus Leute, ich habe folgendes Problem: ich habe eine Tabelle mit Vereinsmitgliedern. (Und zur besseren Optik auch ein Formular.) Jetzt möchte ich mit Hilfe einer Suchfuktion die...
  8. Suchformular fordert Passwort

    in Microsoft FrontPage Hilfe
    Suchformular fordert Passwort: Hallo, ich habe meine HP nun auf den Internetserver gepielt. Danach habe ich die Suchfunktion ausprobiert. Doch anstatt zu suchen, kommt ein Fenster mit Aufforderung ein Passwort einzugeben?...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden