Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

IB D2007 i greska u SQL upitu

[es] :: Pascal / Delphi / Kylix :: IB D2007 i greska u SQL upitu

[ Pregleda: 2452 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

prginfo
NS

Član broj: 174814
Poruke: 133
*.adsl.eunet.rs.



+1 Profil

icon IB D2007 i greska u SQL upitu03.11.2009. u 13:31 - pre 176 meseci
Koristim D2007 i kacim se sa njom na .GDB bazu
Kacenje je OK (podaci mi izlaze u DBGridu i sve je normalno povezano).

Kada zelim da radim upit imam sledeci problem:

upit:

begin
with QUERY do
begin
Close;
SQL.Clear;
SQL.Add('select * from TABELA');
SQL.Add('where POLJE like');
SQL.Add(QuotedStr(ANsiUpperCase(EDIT.Text)));
SQL.Add('%');
Prepare;
Open;
end;
TABELA.Locate('POLJE', QUERYPOLJE.Value,[]);
end;

Upit mi puca na delu

SQL.Add('%');

tj. kada uradim Open

javi mi sledecu gresku:

Dinamic SQl error.... SQL code=-104
Token unknown - line 4,column 1
%'.

Ovo mi radi na verziji Delphi 7.

U cemu je problem, gde gresim?

Hvala
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
*.datalab.si.

ICQ: 174153511


+26 Profil

icon Re: IB D2007 i greska u SQL upitu03.11.2009. u 13:42 - pre 176 meseci
Code:

with QUERY do begin
  Close;
  SQL.Text := 'select * from TABELA'+#13+
              'where POLJE like '''+AnsiUpperCase(EDIT.Text)+'%''';
  Prepare;
  Open;
end;
 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.adsl.eunet.rs.



+1 Profil

icon Re: IB D2007 i greska u SQL upitu03.11.2009. u 14:01 - pre 176 meseci
Sada mi radi pretraga.

Gde je bila greska, sta je razlika?

Javlja mi se drugi problem.

Kada radim takvu pretragu, u gridu bi trebali da mi se prikazuju samo podaci koji zadovoljavaju uslov. Medjutim, ovde se prikazuje mnogo vise podataka.

Hvala.
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.dynamic.sbb.rs.



+6 Profil

icon Re: IB D2007 i greska u SQL upitu03.11.2009. u 14:20 - pre 176 meseci
Greška je bila u tome što ti je znak % bio izvan navodnika gde se nalazi tekst za pretragu iz EDIT polja.

Ispravljeni deo tvog koda glasi:

SQL.Add(QuotedStr(ANsiUpperCase(EDIT.Text) + '%'));

Dakle, kada hoćeš da preko SQL upita prikažeš podatke gde sadržaj određenog polja počinje sa zadatim tekstom, onda u nastavku tog teksta dodaš znak %. U tvom primeru, pošto se tekst koji se traži nalazi u Edit polju, i pošto koristiš funkciju QuotedStr koja taj tekst stavlja pod apostrofe, onda moraš da % dodaš u okviru tih apostrofa, ne posle njih. Tu je bila tvoja greška, znak % se nalazio u sledećem redu, posle apostrofa.

Kada god imaš problem sa "dinamičkim" SQL upitima, odmah iza upita stavi jedan MessageBox kojim ćeš da prikažeš kompletan tekst upita na ekranu. Tako možeš da vidiš šta će se tačno izvršiti i da otkriješ eventualne greške. Ja takođe koristim neki eksterni program u kome napišem kompletan upit koji radi, pa ga onda u Delphi samo postavim na pravo mesto i "zaokružim" adekvatnim kodom. Za Interbase/Firebird je dobar i jednostavan za korišćenje IBExprert.

Inače, umesto ovakve konstrukcije (u kojoj direktno "dopisuješ" sadržaj SQL upita iz Edit polja) bolje je i pravilnije da koristiš parametre. Za pomoć oko toga, potraži malo ovde na forumu, već je bilo takvih tema, pogledaj malo po Delphi Helpu ili, u krajnjem slučaju, pitaj.
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: IB D2007 i greska u SQL upitu03.11.2009. u 16:59 - pre 175 meseci
> Koristim D2007 i kacim se sa njom na .GDB bazu

Koji Windows imaš i koji interbase koristiš? Nije preporučljivo koristiti gdb ekstenziju, bolje uzmi .ib, .fb i slično.

> Kada radim takvu pretragu, u gridu bi trebali da mi se prikazuju samo podaci koji zadovoljavaju uslov. Medjutim, ovde se prikazuje mnogo vise podataka.

Server je sasvim sigurno dobro izvršio upit, pokaži tačan tekst upita i nekoliko primera podataka koji se vide a ne bi trebali da budu tu.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: IB D2007 i greska u SQL upitu

[ Pregleda: 2452 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.