Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Suche im Listenfeld
zurück: Tab-Taste deaktivieren weiter: Inhalt eines txtFeldes mit DomWert in ein Eingabefeld Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Isok
Einsteiger


Verfasst am:
05. Aug 2013, 16:37
Rufname:

Suche im Listenfeld - Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo zusammen,

ich habe ein Formular mit einem Listenfeld (lst_Alle_Projekte) und möchte mit einem Suchfeld nach Projektnamen in der Liste suchen.

Das Suchfeld könnte dabei ein Textfeld sein, das bei Eingabe von Zeichen (nach Aktualisierung) direkt zum nächsten passenden Listeneintrag springt. Außerdem wäre eine Funktion "weitersuchen" super.

Das Listenfeld bezieht seine Daten über eine bestehende Abfrage (Datensatzherkunft: Abfragegenerator und nicht VBA).
Das Formular bekommt seine Daten aus der Tabelle tblProjektListe und zeigt mit folgendem Code den im Listenfeld ausgewählten Datensatz an:
Code:
Private Sub lstAlle_Projekte_AfterUpdate()
    Dim RS As Object
   
    Set RS = Me.Recordset.Clone
    RS.FindFirst "[pro_id] = " & Str(Nz(Me![lstAlle_Projekte], 0))
    If Not RS.EOF Then Me.Bookmark = RS.Bookmark
End Sub
Ich habe es mit:
Code:
    Me!Projektname.SetFocus
    DoCmd.FindRecord Me!txtSuch
versucht. Dabei greife ich aber nach meinem Verständnis auf das Feld im Formular und nicht auf das Listenfeld zu.

Könnte mir bitte jemand weiterhelfen?

Viele Grüße
Isok
kyron9000
Practitioner :)


Verfasst am:
05. Aug 2013, 17:02
Rufname:
Wohnort: Wien


AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo Isok,

ich sag mal so, du wirst dich sicherlich leicht bei diesen Code einarbeiten und nur die Felder die
du auch benötigst verwenden sowie auch die Feld/Tabellennamen anpasst wirst.
In ein Modul...
Code:
Option Compare Database
Option Explicit
Public sSearchstring As String

Public Function fncFilterOn(F As Form)
On Error Resume Next
    Dim sCrit As String
   
    sSearchstring = F!txtSuche.Text
    sCrit = "Nachname LIKE '" & sSearchstring & "*'"
    F!Nachname.RowSource = " SELECT Q1.ID_Kind, Q1.Nachname,Q1.Vorname" _
                           & " FROM tbl_Kinder AS Q1" _
                          & " WHERE " & sCrit _
                       & " ORDER BY Q1.Nachname"
End Function

Public Function fncFilteroff(F As Form)
    F!txtSuche = ""
    F!Nachname.RowSource = " SELECT Q1.ID_Kind, Q1.Nachname, Q1.Vorname" _
                           & " FROM tbl_Kinder AS Q1" _
                       & " ORDER BY Q1.Nachname"
End Function
...Aufruf im Suchfeld:
Code:
Private Sub txtSuche_Change()
    fncFilterOn Me
End Sub
...dieser Code sollte...wenn du alles richtig erstellst, die Daten im Listenfeld,
nach jeder Eingabe im Suchfeld anpassen.

Aber, da du dich schon mit VBA auskennst, wird das kein Problem darstellen Smile
Die SQL hast ja schon im Listenfeld erstellt, diese brauchst ja dann nur dementsprechend verarbeiten.

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Isok
Einsteiger


Verfasst am:
06. Aug 2013, 15:50
Rufname:

AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo kyron9000,

ich bin nicht so der Code-Experte, wie du anscheinend vermutest.

Habe jetzt erstmal Modul angelegt:
Code:
Option Compare Database
Option Explicit
Public sSearchstring As String

Public Function fncFilterOn()
    On Error Resume Next
    Dim sCrit As String
   
    sSearchstring = txtSuche.Text
    sCrit = "Projektname LIKE '" & sSearchstring & "*'"
    lstAlle_Projekte.RowSource = " SELECT tblProjekt_Liste.pro_ID" _
                                     & ", tblBearbeiter.Bearbeiter" _
                                     & ", tblProjekt_Liste.Projektname" _
                                     & ", tblProjekt_Liste.bea_id_f" _
                                  & Where & sCrit _

