Suchfeld in Access 2010
Hallo zusammen,
nach 7 Jahres Access-Abstinenz bin ich doch wieder gezwungen mich an Access zu setzen und eine kleine Datenbank mit entsprecehenden Formularen zu entwerfen. Der datenbankaufbau und alles hat wunderbar funktioniert. Nur scheitere ich aktuell an einem Suchfeld. Nachdem ich jetzt über 20 verschiedene Links und Möglichkeiten aus Internet ausprobiert habe (und auch hier im Forum fündig wurde), möchte ich mein Anliegen nun doch einmal expliziet zum Ausdruck bringen:
Vorweg:
Ich habe das Formular erstellt und alle Felder im Formular stimmen auch überein. Es geht hier um Kunden, daher ist der Kundenname für das hier beschrieben Suchverfahren ausschlaggebend.
Als nächstes habe ich ein Listenfeld erstellt. Hierzu habe ich den Assistenten verwendet und die Option "Einen Datensatz im Formular anhand des Wers suchenm den ich im Listenfeld ausgewählt habe" ausgewählt. Das ausgewählte Feld ist lediglich der Kundenname. In der Übergabe sehe ich nun meine 5 Testeinträge. Wechsel ich nun von der Entwurfsansicht auf die Formularansicht, kann ich die 5 Einträge sehen und auswählen. Hierbei wird der entsprechende Datensatz dann ausgewählt. Soweit so gut.
Problem 1: Unter "Enthält Modul" des Formulars ist die option "ja" angewählt. Mit dieser Option lässt sich das Formular jedoch nicht speichern. Deaktiviere ich das Formular hingegen, so kann ich das Formular zwar speichern, aber die Auswahlfunktion funktioniert nicht mehr. Ich kann dann alle Werte anklicken, aber die Datensätze aktualisieren sich nciht mehr.
Also habe ich zunächst ohne Speichern weiter gearbeitet und getüftelt. Der Plan ist, ein Suchfeld vorzuschalten. In dieses Suchfeld soll ein beliebiger Begriff eingegeben werden und das Ergebnis soll automatisch in das eben beschrieben Listenfeld
gelistet werden. Hierzu wollte ich die Option "Bei Eingabe" als Ereignis nutzen. Aber auch hier habe ich es nicht geschafft ein Ereignis zu definieren, welches das Listenfeld füllt. Ich habe folgende Kunden eingegeben:
- test
- testeins
- einstzwei
Die Eingabe von "test" soll demnach 2 Eiträge im Listenfeld, die Eingabe von "teste" 1 Eintrag und die Eingabe von "st" 3 Einträge im Listenfeld erzeugen. Ein Klick auf den ausgewählten Eintrag soll dann alle Daten des Datensatz im Formular anzeigen
Problem 2: Wie bekomm ich das hin?
Ich kann auf Grund der Vielzahl der Versuche in den letzten Tagen nicht alle Seiten auflisten, daher bitte ich von Links abzusehen, es sei denn sie beschreiben direkt meinen Wunsch. Die Seite http://www.tutorials.de/relationale-datenbanksysteme/144014-access-such ... beschreibt es hervorragend, funktioniert aber aus irgendeinem Grund bei mir nicht. Ich vermute auch hier schlägt Problem 1 zu.
Noch etwas zur Datenbank: Alle Felder sind mit Standardwerten vorbelegt, so dass es keine leeren Datenbankfelder geben kann.
Noch etwas zu mir. Eine komplette Lösung meines Problems wäre natürlich perfekt, aber auch mit hinweisen und/oder der Reihenfolge der zu verwenden Befehle ist mir weitergeholfen. Ein kleiner Bastler steckt doch in jedem der sich mit Datenbanken rumschlägt.
nach 7 Jahres Access-Abstinenz bin ich doch wieder gezwungen mich an Access zu setzen und eine kleine Datenbank mit entsprecehenden Formularen zu entwerfen. Der datenbankaufbau und alles hat wunderbar funktioniert. Nur scheitere ich aktuell an einem Suchfeld. Nachdem ich jetzt über 20 verschiedene Links und Möglichkeiten aus Internet ausprobiert habe (und auch hier im Forum fündig wurde), möchte ich mein Anliegen nun doch einmal expliziet zum Ausdruck bringen:
Vorweg:
Ich habe das Formular erstellt und alle Felder im Formular stimmen auch überein. Es geht hier um Kunden, daher ist der Kundenname für das hier beschrieben Suchverfahren ausschlaggebend.
Als nächstes habe ich ein Listenfeld erstellt. Hierzu habe ich den Assistenten verwendet und die Option "Einen Datensatz im Formular anhand des Wers suchenm den ich im Listenfeld ausgewählt habe" ausgewählt. Das ausgewählte Feld ist lediglich der Kundenname. In der Übergabe sehe ich nun meine 5 Testeinträge. Wechsel ich nun von der Entwurfsansicht auf die Formularansicht, kann ich die 5 Einträge sehen und auswählen. Hierbei wird der entsprechende Datensatz dann ausgewählt. Soweit so gut.
Problem 1: Unter "Enthält Modul" des Formulars ist die option "ja" angewählt. Mit dieser Option lässt sich das Formular jedoch nicht speichern. Deaktiviere ich das Formular hingegen, so kann ich das Formular zwar speichern, aber die Auswahlfunktion funktioniert nicht mehr. Ich kann dann alle Werte anklicken, aber die Datensätze aktualisieren sich nciht mehr.
Also habe ich zunächst ohne Speichern weiter gearbeitet und getüftelt. Der Plan ist, ein Suchfeld vorzuschalten. In dieses Suchfeld soll ein beliebiger Begriff eingegeben werden und das Ergebnis soll automatisch in das eben beschrieben Listenfeld
gelistet werden. Hierzu wollte ich die Option "Bei Eingabe" als Ereignis nutzen. Aber auch hier habe ich es nicht geschafft ein Ereignis zu definieren, welches das Listenfeld füllt. Ich habe folgende Kunden eingegeben:
- test
- testeins
- einstzwei
Die Eingabe von "test" soll demnach 2 Eiträge im Listenfeld, die Eingabe von "teste" 1 Eintrag und die Eingabe von "st" 3 Einträge im Listenfeld erzeugen. Ein Klick auf den ausgewählten Eintrag soll dann alle Daten des Datensatz im Formular anzeigen
Problem 2: Wie bekomm ich das hin?
Ich kann auf Grund der Vielzahl der Versuche in den letzten Tagen nicht alle Seiten auflisten, daher bitte ich von Links abzusehen, es sei denn sie beschreiben direkt meinen Wunsch. Die Seite http://www.tutorials.de/relationale-datenbanksysteme/144014-access-such ... beschreibt es hervorragend, funktioniert aber aus irgendeinem Grund bei mir nicht. Ich vermute auch hier schlägt Problem 1 zu.
Noch etwas zur Datenbank: Alle Felder sind mit Standardwerten vorbelegt, so dass es keine leeren Datenbankfelder geben kann.
Noch etwas zu mir. Eine komplette Lösung meines Problems wäre natürlich perfekt, aber auch mit hinweisen und/oder der Reihenfolge der zu verwenden Befehle ist mir weitergeholfen. Ein kleiner Bastler steckt doch in jedem der sich mit Datenbanken rumschlägt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206447
Url: https://administrator.de/forum/suchfeld-in-access-2010-206447.html
Ausgedruckt am: 31.03.2025 um 14:03 Uhr
3 Kommentare
Neuester Kommentar
Moin,
ich bin vermutlich nicht der einzige, der spätestens bei Problem 1 abgeschaltet hat.
Ich kann nicht ganz nachvollziehen was du vor hast.
Was ich verstanden habe:
Du hast ein Formular - so weit so gut.
Dort hast du ein Suchfeld.
In dieses Suchfeld gibst du ein was du suchst bzw. wählst es aus?
Ist dies erfolgt soll automatisch dieser Kunde gewählt werden und weitere Daten in dem gleichen Formular angezeigt werden?
Du willst eine Suche mit Wildcards?
Wenn ich Kunden habe weiß ich zumindest den Anfang und nicht irgendwas aus der Mitte des Namens...ist das sinnvoll?
Vielleicht kannst du etwas "einfacher" beschreiben was du vor hast.
Ansonsten einfach mal die DB bereit stellen ohne Daten - wobei da vermutlich eh nur Testdaten enthalten sind bisher.
Gruß
ich bin vermutlich nicht der einzige, der spätestens bei Problem 1 abgeschaltet hat.
Ich kann nicht ganz nachvollziehen was du vor hast.
Was ich verstanden habe:
Du hast ein Formular - so weit so gut.
Dort hast du ein Suchfeld.
In dieses Suchfeld gibst du ein was du suchst bzw. wählst es aus?
Ist dies erfolgt soll automatisch dieser Kunde gewählt werden und weitere Daten in dem gleichen Formular angezeigt werden?
Du willst eine Suche mit Wildcards?
Wenn ich Kunden habe weiß ich zumindest den Anfang und nicht irgendwas aus der Mitte des Namens...ist das sinnvoll?
Vielleicht kannst du etwas "einfacher" beschreiben was du vor hast.
Ansonsten einfach mal die DB bereit stellen ohne Daten - wobei da vermutlich eh nur Testdaten enthalten sind bisher.
Gruß
Hi,
da wir das Problem nun mehr oder minder per Mail geklärt haben; hier noch mal für alle ein kleiner Ansatz:
Suchfeld: Das Suchfeld ;P
Text22: Das ist das Listenfeld (zu faul zum umbenennen;P ) Muss bei "Herkunftstyp" den Eintrag "Wertliste" haben.
allgemeinReaktion: Ein Feld aus der Tabelle
Das "Testformular" bestand nur aus drei Feldern.
Aus dem "Suchfeld", einem Listenfeld in dem die Suchergebnisse ausgegeben wurden und zum Testen der Auswahl aus dem Listenfeld ein Feld aus der Tabelle.
In der "Prozedur" Text22_Click() werden die Felder, entsprechend der Kundenauswahl, mit den Daten aus der Tabelle die bei dem entsprechenden Kunden hinterlegt sind, gefüllt.
Man kann natürlich noch einen Button hinzufügen zum Ausführen der Suchfunktion - dort kopiert man die gleichen Zeilen ein wie oben unter Suchfeld_AfterUpdate().
Gruß
da wir das Problem nun mehr oder minder per Mail geklärt haben; hier noch mal für alle ein kleiner Ansatz:
Suchfeld: Das Suchfeld ;P
Text22: Das ist das Listenfeld (zu faul zum umbenennen;P ) Muss bei "Herkunftstyp" den Eintrag "Wertliste" haben.
allgemeinReaktion: Ein Feld aus der Tabelle
Option Compare Database
Option Explicit
Private Sub Suchfeld_AfterUpdate()
Dim rcsKunden As Recordset
Set rcsKunden = CurrentDb.OpenRecordset("SELECT Servicekunden.Kundenname FROM Servicekunden WHERE Servicekunden.Kundenname Like '*" & Me.Suchfeld & "*'", dbOpenDynaset) 'Die Abfrage sollte klar sein... mit '*" & Me.Suchfeld & "*' greifst du auf das Suchfeld zu die * sind Platzhalter
Text22.RowSource = "" 'hiermit leerst du das Listenfeld, damit bei einer neuen Suche die alten Einträge gelöscht sind
Do Until rcsKunden.EOF 'Eine Schleife so lange Suchergebnisse in rcsKunden vorhanden sind
'Me.Text22 = Me.Text22 & rcsKunden.Fields("Kundenname") & vbCrLf ''hiermit fügst du die ausgelesenen Werte aus der DB Zeilenweise einem TEXTFELD hinzu - das habe ich aber entfernt
Text22.AddItem rcsKunden.Fields("Kundenname") 'hiermit fügst du die ausgelesenen Werte aus der DB Zeilenweise dem LISTENFELD hinzu
rcsKunden.MoveNext 'damit rufst du einfach den nächsten gefundenen Datensatz auf
Loop
If rcsKunden.RecordCount = 0 Then 'hiermit zählst du die Anzahl von Datensätzen. Wenn die Zahl 0 ist, gibt es keinen Kunden mit dem Namen
MsgBox "Kein Kunde mit dem Namen '" & Me.Suchfeld & "' gefunden!" 'hier wird eine Fehlermeldung ausgegeben
End If
End Sub
Private Sub Text22_Click()
Dim rcsKunden As Recordset
Set rcsKunden = CurrentDb.OpenRecordset("SELECT * FROM Servicekunden WHERE Servicekunden.Kundenname = '" & Me.Text22.Value & "'", dbOpenDynaset)
Me.allgemeinReaktion = rcsKunden.Fields("allgemeinReaktion")
End Sub
Das "Testformular" bestand nur aus drei Feldern.
Aus dem "Suchfeld", einem Listenfeld in dem die Suchergebnisse ausgegeben wurden und zum Testen der Auswahl aus dem Listenfeld ein Feld aus der Tabelle.
In der "Prozedur" Text22_Click() werden die Felder, entsprechend der Kundenauswahl, mit den Daten aus der Tabelle die bei dem entsprechenden Kunden hinterlegt sind, gefüllt.
Man kann natürlich noch einen Button hinzufügen zum Ausführen der Suchfunktion - dort kopiert man die gleichen Zeilen ein wie oben unter Suchfeld_AfterUpdate().
Gruß