Toon posts:

[delphi] zoeken met like in ACCES db

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een programma, en daar zit dus een optie in om wat te zoeken met een EDIT Inputveld, waarna hij op de db een query uitvoert, hieronder de query

code:
1
2
3
4
5
6
7
With Form5.ADOQuery1 do
  begin
    If active then close;
    SQL.Clear;
    SQL.Add('SELECT id, voornaam, achternaam FROM leerlingen WHERE (voornaam LIKE ''*m*'' OR achternaam LIKE ''*v*'') AND actief = 1 ORDER BY voornaam, achternaam ASC');
    Open;
  end;


Nou hij geeft dus geen error of iets dergelijks, en in ACCES werkt de Query wel, maar met mijn proggie dus niet... Waar kan het aan liggen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Gebruik in je proggie eens % wildcard tekens ipv die * -tjes.

https://fgheysels.github.io/


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
*-tjes lukken ook wel in acces, sterker nog: ik denk dat % niet zal lukken.
Maar ik zie dat je LIKE ' ' *m* ' ' doet.

Volgens mij staan er quotes teveel ...

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

Topicstarter
whoami schreef op 11 June 2003 @ 19:13:
Gebruik in je proggie eens % wildcard tekens ipv die * -tjes.
Ja dat was het dus! In Acces paktie % niet!! Maar met delphi kennelijk wel!! BEDANKT! _/-\o_

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Feyd-Rautha schreef op 11 June 2003 @ 19:20:
*-tjes lukken ook wel in acces, sterker nog: ik denk dat % niet zal lukken.
Maar ik zie dat je LIKE ' ' *m* ' ' doet.

Volgens mij staan er quotes teveel ...
Access zelf verwacht wel *'tjes ja, maar het ANSI wildcard character is wel %. De driver zal dus ook wel een % verwachten en die omzetten naar een *.

Trouwens, ivm met die quotes:
Het is beter en mooier als je parameters gebruikt in je query. Dan hoef je je niet bezig te houden met het escapen van die quotes enzo:

code:
1
2
3
Query1.SQL.Add ('SELECT * FROM tabel WHERE naam = :p_naam');
Query1.ParamByName ('p_naam').AsString := 'F%';
Query1.Open();


Trouwens, als je een like doet zoals jij dat doet (met wildcards voor), kan dat zeer slecht zijn voor je performance. Ik geloof niet dat de databank dan in staat is om indexen te gaan gebruiken.

[ Voor 38% gewijzigd door whoami op 11-06-2003 19:29 ]

https://fgheysels.github.io/