End Function

Public Function fncFilteroff()
    txtSuche = ""
    lstAlle_Projekte.RowSource = " SELECT tblProjekt_Liste.pro_ID" _
                                     & ", tblBearbeiter.Bearbeiter" _
                                     & ", tblProjekt_Liste.Projektname" _
                                     & ", tblProjekt_Liste.bea_id_f"
End Function
und im Code des Formulars folgendes untergebracht:
Code:
Private Sub txtSuche_Change()
    fncFilterOn Me
End Sub
Außerdem habe ich im Formular ein ungebundes Textfeld mit dem Namen txtSuche angelegt.

Sobald ich nun etwas in das Textfeld eingebe bekomme ich im Modul die Fehlermeldung "Fehler beim Kompilieren: Variable nicht definiert" (bezogen auf txtSuche).

Habe es mit
Code:
    Dim txtSuche As String
probiert. Das war aber nix.
Hier läuft glaub ich noch einiges schief... Sad
derArb
getting better


Verfasst am:
06. Aug 2013, 16:01
Rufname: derArb
Wohnort: Berlin

AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo,
Kyron6000 sagte:
Zitat:
...Aufruf im Suchfeld:
Klicke im Entwurf das Feld txtSuche an.
Eigenschaften (F4)...Ereignis...Bei Änderung
Auswählen: Ereignisprozedur
Auf die 3 Punkte klicken und es erstellt sich ein Prozedur-Kopf und Prozedur-Ende.
Dazwischen:
Code:
    fncFilterOn Me
Das Modul darf nicht den Namen der Funktion haben!!!!!!!
_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
kyron9000
Practitioner :)


Verfasst am:
06. Aug 2013, 17:01
Rufname:
Wohnort: Wien


AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo Isok,
Zitat:
ich bin nicht so der Code-Experte, wie du anscheinend vermutest.
Macht ja nichts, es wird dir dennoch, mit ein wenig Geduld und Überlegung, gelingen.
  1. du sollst in deinem Formular ein Textfeld anlegen mit Namen txtSuche.
  2. das F!txtSuche.Text ist keine Variable sondern das Suchfeld im Formular, also erstelle ein solches Feld und gib ihm diesen Namen!
  3. dein SQL-Code ist so überhaupt nicht zu gebrauchen, bei dir fehlt das FROM also es müssen die Tabellen noch hinein.
  4. am besten, du erstellst so eine Abfrage und dann zeigst mir diesen Code
  5. fncFilterOn(F As Form) das F As Form hast entfernt, warum? Das werden wir noch brauchen.
  6. das Public sSearchstring As String werden wir auf Dim ändern oder ganz weg lassen, das war bei mir anders im Gebrauch.
  7. du kannst den Code natürlich auch im Formular verwenden, dann brauchst das F As Form nicht, sondern musst Me.txtSuche.Text einsetzen.
Wenn du den SQL-Code einstellst, stelle ich den Code für dich zusammen,
oder du stellst eine Beispiel-DB ein, oder du probierst selber weiter ob du es schaffst.
Ja, diese Optionen hast jetzt Very Happy

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
derArb
getting better


Verfasst am:
06. Aug 2013, 17:03
Rufname: derArb
Wohnort: Berlin

AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo,
da hab ich mir wohl ein wenig schlampig den Code angeschaut...sorry.

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
kyron9000
Practitioner :)


Verfasst am:
07. Aug 2013, 16:15
Rufname:
Wohnort: Wien

AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo Isok,

eine andere, ev. leichter zu verstehende Möglichkeit ist...
Du hast ja eine Abfrage als Datensatzherkunft für dein Listenfeld.
Für das Filter des Listenfeldes kannst auch einfach in der Abfrage das...
Code:
Wie ([Formulare]![DeinFormularName]![txtSuche].[Text] & "*")
...als Kriterium einsetzen.
Ein Feld für die Suche txtSuche und einen Button btnFilterOff für Filter aus.
Code:
Private Sub btnFilterOff_Click()
    Me.txtSuche = ""
    Me.lst_Test.Requery
End Sub

Private Sub txtSuche_Change()
    Me.lst_Test.Requery
End Sub
Das sollte aber jetzt keine Probleme aufwerfen.
Ach ja, DeinFormularName musst natürlich noch auf deinen Formularnamen ändern!

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Isok
Einsteiger


Verfasst am:
14. Aug 2013, 14:43
Rufname:

AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo kyron9000,

vielen Dank für deine Hilfe. Habe es inzwischen wie folgt umgesetzt:

Code:

Private Sub txtSuch_Change()
     
     Dim strID As String
     Dim strName As String
     
     strID = "ProjektNummer LIKE '" & Me!txtSuch.Text & "*'"
     strName = "Projektname LIKE '*" & Me!txtSuch.Text & "*'"

     Me!lstAlle_Projekte.RowSource = "SELECT pro_ID, Projektart, ProjektNummer, Projektname FROM qryAlle_Projekte WHERE " & strPCR_ID & " or " & strName & "ORDER BY Projektart"

End Sub


...am Ende ist es manchmal einfacher als es sich zuerst darstellt Very Happy
kyron9000
Practitioner :)


Verfasst am:
14. Aug 2013, 17:32
Rufname:
Wohnort: Wien


AW: Suche im Listenfeld - AW: Suche im Listenfeld

Nach oben
       Version: Office 2010

Hallo Isok,
Zitat:
...am Ende ist es manchmal einfacher als es sich zuerst darstellt

ja, genau... ein chinesisches Sprichwort sagt... "Ente gut, alles gut" *g*

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage in einem Listenfeld ausgeben! 3 Kyale 513 21. Aug 2007, 17:30
rita2008 Abfrage in einem Listenfeld ausgeben!
Keine neuen Beiträge Access Tabellen & Abfragen: Datenzeitraum für Listenfeld angeben? 5 ghostdog 728 27. Apr 2007, 13:39
Nouba Datenzeitraum für Listenfeld angeben?
Keine neuen Beiträge Access Tabellen & Abfragen: Problem bei Suche in einem Feld + Teil kopieren 1 evil1 615 30. März 2007, 15:11
derArb Problem bei Suche in einem Feld + Teil kopieren
Keine neuen Beiträge Access Tabellen & Abfragen: kombinierte Suche für access, excel UND powerpoint? 1 mariechen80 699 05. Jan 2007, 20:08
Nouba kombinierte Suche für access, excel UND powerpoint?
Keine neuen Beiträge Access Tabellen & Abfragen: Suche mittels Kontrollkästchen 4 hgs78 720 29. Nov 2006, 11:48
HGS78 Suche mittels Kontrollkästchen
Keine neuen Beiträge Access Tabellen & Abfragen: Datensätze mit zig Variationen (Suche Denkanstoß!) 4 ee547 788 01. Nov 2006, 21:13
Nouba Datensätze mit zig Variationen (Suche Denkanstoß!)
Keine neuen Beiträge Access Tabellen & Abfragen: Hyperlink -> Abfrage -> Listenfeld 1 Arkain 2554 28. Okt 2006, 03:16
derArb Hyperlink -> Abfrage -> Listenfeld
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Wert in Formular übernehmen 12 Oreo 922 19. Sep 2006, 00:50
Oreo Suche Wert in Formular übernehmen
Keine neuen Beiträge Access Tabellen & Abfragen: Suche 3 Vision2003 719 22. Aug 2006, 13:21
Tom2002 Suche
Keine neuen Beiträge Access Tabellen & Abfragen: Access 2k2 Suche + Leere Felder anzeigen lassen 5 Gast 6196 05. Jul 2006, 08:47
Gast Access 2k2 Suche + Leere Felder anzeigen lassen
Keine neuen Beiträge Access Tabellen & Abfragen: Listenfeld auf 20 Felder begrenzt? 8 Blub 925 24. März 2006, 12:11
Gast Listenfeld auf 20 Felder begrenzt?
Keine neuen Beiträge Access Tabellen & Abfragen: Suche nach einer Eingabevariablen in der Select-Zeile 1 neuer Gast 496 21. Feb 2006, 16:17
rita2008 Suche nach einer Eingabevariablen in der Select-Zeile
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA