zoeken op verschillende velden

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
Hallo,

Ik heb een tabel waarin records met bvb 3 velden
naam
straat
plaats
als ik nu in die records wil zoeken naar een bepaalde naam maak ik daar een query voor, een recordset en dan toon ik de correcte record
dat werkt
maar ik vraag me af of dat wel de goeie manier is
EN
wat als ik eventueel ook een zoekmogelijkheid wil hebben op "straat" of ook op "plaats"
Hoe doen jullie dat concreet?
(misschien heeft er iemand wel zo een basic-mdb bestandje met een voorbeeldje... zou handig zijn :thumb:)
Merci voor de hulp
JP
 
Als het werkt dan is het een goede manier.
Er zijn talloze manieren om dit op te lossen.

Als ik ook op straat of plaats wil zoeken dan doe ik dat ongeveer zo:

Ik haal de query op waar nog geen where clause aan vast zit. Dat doe ik omdat een query veel eenvoudiger is samen te stellen in de QBE (query by example = het gedeelte in Access waar je queries ontwerpt)

Code:
dim strSql = string
strSql = CurrentDB.QueryDefs("qryVoorbeeldQuery").SQL
Ik heb ook nog een where clause nodig die ik er naderhand aan vast plak. Die geef ik alvast een waarde.
Code:
dim strWhere as string
strWhere = "Where 1=1 "
Nu wil je weten welke filters je toe moet passen op je query (ik neem aan dat txtNaam, txtAdres en txtPlaats textvelden zijn op je form)
Code:
if Len(Nz(me.txtNaam,"")) > 0 then
    strWhere = strWhere & " and Naam = ' & me.txtNaam & '"
endif
if Len(Nz(me.txtAdres,"")) > 0 then
    strWhere = strWhere & " and Adres = ' & me.txtAdres & '"
endif
if Len(Nz(me.txtPlaats,"")) > 0 then
    strWhere = strWhere & " and Plaats = ' & me.txtPlaats & '"
endif
Als txtNaam NULL is dan wordt die door de Nz functie een lege string.
Testen op "" is langzamer dan testen op een string met length 0 dus vandaar de Len() functie.

Dan hoef je de oorspronkelijke string alleen maar aan te passen door die twee aan elkaar te plakken:
Code:
strSql = strSql & strWhere
In strSql staat nu de query die je wilt.
Je kan er een recordset mee openen of opslaan en uitvoeren.

Succes!

HTH:D
 
Het lukt me niet echt
Ik maakte een testformulier aan met een zoekknop
Het rare is dat ik in die entryfields, niks kan invullen... joost mag weten waarom
klik ik op de zoekknop dan krijg ik bij de eerste lijn onmiddellijk een foutmelding:
"een door de gebruiker gedefineerd gegevenstype is niet gedefinieerd"

mag ik nog even je hulp om dit tot een goed einde te brengen?
Merci
 

Bijlagen

  • Database9.rar
    18,6 KB · Weergaven: 10
Je zou kunnen beginnen met de eigenschap <Bewerken toestaan> op <Ja> te zetten :)
 
Verder is dit:
Code:
    strSQL = CurrentDb.QueryDefs("qryVoorbeeldQuery").SQL
...
in combinatie met dit:
Code:
...
    strSQL = strSQL & strWhere
een heel ongelukkige, want je stapelt op deze manier alleen maar filters op elkaar. En dat lijkt mij niet de bedoeling. Deze constructie werkt maar één keer goed. Overigens ontbreekt er nog een regel:
Code:
    strSQL = strSQL & strWhere
    CurrentDb.QueryDefs("qryVoorbeeldQuery").SQL = strSQL
 
de vraag waar ik dan blijf me zitten... wat is dan een beter alternatief???
<Bewerken toegestaan>.... goed idee.....:rolleyes:
 
Waarom zou je een apart formulier willen hebben voor zo'n filter, waarom niet gelijk op je formulier zelf filteren? Lijkt mij een stuk makkelijker, je hoeft alleen een filter op het formulier los te laten. Querydefs gebruik ik eigenlijk alleen maar om rapporten te filteren die je wilt mailen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan