Toon posts:

[sql/delphi] sql in delphi probje.....

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een formulier aan het maken in delphi en daar wil ik op drie criteria kunnen filteren via invoervelden.
code:
1
2
3
SELECT * FROM produkten
WHERE ProdPrijs>=:onder AND ProdPrijs<=:boven
AND ProdNaam=:naam

Afbeeldingslocatie: http://members.home.nl/jooper/delphi.gif

Het opgeven van de prijs in de eerste twee invoervelden werkt. Nu wil ik dat ik samen met de opgegeven prijsrange de naam óf een gedeelte van de naam kan opgeven als extra criterium.

De gehele naam krijg ik wel voor elkaar (zie sql-code) maar hoe doe ik dat voor een gedeelte van de naam?

Ik dacht zelf aan de like operator in combi met de %, maar dit krijg ik niet voor elkaar.....

Kan iemand me daar bij helpen?

Verwijderd

zoiets als

query1.sql.add("SELECT * FROM produkten WHERE ProdPrijs>=:onder AND ProdPrijs<=:boven
AND ProdNaam like %"+edit1.text+"%");

waar edit1.text de editbox met de naam die je wilt invullen.

Verwijderd

Topicstarter
mmm, maar hoe pas ik dat in in mijn code van de unit.
Achter de button "voer prijsquery uit" zit de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='' then
else
  if Edit2.Text='' then
  else
    if Edit3.Text='' then
    else
    begin
    Query1.Close;
    Query1.Params[0].AsInteger:=StrToInt(Edit1.Text);
    Query1.Params[1].AsInteger:=StrToInt(Edit2.Text);
    Query1.Params[2].AsString:=Edit3.Text;
    Query1.Open;
    end;
end;

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Vreemde if-then constructie, kan korter met AND en <> ''.

Maar voeg gewoon een extra parameter toe voor die LIKE.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
Maar voeg gewoon een extra parameter toe voor die LIKE.
kun je daar iets specifieker in zijn?

Verwijderd

dit misschien?:

procedure TForm1.Button1Click(Sender: TObject);
begin

if (edit1.text<>'') and (edit2.text<>'') and (edit3.text<>'') then
begin
query1.close;
query1.sql.clear;
query1.sql.add("select * from producten where prodprijs>="+edit1.text+" and prodprijs<="+edit2.text+" and prodnaam like '%"+edit3.text+"%'");
query1.open;
end;

end;

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op dinsdag 12 maart 2002 10:02 schreef mrjooper het volgende:

[..]

kun je daar iets specifieker in zijn?
Ja, dat kan ik. :)











































 



 


 
Oooo, je wilt ook nog weten hoe?? :P

Query:
code:
1
2
3
SELECT * FROM produkten
WHERE ProdPrijs >= :Onder AND ProdPrijs <= :Boven
AND ProdNaam LIKE %:Naam%

Procedure:
code:
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
    begin
    Query1.Close;
    Query1.Params.ParamByName('Onder').AsInteger:=StrToInt(Edit1.Text);
    Query1.Params.ParamByName('Boven').AsInteger:=StrToInt(Edit2.Text);
    Query1.ParamByName('Naam').AsString:=Edit3.Text;
    Query1.Open;
    end;
end;

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
yups *D
dat werkt, thnx everybody
Pagina: 1