Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 16 odgovora
  • 6.339 pregleda

Najnovija ↓

SQL datum i parametar 23.04.2006. u 00:39 · pre 249 meseci #1
Ovo dole ne radi, uz poruku da konverzija nije moguća:
Code:

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (DATUM > (CURRENT_DATE - :BROJDANA));');
ClientDataSet1.FetchParams;
ClientDataSet1.Params.ParamByName('BROJDANA').AsInteger := 5; 

Ovako na primjer radi, kad nema parametra:
Code:

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (DATUM > (CURRENT_DATE - 5));');

Znači, želim nešto da dobijem što se desilo unazad x-dana, u odnosu na tekući datum na serveru.
Znam kako da ovo uradim zaobilaznim putem (prvo dobijem CURRENT_DATE sa servera, oduzmem željeni broj dana,
pa zatim to predajem kao jedan drugi parametar). Ali me interesuje da li se može to uraditi na gornji način.
Re: SQL datum i parametar 23.04.2006. u 10:07 · pre 249 meseci #3
Hvala na odgovoru, ali ne pomaže.
Probao sam razne varijante, za AsString, AsInteger, Value i drugo izbaci grešku:
'Database Server Error: conversion error from string "5"'

Baza je Firebird 1.5.2, ali ipak mislim da bi u Delphi kodu ovo trebalo riješiti, da pravilno prepozna parametar...
(ili u SQL upitu ???)
Re: SQL datum i parametar 23.04.2006. u 11:40 · pre 249 meseci #5
Citat:
Strog: Stavi value, ali stavi da ti bude .Value := '5'.

Isto se dešava, ista poruka... Ako si to uspio riješiti kod sebe, daj molim te kompletan kod,
kompletan upit.
Stvarno ću ti biti zahvalan.
Re: SQL datum i parametar 23.04.2006. u 11:53 · pre 249 meseci
izmenjeno 1 put, poslednji put Strog 23.04.2006. u 11:54
  1. Strog23.04.2006. u 11:54zapis iz teksta poruke
#6
Nisam probavao kod sebe, nego sam mislio da ce raditi kako treba :)... E onda probaj ovako:

Code:
begin
var Datum: TDate;
    ......
begin
  .......
  .......
  Datum:= Date - 5;

  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (DATUM > (Datum));'); 

  .......  

i trebalo bi da radi, ako ti onaj drugi slucaj radi...

Nisam ni ovo isprobao, pisem iz glave, ali bi trebalo da radi. Ako ne proradi reci pa cu da probam bas u Delphiju :).
Potpis
ex Strog

http://www.zeussoftware.rs
Re: SQL datum i parametar 23.04.2006. u 12:19 · pre 249 meseci #7
@Strog
Već sam u prvoj poruci napomenuo da mogu da to uradim na način sličan ovom tvom,
s tim da Date u kodu :
Code:
 Datum:= Date - 5; 

daje tekući datum na klijentskom računaru (koji može biti pogrešno postavljen),
a ne na serveru gdje se nalazi baza, što onda ne odgovara...
Može se posebnim upitom dobiti taj datum na serveru, pa oduzeti potreban broj dana,
pa zatim to proslijediti kao parametar u upitu... i to radi.
Čini mi se ipak da bi to moglo da se uradi u jednom upitu, npr. slično tome ovo radi:
Code:
 
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (BROJ3 > (BROJ2 - :BROJ1));');
ClientDataSet1.FetchParams;
ClientDataSet1.Params.ParamByName('BROJ1').AsInteger := 5; 

gdje su BROJ3 i BROJ2 definisani u bazi kao Integer.
Re: SQL datum i parametar 23.04.2006. u 12:34 · pre 249 meseci #8
Da, vidis, nisam ni isao za tim da ono vraca vreme na serveru. Sry, moja greska. Pa ako nista uradio to kao sto si i sam rekao jos jednim upitom koji bi prvo povukao datum sa servera pa onda racunaj onaj datum koji ti treba, mada stvarno ne vidim zasto ono resenje iz jednog upita ne radi...
Potpis
ex Strog

