[ Johny4FUN @ 14.09.2005. 18:54 ] @
Uffff, sto mrzim kad mi ne radi nesto sto bi trebalo da radi.

Povezao sam bazu u MS SQL 2005 kroz Delphi 2005, preko ADO konekcije isve f-onise odlicno, ali kada sam na novoj formi hteo da pretrazujem bazu preko ADOQuery-ja prosta f-ja mi ne radi.

Imam po jedan Edit box za svaki Column i hteo bi da kad unesem podatke u boxeve po kojima hocu da pretrazujem dobijem odgovor u DBGrid-u.

kada recimo stavim f-ju za dugme:

Code:

begin
  with ADOQuery1 do begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT Ime, Prezime FROM Studenti');
    open;
end;

sve radi savrseno, i izbaci mi te dve kolone koje sam potrazio...
ali, kada dodam opciju WHERE nikako nece da radi
Code:

begin
  with ADOQuery1 do begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM Studenti WHERE Ime = "Nikola"');
    open;
end;


Onda mi izbacuje greske tipa invalid column name Nikola....
Probao sam sve zive kombinacije i sa LIKE i Svim zivim navodnicima i bez njih....

Znaci kako ide ispravan kod za ovakvo pretrazivanje, da mi na primer na dugme izbaci sve recorde sa imenom Nikola u koloni "Ime" , a potom da vidimo kako bi bilo da korisnici pretrazuju preko Edit boxova, po jedan za svaku kolonu.
[ marcha @ 14.09.2005. 19:40 ] @

Probaj ovako.

Code:

begin
  with ADOQuery1 do begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM Studenti WHERE Ime ='+QuotedStr('Nikola'));
    open;
end;
[ Johny4FUN @ 14.09.2005. 22:55 ] @
Toooo Kralju........... to je falilo.

Pa sam onda umesto fiksne reci ubacio sam edit1.text i to radi savrseno.

E sad kako bi bilo najbolje da se povezu 7 edit boxeva sa 7 kolona. Da li da se koristi komanda OR, AND ili nesto slicno. Kako bi bilo najbolje iz vaseg iskustva. Da li da se ubacuju wildcards "%" ispred i iza edit box-eva. Ili da se ubaci mozda neki combobox za odabir tacne pretrage, ili pretrage sa %edit1.text%. I naravno treba da stavim da ako se neko polje ne popuni, da ga ne uzima u obzir.

[ Riste Pejov @ 15.09.2005. 10:50 ] @
To sto ti marcha nije rekao, je da ovaj string:
SELECT * FROM Studenti WHERE Ime = "Nikola"

nije validan TSQL statement u SQL serveru. Kod SQL standard delimiter za string jedinacni navod (') a ne dupli (").

samo si trebao
Code:

begin
  with ADOQuery1 do begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM Studenti WHERE Ime = ''Nikola'' ');
    open;
end;


Uz put, pre nego sto predjes na implementaciju u delphi, prvo fino istestiraj SQL statemente preko Query Analyzera, proveri execution plan, indexe ... itn ...