Zoekfunctie in vba typen komen niet overeen

Status
Niet open voor verdere reacties.

mindgame112

Gebruiker
Lid geworden
5 okt 2009
Berichten
61
Beste mensen hier ik heb weer een sql gerelateerde vraag namelijk de volgende

Ik heb deze code nu staan maar die krijg ik weer niet werkend en ik vroeg me af of iemand weet waarom. Hij geeft aan dat de typen niet overeenkomen. Nu lukt het me wel om met de variable het "zoekbereik" aan te geven dus de tabel waarin gezocht moet worden maar niet om de zoekterm er ook in te verwerken. De code is als volgt :

Code:
strSQL = "SELECT tblClienten." & varZoekbereik & " FROM tblClienten WHERE tblClienten." & varZoekbereik & " LIKE " * " & varZoekterm & " * " "

Als ik deze dus uitvoer krijg ik dat de typen niet overeen komen iemand een idee ?

edit : De hele code is dit :

Code:
Dim varZoekbereik As String
Dim varZoekterm As String

varZoekbereik = Me.lstZoekbereik
varZoekterm = Me.zoekcriterium

Dim strSQL As String
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
strSQL = "SELECT tblClienten." & varZoekbereik & " FROM tblClienten WHERE tblClienten." & varZoekbereik & " LIKE " * " & varZoekterm & " * " "

rs.Open strSQL, CurrentProject.Connection
 
Laatst bewerkt:
Het zou kunnen dat de velden die je ophaalt spaties bevatten, met als gevolg dat je sql niet werkt. Dat kun je zo oplossen:
strSQL = "SELECT tblClienten.[" & varZoekbereik & "] FROM tblClienten WHERE tblClienten.[" & varZoekbereik & "] LIKE " * " & varZoekterm & " * " "
 
Het zou kunnen dat de velden die je ophaalt spaties bevatten, met als gevolg dat je sql niet werkt. Dat kun je zo oplossen:

Ik heb hem zo ook geprobeerd maar ik haal bij die variabele geen velden met een spatie op dat zijn enkel de kolomkoppen en dat zijn enkele woorden. Hij werkt dus ook zo niet ...

Ik kan me echt niet verzinnen waarom hij niet zo werkt hoop dat er nog meer ideeen zijn maar vast wel ! ;)

Gr Sjoerd
 
Je haalt hopelijk wel één veldnaam op met lstZoekbereik; je gebruikt de keuzelijst toch niet voor een meervoudige selectie?
 
Je haalt hopelijk wel één veldnaam op met lstZoekbereik; je gebruikt de keuzelijst toch niet voor een meervoudige selectie?

Nee ik gebruik de keuzelijst om een kolom te selecteren en vervolgens die soort zoekactie uit te voeren met dat LIKE statement. Maar ik krijg wel meerdere resultaten terug en die wil ik laden in een recordset en vervolgens gebruiken als source voor een andere keuzelijst.

Ik kom er nog steeds niet uit nog meer ideeen misschien ?
 
Wat bedoel je met "ik krijg wel meerdere resultaten terug"? Toch hopelijk niet dat je in de keuzelijst tegelijkertijd meerdere velden selecteert? Want dat verklaart het probleem direct...
 
Wat bedoel je met "ik krijg wel meerdere resultaten terug"? Toch hopelijk niet dat je in de keuzelijst tegelijkertijd meerdere velden selecteert? Want dat verklaart het probleem direct...

Euh nee mijn keuzelijst heeft een lijst met waarden waaruit gekozen kan worden. Die waarden hebben dezelfde naam als de kolomkoppen in mijn tabel dus daarom kan ik met de code :

Code:
"SELECT tblClienten.[" & varZoekbereik & "]

een kolom uit de tblClienten selecteren dus bijvoorbeeld tblClienten.Achternaam. Dus mijn keuzelijst geeft maar 1 resultaat en dat is de kolom waarin gezocht wordt. Vervolgens is het volgende deel:

Code:
WHERE tblClienten.[" & varZoekbereik & "] LIKE " * " & varZoekterm & " * " "

Dat kan bijvoorbeeld zijn WHERE tblclienten.Achternaam LIKE aar. Waarbij ik dus resultaten krijg als Verhaar maar ook Ter aar of iets dergelijks.

Maar het probleem is dus dat hij de typen niet overeen vindt komen terwijl alle2 de variabelen maar 1 woord zijn want als ik de uiteindelijk sql uitschrijf met alle variabelen ingevuld krijg ik gewoon :
Code:
strSQL = "SELECT tblClienten.Achternaam FROM tblClienten WHERE tblClienten.Achternaam LIKE aar

Dus ik snap er niet zoveel van eigenlijk..
 
Ok en ik kom er net achter dat :

Code:
strSQL = "SELECT tblClienten.Achternaam FROM tblClienten WHERE tblClienten.Achternaam LIKE " * " & varZoekterm & " * " "

Ook niet werkt dus er is iets mis met mijn Like statement maar wat ?
 
En nog iets raars waarom werkt in een normale query van acces deze code wel :

Code:
SELECT tblClienten.Achternaam, tblClienten.Voorletters
FROM tblClienten
WHERE tblClienten.Achternaam Like "*" & Forms![Fm zoekscherm]!zoekcriterium & "*";

maar in mijn vba deze niet :

Code:
strSQL = "SELECT tblClienten." & varZoekbereik & " FROM tblClienten WHERE tblClienten." & varZoekbereik & " LIKE ""*"" """ & Forms![frmClient]!zoekcriterium & """ ""*"" "

De bovenstaande code geeft in mijn debug schermpje van strSQL overigens dit :

Code:
SELECT tblClienten.Achternaam FROM tblClienten WHERE tblClienten.Achternaam LIKE "*" "hoi" "*"
 
Ik ben al een stukje verder gekomen met alles maar nu is het probleem niet meer dat de types niet overeenkomen maar dat er een operator ontbreekt...

De code die ik nu gebruik in mijn vba is als volgt :
Code:
strSQL = "SELECT tblClienten." & varZoekbereik & " FROM tblClienten WHERE tblClienten." & varZoekbereik & " LIKE ""*"" """ & Forms![frmClient]!zoekcriterium & """ ""*"" "

Daaruit krijg ik in mijn debug window het volgende als ik de variabelen invul :

Code:
SELECT tblClienten.Achternaam FROM tblClienten WHERE tblClienten.Achternaam LIKE "*" "jong" "*"

Maar daarbij krijg ik de melding dat de operator ontbreekt ? Heeft iemand misschien een nieuw idee waarom dat gebeurt ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan