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

SQL datum i parametar

[es] :: Pascal / Delphi / Kylix :: SQL datum i parametar

[ Pregleda: 3533 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon SQL datum i parametar22.04.2006. u 23:39 - pre 204 meseci
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.
 
Odgovor na temu

martinj
Martin Jeremic
Nis

Član broj: 39299
Poruke: 86
*.smin.sezampro.yu.

Sajt: www.onedevteam.com


+2 Profil

icon Re: SQL datum i parametar23.04.2006. u 00:32 - pre 204 meseci
Probaj da umesto .AsInteger koristis .Value...
Koja je baza?
Da li ti program izbacuje neku gresku i ako izbacuje, koju?
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: SQL datum i parametar23.04.2006. u 09:07 - pre 204 meseci
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 ???)
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: SQL datum i parametar23.04.2006. u 09:51 - pre 204 meseci
Stavi value, ali stavi da ti bude .Value := '5'.

Probaj pa javi .
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: SQL datum i parametar23.04.2006. u 10:40 - pre 204 meseci
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.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: SQL datum i parametar23.04.2006. u 10:53 - pre 204 meseci
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 .

[Ovu poruku je menjao Strog dana 23.04.2006. u 11:54 GMT+1]
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: SQL datum i parametar23.04.2006. u 11:19 - pre 204 meseci
@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.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: SQL datum i parametar23.04.2006. u 11:34 - pre 204 meseci
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...
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: SQL datum i parametar23.04.2006. u 11:53 - pre 204 meseci
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...
 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 425
*.dlp300.bih.net.ba.



+27 Profil

icon Re: SQL datum i parametar23.04.2006. u 20:39 - pre 204 meseci
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.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: SQL datum i parametar24.04.2006. u 11:22 - pre 204 meseci
U jeee, stvarno. Pa covece, ja nisam ni gledao sta pisem kad sam prvi put govorio kako da uradi upit ... Ajde probaj da uradis ovako:

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


Probaj pa javi ...

[Ovu poruku je menjao Strog dana 24.04.2006. u 12:24 GMT+1]
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: SQL datum i parametar24.04.2006. u 13:40 - pre 204 meseci
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.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: SQL datum i parametar24.04.2006. u 14:33 - pre 204 meseci
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 ...
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: SQL datum i parametar24.04.2006. u 15:07 - pre 204 meseci
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.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: SQL datum i parametar24.04.2006. u 15:39 - pre 204 meseci
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...
 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 425
*.dlp53.bih.net.ba.



+27 Profil

icon Re: SQL datum i parametar24.04.2006. u 21:48 - pre 204 meseci
sa dbase tabelom prolazi ovaj upit

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

jest da je nelogican ali BDE ne poznaje CURRENT_DATE
 
Odgovor na temu

semiconductor

Član broj: 87235
Poruke: 147
195.252.86.*



+1 Profil

icon Re: SQL datum i parametar06.05.2006. u 00:46 - pre 204 meseci
Ja ili ne razumem ili je nesto drugo u pitanju...
Jednostavno skini datum sa servera pa oduzmi...

Zasto prosto kad moze komplikovano?
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: SQL datum i parametar

[ Pregleda: 3533 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

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