http://www.zeussoftware.rs
Re: SQL datum i parametar 23.04.2006. u 12:53 · pre 249 meseci #9
Probaću još malo kasnije da ovo riješim... možda i malo sutra :-)
Da ne budem naporan, ali iz ovakvih primjera se dosta i nauči, kasnije bude manje glavobolje :)
Sve mi se čini da je tu nekakva caka oko oduzimanja datuma i broja, možda upotreba CAST...
Ako šta riješim, javiću...
Re: SQL datum i parametar 23.04.2006. u 21:39 · pre 249 meseci #10
Mislim da si ti podesio da ti je parametar tipa string. Delphi metod .asinteger pretvara broj u string i u upit umjesto 5 ubacuje '5'. Trebas promijeniti tip parametra u integer.
Re: SQL datum i parametar 24.04.2006. u 12:22 · pre 249 meseci
izmenjeno 1 put, poslednji put Strog 24.04.2006. u 12:24
  1. Strog24.04.2006. u 12:24zapis iz teksta poruke
#11
U jeee, stvarno. Pa covece, ja nisam ni gledao sta pisem kad sam prvi put govorio kako da uradi upit :D... Ajde probaj da uradis ovako:

Code:
Parameters.ParamByName('BROJ1').Value:= 5


Probaj pa javi :D...
Potpis
ex Strog

http://www.zeussoftware.rs
Re: SQL datum i parametar 24.04.2006. u 14:40 · pre 249 meseci #12
Izgleda da smo sve pomiješali, ovo dole ne radi i to treba rješavati:
Code:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (DATUM > (CURRENT_DATE - :BROJDANA));');
ClientDataSet1.FetchParams;
ClientDataSet1.Params.ParamByName('BROJDANA').AsInteger := 5; 

dok je onaj primjer samo sa brojevima dat kao sličan (a nepotreban) i on radi.
Probao sam sve varijante u gornjem primjeru: AsString, AsInteger, Value..., '5', 5...
i dobijam uvijek istu grešku.
Re: SQL datum i parametar 24.04.2006. u 15:33 · pre 249 meseci #13
A cekaj malo... A zasto taj parametar ne koristis na SQLQuery1? Recimo:
Code:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (DATUM > (CURRENT_DATE - :BROJDANA));');
SQLQuery1.Params.ParamByName('BROJDANA').Value:= 5;


Ajde probaj tako, pa opet javi sta je bilo :D...
Potpis
ex Strog

http://www.zeussoftware.rs
Re: SQL datum i parametar 24.04.2006. u 16:07 · pre 249 meseci #14
Hvala svima na upornosti,
molio bih još nekog ko koristi nekakvu drugu bazu da proba onaj upit...
Ovo:
Citat:
Strog: A cekaj malo... A zasto taj parametar ne koristis na SQLQuery1? Recimo:
Code:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM NEKA_TABELA WHERE (DATUM > (CURRENT_DATE - :BROJDANA));');
SQLQuery1.Params.ParamByName('BROJDANA').Value:= 5;

a i ovo:
Citat:
Almedin: Mislim da si ti podesio da ti je parametar tipa string. Delphi metod .asinteger pretvara broj u string i u upit umjesto 5 ubacuje '5'. Trebas promijeniti tip parametra u integer.

se jednostavno može isprobati preko Object Inspector-a, pri dizajniranju, za TSQLQuery
unese se upit, a onda se Active postavlja na True (i dobijam poruku o grešci),
može se lako probati sa parametrom i mijenjati DataType (ftString, ftInteger...) kad se
ubaci Value npr. 5.
Hoću reći da sam svašta probao, ali izgleda da to ne može tako da prođe... ili ja nesto ocigledno ne vidim?
Zato bih i želio znati da li ovo prolazi sa nekom drugom bazom.
Re: SQL datum i parametar 24.04.2006. u 16:39 · pre 249 meseci #15
Ovo sto sam ti poslednje napisao ja koristim vec duze vreme u dosta programa i prolazi bez problema sa ADOQuery-em ( tj. ADO komponentama uopste :) ) i Access bazom, zato sam ti i napisao tako da probas...
Potpis
ex Strog

http://www.zeussoftware.rs
Re: SQL datum i parametar 24.04.2006. u 22:48 · pre 249 meseci #16
sa dbase tabelom prolazi ovaj upit

select * from TEST where (DATUM > (datum - :BROJDANA))

jest da je nelogican ali BDE ne poznaje CURRENT_DATE
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme