Toon posts:

[vb/sql] query met like % vind geen waarde meer

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dim sSql As String, stLen As Integer, stCaption As String
sSql = "SELECT * FROM overeenkomstgegevens WHERE"
stCaption = "Search Results. "
sSQLOriginal = sSql

If Not IsNull(Me.txtklant) Then
' Search By klant
sSql = sSql & " (((overeenkomstgegevens.klantnaam)like '%[Forms]![frmSearch]![txtklant]%')) AND"
stCaption = stCaption & "klantnaam = " & Me.txtklant & " "
End If

ik probeer om via input in txtklant te zoeken maar wil dat hij niet op preciese waarde zoekt maar wat er op lijkt met 'like' , ik zit er volgens mij dichtbij maar hij vind nog steeds geen waarde als je zoekt op een deel van de klantnaam

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Gebruik eens code-tags.

Heb je al gedebugged? Heb je de query al eens naar het scherm geprint ipv hem uit te voeren, zodat je kan zien wat er aan scheelt?
Is het VBA in Access, of is het echt VB? Indien het VBA is, kan je eens proberen om % te vervangen door *

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je code is erg wazig en ook nog eens zonder code-tags neergeplopt, wat het minder makkelijk te lezen maakt...

Ik haal zo een paar dingen aan die me opvallen in jouw code:
  1. Je like staat vast aan het haakje-sluiten dat ervoor staat
  2. Je SQL-statement eindigt nu met een AND
  3. Je hebt extreem veel haakjes in je SQL. Dat lijkt rechtstreeks geript uit een query builder van Access...... :D
Pas die zaken eens aan en kijk eens wat er dan gebeurt? Overigens is het ook altijd een goed idee om de uiteindelijke SQL eens op beeld te toveren met bijvoorbeeld een msgBox SQL, zodat je ziet of de SQL er ook uitziet zoals je had gehoopt...

edit:
Ik moet mijn antwoorden korter maken om whoami voor te kunnen zijn :+

[ Voor 8% gewijzigd door OZ-Gump op 01-10-2003 10:12 ]

My personal website


Verwijderd

Topicstarter
dit is allemaal gemaakt in acces idd, mijn like heb ik losgemaakt van hekje-sluiten(hielp niet)

ik heb t ook geript uit een query builder van acces omdat je dan eerst de resutaten van de query los kan bekijken maar ook daar werkt hij niet. de sql code is nu zo:

SELECT [overeenkomstgegevens].[Klantnaam]
FROM overeenkomstgegevens
WHERE ((([overeenkomstgegevens].[Klantnaam]) Like '*[Forms]![frmSearch]![txtklant]*'));

Verwijderd

Topicstarter
het sql-statement eindigt met and omdat er nog meer komen, bijvoorbeeld zoeken op beheerder, dit is allemaal wel goed afgesloten

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Is dit exact overgetypt vanaf je scherm? Als dat namelijk het geval is lijkt het me dat je het geheel aan moet passen om ervoor te zorgen dat je de waarde van de textbox in je query zet, en niet de naam ervan :D

Zoiets dus:
SQL:
1
2
sSql = sSql & " (((overeenkomstgegevens.klantnaam)
       like '%" & [Forms]![frmSearch]![txtklant] & "%'))"

[ Voor 26% gewijzigd door OZ-Gump op 01-10-2003 10:24 ]

My personal website


Verwijderd

Topicstarter
sSql = sSql & " (((overeenkomstgegevens.klantnaam)
=[Forms]![frmSearch]![txtklant] ))"

dit werkt perfect alleen zoekt ie dan alleen op de exacte waarde van txtklant, ik wil dus dat ie op een deel zoekt

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Volgens mij kun je in een like geen dynamische verwijzing naar een veld op een form maken. Probeer nou voor de grap (al is het alleen maar voor mij ;)) de code eens uit die ik in mijn laatste post heb gekinkeld...

Wat maken die paar "'s en &'en nou uit... :p

[ Voor 11% gewijzigd door OZ-Gump op 01-10-2003 10:36 ]

My personal website


Verwijderd

Topicstarter
helaas krijg ik daarmee geen resultaat :)

maar je kan toch wel op een deel van de klantnaam zoeken bijvoorbeeld "klaas jansen" en je zoekt dan op "klaas" dan moet ie die dus vinden, lijkt me dus sterk dat een like geen dynamische verwijzing naar een veld aankan

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Tuurlijk kan dat. Maar als je een string aanmaakt die je als query wilt gaan gebruiken, bedoel ik dat je in die string dan ook wel echt klaas moet zetten bij de Like, en niet een verwijzing naar een textbox waar klaas in staat. Dat bedoelde ik als dynamische verwijzing. Ik weet overigens niet of dat zo is hoor... :+

Als je nu nog steeds geen resultaten krijgt is er (dus) iets anders mis. Heb je de query al eens uitgevoerd in de query builder van Access? Krijg je dan wel een resultaat? Gebruik je een wildcard die toestaat dat bijvoorbeeld de eerste wildcard leeg is?
(daarmee bedoel ik: als je in dos zoekt naar een bestand met .? mag de extensie maar 1 karakter zijn. Als je zoekt op .* is het alles met een extensie)
Heb je al eens gezocht op bijvoorbeeld jans in plaats van op klaas?

My personal website


Verwijderd

Topicstarter
ik snap nu wat je bedoelt met de dynamische verwijzing.

als het tussen * of % staat maakt t toch niet uit hoe lang de waarde is, dus ik zie het nut van een wildcard hier niet helemaal

in de query builder van acces is het resultaat ook niks.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

in de query builder van acces is het resultaat ook niks.
Gebruik je daar een handmatig ingetypte waarde, of heb je daar ook een verwijzing naar dat textboxje op een form staan? En als je de where weghaalt, krijg je dan wel antwoord? Welke where's heb je nog meer in je query zitten (en zijn die allemaal correct?)

Overigens bedoelde ik dat ik niet zeker wist of *Klaas* ook Klaas Janssen zou retourneren. Maar dat is wel zo (net geprobeerd).

Datgene wat je wilt kan. Redelijk eenvoudig zelfs. De vraag is alleen waar het nu fout gaat, en dat is dus eigenlijk gewoon debuggen. Met de (beperkte) hoeveelheid info die jij geeft wordt dat erg moeilijk op afstand, dus dat zul je zelf moeten doen.

My personal website


Verwijderd

Topicstarter
met vaste wildcard dus klantnaam like '*k%*' werkt het wel idd

blijkbaar kan like dan toch geen dynamisch veld aan maar hoe los je dit dan op/of maak je zon zoekfunctie

[ Voor 51% gewijzigd door Verwijderd op 01-10-2003 14:46 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Ik zou deze kant in gaan denken:
SQL:
1
2
sSql = sSql & " (((overeenkomstgegevens.klantnaam)
       like '*" & [Forms]![frmSearch]![txtklant] & "*'))"
[/quote]Eventueel kun je er nog voor kiezen om achter het veld een .text of een .value te plaatsen, zodat je zeker weet dat die waarde ook genomen wordt.

Andere optie is om de waarde van de textbox in een aparte variabele te zetten en de waarde hiervan door middel van "begin SQL " & VARIABELENAAM & " rest van SQL" in je SQL-string te proppen.

My personal website


Verwijderd

Topicstarter
dat was m thnx Oz-Gump , ik heb m met jou hulp toch aan de praat gekregen

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

:*)

Good luck verder ;)

My personal website

Pagina: 1