[ saladinche @ 28.11.2017. 17:02 ] @
Pozdrav svima,
Koristim Delphi 2010 i firebird 2.5 bazu podataka.
Za kreiranje baze sam koristio IBExpert.
U jednoj od tabela u bazi imam polje datum kome sam dodao tip DATE.

Sada pokusavam da u Delphiju napravim akciju po kojoj ce mi izlistati vrednosti samo od datuma koji izaberem u DateTomePicker ali mi to nikako ne uspeva.
Stalno mi javlja jednu istu gresku: "invalid token. dynamic sql error. sql error code 104" a evo i kako izgleda code:

UnosUgovori.Active:= false;
UnosUgovori.SQLs.SelectSQL.Text:= 'Select * from Ugovori WHERE (UGOVORI.DATUM) =' + DateToStr(DateTimePicker1.Date);
UnosUgovori.Active:= true;

Ako stavim uslov Select * from Ugovori WHERE UGOVORI.DATUM = CURRENT_DATE onda radi kako treba, ali meni treba da odaberem datum za koji cemi prikazivati podatke.

Nadam se da sam bio jasam sa problemom pa ako neko moze da pomogne neka javi
Hvala...
[ Predrag Supurovic @ 28.11.2017. 17:09 ] @
Najverovatnije ti format datuma nije dobar.
[ saladinche @ 28.11.2017. 17:12 ] @
I ja mislim da je to, ali ne mogu nikakvu gresku da nadjem.
Isti je format datuma, i u bazi i u delphiju (dd.mm.yyyy), shotrdate...
[ djoka_l @ 28.11.2017. 17:37 ] @
Prvo, tako se ne radi (SQL Injection).
Drugo, datum mora da bude uokviren znacima navoda u upitu.
[ saladinche @ 28.11.2017. 17:48 ] @
Ne treba mi odredjeni datum, vec mi treba da mi izdvoji samo vrednosti koje sadrže datum koji je izabran u DateTimePicker-u
Ovo radi ako umesto datuma stavim CURRENT_DATE, ali mi ne trbea to nego ovo što pitam.
Druže, ja da znam kako da treba ne bi pitao...
Hvala u svakom slučaju.
[ savkic @ 28.11.2017. 17:50 ] @
Firebird koristi odredjene fiksne formate datuma, pogledaj https://firebirdsql.org/en/firebird-date-literals/ za detalje.
Za tvoj slucaj najbolje da koristis parametrizovane kverije gde datum navodis kao datum, npr:

Code:

  qry.Sql := 'select * from TableA where DateField >= :FromDate';
  qry.Prepare;
  qry.Params[0].AsDateTime := Now;
  qry.ExecSql;


Ako hoces dosadasnji pristup onda koristi FormatDateTime umesto DateToStr, npr FormatDateTime('DD.MM.YYYY', Date);

[ saladinche @ 28.11.2017. 18:00 ] @
Suština je u tome da mi u tabeli izlista samo vrednosti za datume koje ja odaberem, a to biram u DateTimePicker.
FormatDateTime('DD.MM.YYYY', Date) - ovo mi daje istu gresku a i svakako ne mogu da biram datum :(
[ djoka_l @ 28.11.2017. 18:17 ] @
Ajde, sada lepo ponovo pročitaj šta sam ti ja napisao i šta ti je savkic napisao.

Ako ti i posle toga nije jasno, ispiši sadržaj
UnosUgovori.SQLs.SelectSQL.Text
pa vidi da li ti je datum uokviren jednostrukim znacima navoda.

Pa onda probaj da umesto Now u
qry.Params[0].AsDateTime := Now;

staviš sadržaj
DateTimePicker1.Date
[ saladinche @ 28.11.2017. 19:30 ] @
Umesto AdoQuery koristim FIBPlus i tu mi nema ExecSQL

Proradilo je, evo kako:
UnosUgovori.Active:= false;
UnosUgovori.SQLs.SelectSQL.Text := 'select * from ugovori where DATUM = :FromDate';
UnosUgovori.Prepare;
UnosUgovori.Params[0].AsDateTime := DateTimePicker1.Date;
UnosUgovori.Active:= true;;


[Ovu poruku je menjao saladinche dana 28.11.2017. u 20:47 GMT+1]
[ captPicard @ 30.11.2017. 14:04 ] @
napravi

Code (delphi):
ShowMessage(UnosUgovori.SelectSQL.Text)


i napiši ovdje rezultat
[ captPicard @ 30.11.2017. 14:05 ] @
A ovo bi moglo ovako ali nemoj tako neko korsiti parametre.

Code (delphi):
UnosUgovori.SQLs.SelectSQL.Text:= 'Select * from Ugovori WHERE (UGOVORI.DATUM) =' + QuotedStr(DateToStr(DateTimePicker1.Date));
[ saladinche @ 02.12.2017. 07:26 ] @
Probao sam ovo ali ne radi.
Code koji sam gore napisao radi super, a ovo sam prvi put pokusao.
Hvala

Citat:
captPicard: A ovo bi moglo ovako ali nemoj tako neko korsiti parametre.

Code (delphi):
UnosUgovori.SQLs.SelectSQL.Text:= 'Select * from Ugovori WHERE (UGOVORI.DATUM) =' + QuotedStr(DateToStr(DateTimePicker1.Date));