Access-o-Mania

Access-Forum => Formular => Thema gestartet von: Danielz am Februar 09, 2018, 13:47:20

Titel: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Danielz am Februar 09, 2018, 13:47:20
Hallo,
ich hab ein Formular mit einem Unterformular. Im Hauptformular gebe ich persönliche Kontaktdaten einer Person ein. Im Ufo teile ich dieser Person dann über ein Kombinationsfeld eine Firma zu. Dieses Kombinationsfeld hat mehrere Spalten (Name der Firma, Abkürzung, Zusatz, Straße, Ort, etc.). Jetzt würde ich gerne bei einer Eingabe im Kombinationsfeld alle Spalten durchsuchen können. Wenn mir beispielsweise als Anwender nur die Abkürzung der Firma/Organisation einfällt, z.B. "BMBF" dann soll mir trotzdem die richtige Zeile angezeigt werden. Momentan ist es nur möglich eine der Zeilen zu durchsuchen.
Weiß Jemand für mein Problem eine Lösung? Vielen Dank im Voraus und beste Grüße
Daniel
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Beaker s.a. am Februar 09, 2018, 15:06:33
Hallo Daniel,
Ein vorgeschaltetes Kombi könnte helfen.
In dem zeigst du die relevanten Spalten zur Auswahl an und AfterUpdate
manipulierst du die RowSource des Suchkombis entsprechend.
gruss ekkehard
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Danielz am Februar 14, 2018, 14:35:39
Hallo Ekkehard,
vielen Dank für Deine Hilfe! Allerdings bin ich mit meinem Problem leider noch nicht weitergekommen.
Ich habe jetzt allerdings versucht mit einem vorgeschalteten ungebunden Textfeld, das als Suchfeld für das nachfolgende Kombi dient, mein Problem zu lösen. Dafür habe ich den nachfolgenden Code "bei Änderung" eingetragen. Bis jetzt ist damit allerdings auch nur die erste Spalte des Kombis durchsuchbar. Gibt es die Möglichkeit für "Dim Kriterium as String" mehrere Kriterien zu hinterlegen, so dass man auch noch nach Spalte zwei und drei des Kombis suchen kann?   
Viele Grüße
Daniel
Private Sub ogrSuchart_AfterUpdate()
    ArtikelSuchen
End Sub

Private Sub ArtikelSuchen()
    Dim strKriterium As String
    If Me!ogrSuchart = 1 Then
        strKriterium = "Institution LIKE  '" & strSuchbegriff & "*'"
    Else
        strKriterium = "Institution LIKE '*" & strSuchbegriff & "*'"
    End If
    Me!IstInstitution.RowSource = "SELECT Institutionen_Nr, Institution FROM Testabfrage WHERE " & strKriterium & " ORDER BY Institution"
End Sub

Private Sub txtSuche_Change()
    strSuchbegriff = Me!txtSuche.Text
    ArtikelSuchen

End Sub
[/size][/size]
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Beaker s.a. am Februar 14, 2018, 17:06:22
Hallo Daniel,
Anbei ein Minimalbeispiel wie es gehen könnte.
gruss ekkehard
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Josef P. am Februar 16, 2018, 14:56:55
Hallo!

Wenn eine Textsuche ausreicht, ist vielleicht auch die Eingabe des Suchwertes in die Combobox eine Option.
Beispiel: ComboboxFilterControlTest (http://access-codelib.net/download/samples/ComboboxFilterControlTest.zip)

mfg
Josef
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: DF6GL am Februar 16, 2018, 15:43:53
Hallo,


auch eine (einfache) Möglichkeit:


Private Sub txtSuche_Change()
     Me!IstInstitution.RowSource = "SELECT InstitutionName, Abkürzung, Zusatz, Straße, Ort  FROM tbl_Institutionen WHERE " & _
    "  InstitutionName & "|" & Abkürzung & "|" & Zusatz & "|" & Straße & "|" & Ort Like '*" &  Me!txtSuche.Text  & "*' ORDER BY InstitutionName"
End Sub
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Danielz am April 19, 2018, 15:13:22
Hallo Franz,

ich habe gerade erst deine Antwort gesehen. Wenn ich deine Möglichkeit ausprobiere bekomme ich einen Fehler bezüglich der senkrechten Striche | , was genau sollen die bewirken? Kann ich die evtl. weglassen?

Viele Grüße
Daniel
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Beaker s.a. am April 19, 2018, 15:45:52
Hallo Daniel,
Es liegt wohl an einem kleinen Tippfehler von Franz
Zitat
"  InstitutionName & "|" & Abkürzung & "|" & Zusatz & "|" & Straße & "|" & Ort Like '*" &  Me!txtSuche.Text  & "*' ORDER BY InstitutionName"
Na ja, schwer zu erkennen; - das erste " muss weg.
gruss ekkehard
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Beaker s.a. am April 19, 2018, 15:49:41
Uuups, noch mal nachgezählt, - kann's also nicht sein. Sorry.
Titel: Re: Suche in mehreren Spalten des Kombinationsfeldes
Beitrag von: Lachtaube am April 20, 2018, 08:18:30
Die Feldinhalte musst Du schon in der Bedingung trennen, damit kein absoluter Kuddelmuddel entsteht. Zur Trennung empfieht sich ein Zeichen zu nehmen, dass in keinem der Felder selbst vorkommt. Franz hat dafür das Pipe-Zeichen (|) veranschlagt, was Du natürlich auch austauschen kannst. Ist das gewählte Zeichen nicht innerhalb der in der Windows-Systemsteuerung eingestellten Codepage für nicht-Unicode fähige Programme (dazu zählt der VBA-Editor im Jahr 2018 leider immer noch) verfügbar (das ist hierzulande normalerweise die Windows Codepage 1252), so kann das Trennzeichen auch mittels der Funktion ChrW() eingetragen werden. Ich verwende in ähnlichen Situationen oft Chr(255) => (ÿ), was in deutschen Texten nicht vorkommt.

Private Sub txtSuche_Change()
   Me.IstInstitution.RowSource = _
      "SELECT InstitutionName," & vbLf & _
      "       Abkürzung," & vbLf & _
      "       Zusatz," & vbLf & _
      "       Straße," & vbLf & _
      "       Ort" & vbLf & _
      "FROM   tbl_Institutionen" & vbLf & _
      "WHERE  InstitutionName & '|' & Abkürzung & '|' & Zusatz & '|' & Straße & '|' & Ort" & _
      "       Like '*" & Me!txtSuche.Text & "*'" & vbLf & _
      "ORDER  BY 1"
   'vollkommen gleichwertig ist; Chr$(124) => |
   Me.IstInstitution.RowSource = _
      "SELECT InstitutionName," & vbLf & _
      "       Abkürzung," & vbLf & _
      "       Zusatz," & vbLf & _
      "       Straße," & vbLf & _
      "       Ort" & vbLf & _
      "FROM   tbl_Institutionen" & vbLf & _
      "WHERE  InstitutionName & Chr$(124) &" & vbLf & _
      "       Abkürzung & Chr$(124) &" & vbLf & _
      "       Zusatz & Chr$(124) &" & vbLf & _
      "       Straße & Chr$(124) &" & vbLf & _
      "       Ort" & _
      "       Like '*" & Me.txtSuche.Text & "*'" & vbLf & _
      "ORDER  BY 1"
End Sub

Siehe auch Anführungszeichen und Apostrophe (https://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Anf%C3%BChrungszeichen_und_Apostrophe) auf DBWiki.