Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Aloster am November 09, 2012, 11:31:11

Titel: Kombinationsfeld Suchen eines Teil eines Wortes
Beitrag von: Aloster am November 09, 2012, 11:31:11
Access 2007

ich habe ein Formular "Adresseneingabe" mit einem Kombinationsfeld mit der Datenherkunft SELECT Adressen.Kennummer, Adressen.Nachname FROM Adressen ORDER BY Adressen.Nachname
Das Kombinationsfeld dient mir einen bestimmten Datensatz mit dem eingegebenen Nachnamen zu suchen. Wenn ich jedoch in das Kombinationsfeld z.B. "Hermann" eingebe, dann schlägt mir das Kombinationsfeld nur alle Nachnamen vor, die mit "Hermann" beginnen, aber nicht die, wo "Hermann" nicht am Anfang eines Nachnamens steht (z.B. "Müller-Hermann").
Wei kann ich aber innerhalb eines Nachnamens suchen?

Titel: Re: Kombinationsfeld Suchen eines Teil eines Wortes
Beitrag von: database am November 09, 2012, 17:49:02
Die Funktion 'Autovervollständigen' der Kombifelder bewirkt, dass die Eingaben von Links nach Rechts ausgewertet
werden und damit eben der Effekt erzeugt weird, den du beschrieben hast.

Um das zu ändern kannst du ins Change-Ereignis deines Kombifeldes folgenden Code einfügen.
Die bisherige Datenherkunft kannst du löschen.



Private Sub DeinKombifeld_Change()

     Dim strSQL As String

     strSQL = "SELECT Kennnummer, Nachname FROM Adressen " & _
         "WHERE Nachname LIKE '" & Me!DeinKombifeld.Text & "*' OR Nachname LIKE '*" & _
          Me!DeinKombifeld.Text & "*'"

     Me!DeinKombifeld.RowSource = strSQL

     Me!DeinKombifeld.Dropdown

End Sub



Dadurch wird bei jedem eingegebenen Zeichen die RowSource deines Kombis neu aufgebaut und ermöglicht,
dass auch wie in deinem Fall 'Müller-Hermann' bei der Eingabe von 'Hermann' gefunden und angezeigt wird.

HTH
Titel: Re: Kombinationsfeld Suchen eines Teil eines Wortes
Beitrag von: Aloster am November 12, 2012, 12:22:58
Danke! Das funkioniert! Und wie sieht der Code aus, wenn ich in zwei Spalten ("Nachname", "Unternehmen") der Tabelle "Adressen" suchen möchte und "Unternehmen" in manchen Datensätzen in der Adresse-Tabelle auch mal keine Daten enthält?:

Also in dem Sinne:

Wenn Adressen.Unternehmen ist null dann
SELECT Kennummer, Nachname FROM Adressen

Wenn Adressen.Unternehmen ist nicht null dann
SELECT Kennummer, Unternehmen & " " & Nachname FROM Adressen


Titel: Re: Kombinationsfeld Suchen eines Teil eines Wortes
Beitrag von: database am November 12, 2012, 12:37:16
Hallo,

ohne das zu probieren könnte es so gehen:


Private Sub DeinKombifeld_Change()

     Dim strSQL As String

     strSQL = "SELECT Kennnummer, Nachname, Unternehmen FROM Adressen " & _
         "WHERE Nachname LIKE '" & Me!DeinKombifeld.Text & "*' OR Nachname LIKE '*" & _
          Me!DeinKombifeld.Text & "*' OR Unternehmen LIKE '" & Me!DeinKombifeld.Text & "*' OR Unternehmen LIKE '*" & _
          Me!DeinKombifeld.Text & "*'"

     Me!DeinKombifeld.RowSource = strSQL

     Me!DeinKombifeld.Dropdown

End Sub



oder du teilst die Sache gleich auf 2 Kombis auf
Titel: Re: Kombinationsfeld Suchen eines Teil eines Wortes
Beitrag von: Aloster am November 12, 2012, 13:20:22
Danke. Funktioniert!