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
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
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]
Hallo Daniel,
Anbei ein Minimalbeispiel wie es gehen könnte.
gruss ekkehard
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
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
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
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
Uuups, noch mal nachgezählt, - kann's also nicht sein. Sorry.
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.