Zoeken in verschillende kolommen dmv combobox

Status
Niet open voor verdere reacties.

AterBruggen

Gebruiker
Lid geworden
3 apr 2011
Berichten
13
Hallo,

Misschien is de vraagstelling in de titel een beetje onduidelijk, maar zal m'n vraag even verduidelijken.
Uit een tabel wil ik uit verschillende kolommen een waarde kunnen opzoeken middels 1 zoekveldje.
Daarbij wil ik dmv een combobox bepalen uit welke kolom ik ga zoeken.
Nu kan ik wel voor elk gewenste kolom een apart zoekveld maken, maar wil graag het formulier zo overzichtelijk mogelijk houden.

Heeft Access hier een mogelijkheid voor? en zo ja, wie kan mij op weg helpen.

Gr. Bram
 
Dat is zeker mogelijk; je kunt op een formulier een keuzelijst (met invoervak) maken die je baseert op die tabel met de door jou gewenste velden. De waarden uit de keuzelijst kun je op twee manieren koppelen aan een tekstvak: met VBA, en met een formule als Besturingselementbron. De eerste variant is flexibel (je kunt de waarde na het kiezen overschrijven), de tweede variant zorgt ervoor dat je de gekozen waarden niet kunt aanpassen. Die is ook makkelijker te maken.
Om met de tweede te beginnen: als je in de tekstvakken deze formules zet: =cboKeuzelijst.Colum(#) dan krijgt het tekstvak de waarde van de bijbehorende kolom (-1) uit de keuzelijst. Voorbeeldje:

Keuzelijst bevat de velden KlantID, KlantNaam, KlantAdres , KlantPlaats. Dan zet je in deze tekstvakken de volgende formules:

PHP:
tekstvak KlantNaam: =cboKeuzelijst.Colum(1)
tekstvak KlantAdres: =cboKeuzelijst.Colum(2)
tekstvak KlantPlaats: =cboKeuzelijst.Colum(3)
En zo verder.
 
Als je een eenvoudige oplossing zoekt: klik met de rechtermuisknop in het veld waarop je wil zoeken en gebruik één van de ingebouwde filtermethodes.
Een andere, voor de gebruiker zeer duidelijk methode is een zoekformulier: plaats een actieknop op het formulier dat een ongebonden formulier opent met alle vakken waarop je wil zoeken. Als fde gebruiker in ditformulier op de zoekknop klikt wordt de filterstring opgebouwd en het basis formulier met deze zoekstring gefilterd. Hiermee kan je ook op verschillende kolommen tegelijk zoeken.
 
Laatst bewerkt:
Dat is zeker mogelijk; je kunt op een formulier een keuzelijst (met invoervak) maken die je baseert op die tabel met de door jou gewenste velden. De waarden uit de keuzelijst kun je op twee manieren koppelen aan een tekstvak: met VBA, en met een formule als Besturingselementbron. De eerste variant is flexibel (je kunt de waarde na het kiezen overschrijven), de tweede variant zorgt ervoor dat je de gekozen waarden niet kunt aanpassen. Die is ook makkelijker te maken.
Om met de tweede te beginnen: als je in de tekstvakken deze formules zet: =cboKeuzelijst.Colum(#) dan krijgt het tekstvak de waarde van de bijbehorende kolom (-1) uit de keuzelijst. Voorbeeldje:

Keuzelijst bevat de velden KlantID, KlantNaam, KlantAdres , KlantPlaats. Dan zet je in deze tekstvakken de volgende formules:

PHP:
tekstvak KlantNaam: =cboKeuzelijst.Colum(1)
tekstvak KlantAdres: =cboKeuzelijst.Colum(2)
tekstvak KlantPlaats: =cboKeuzelijst.Colum(3)
En zo verder.

Dank voor de reactie, maar ik denk dat ik mijn vraag verkeerd gesteld heb.
Wellicht dat een foto iets meer duidelijk maakt.
Zoals in onderstaande afbeelding, wil ik 1 tekstvak waarin ik een zoekopdracht geef, en in welke kolom in de tabel gezocht moet worden, moet geselecteerd worden met de keuzelijst.
Bekijk bijlage 360564
 
Jammer genoeg kunnen we de afbeelding niet zien. Je zult die via <Ga geavanceerd> moeten toevoegen.
 
Dat is ook heel simpel te maken door een keuzelijst te baseren op de velden uit een tabel. Je kiest dan in de keuzelijst een veld (mag uiteraard ook een query onder hangen) en in je zoek filter verwijs je naar de keuzelijst. Eventueel maak je dat filter met VBA, da’s niet zo moeilijk. En is er een reden dat je berichten quoot?
 
Oke, Is dus eigenlijk niet zo moeilijk...zat weer erg moeilijk te denken:rolleyes:
Bedankt in ieder geval.

Oja, reden om te quoten was voor mij omdat er nog iemand reageerde, en ik op de juiste persoon antwoord wil geven.
maar als dit niet gewenst is....excusus!
 
Dat quoten was bij de eerste dan wél van toepassing, maar niet bij de tweede :).
kom je er niet uit, maak dan een voorbeeldje. Dan krijgen we wat meer inzicht.
 
Heb de optie vanmorgen geprobeerd maar ergens gaat iets fout....
Ik dacht misschien toch te simpel, maar krijg de zoekfunctie niet werkend.
Heb de betreffende velden van de tabel waarin ik wil zoeken in query in de combobox geplaatst
Wat gaat er mis?

PHP:
Private Sub btnSearch_Click()
Dim strSearch As String
Dim strText As String
If IsNull([SearchBox]) Then
Call btnClear_Click
Else
If SearchBox.Value > "" Then
strText = SearchBox.Value
strSearch = "SELECT * from tblDeviations where (((cmbSearchItem.Value) Like ""*" & strText & "*""))"
Me.RecordSource = strSearch
End If
End If
End Sub
 
Ik snap wel denk ik waarom je code niet werkt. Om te beginnen: filteren kun je beter op het formulier doen dan in de query. En je moet, als je filters gaat maken voor verschillende soorten velden, rekening houden met het type veld. Dus een datumveld, getalveld of tekstveld. Dan krijg je zoiets:

Code:
Private Sub cmdZoeken_Click()
Dim varZoek, sFilter As String, iZoek As Double
Dim num As Boolean, dat As Boolean
    
    If Me.cmdZoeken.Caption = "Zoekscherm leeg" Then GoTo Hell
    If Me.cmbSearchItem = "" Then GoTo Hell
    If Me.SearchBox & "" = "" Then GoTo Hell
    varZoek = Me.SearchBox.Value
    If IsDate(varZoek) Then dat = True:         iZoek = CDbl(CDate(varZoek))
    If IsNumeric(varZoek) Then num = True:      iZoek = varZoek
    
    If dat = True Then
        sFilter = Me.cmbSearchItem & "=CDate(" & iZoek & ")"
    ElseIf num = True Then
        sFilter = Me.cmbSearchItem & "=" & CDbl(varZoek)
    Else
        sFilter = Me.cmbSearchItem & " Like ""*" & varZoek & "*"""
    End If
    Me.Filter = sFilter
    Me.FilterOn = True
    Me.cmdZoeken.Caption = "Zoekscherm leeg"
    Exit Sub


Hell:
    Me.Filter = ""
    Me.FilterOn = False
    Me.cmdZoeken.Caption = "Zoeken"
    Me.cmbSearchItem = Null
    Me.SearchBox = ""
End Sub

Ik gebruik daarbij één knop voor zowel filter leegmaken als filter toepassen. Scheelt weer ruimte :).
 
Oke, Dat is inderdaad iets om rekening mee te houden...niet aan gedacht.
Er zijn inderdaad verschillende type gegevens waar naar gezocht moet worden.
Ik ga hier vanavond of morgen even naar kijken.
Bedankt in ieder geval:thumb:
 
Ik heb de code getest met datums, getallen en tekst. Niet met Ja/Nee velden, maar die mag je zelf bedenken als je die nodig hebt :).
 
@AccessGuru
Werkt perfect! heb wel de 1 knops functie weggelaten. 1 klein knopje extra was niet erg :D
Hartelijk dank:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan