[ lan-mi @ 08.11.2009. 22:40 ] @
| Polje je u tabeli u formatu npr. '27.10.2009 11:30:00'
Odredjeni datum lako isfiltriram sa:
adoQuery.SQL.Text:= 'SELECT * FROM TABELA'+
'WHERE TABELA.DATUM like '+''''+datetostr(now)+'%''';
Kako najjednostavnije da isfiltriram sve datume manje od odredjenog datuma?
|
[ savkic @ 08.11.2009. 23:46 ] @
> Kako najjednostavnije da isfiltriram sve datume manje od odredjenog datuma?
WHERE DATUM < 01.01.2009
[ priki @ 09.11.2009. 08:40 ] @
koristiš ADO koliko vidim,
verovatno ćeš morati konvertovati datum
[ lan-mi @ 09.11.2009. 14:40 ] @
Pre nego sto sam se javio za pomoc, probao sam sve moguce kombinacije:
adoQuery2.SQL.Text:= 'SELECT * FROM TABELA '+
'WHERE TABELA.DATUM< '+''''+FormatDatetime('dd.mm.yyyy hh:nn:ss',now)+'''';
.. i sve varijacije formatiranja datuma, uvek izbaci gresku "Data type mismatch in criteria expression ". Ne znam u cemu gresim:(
[ stankons @ 09.11.2009. 14:44 ] @
Napravi upit u bazi, koju koristiš, i posle preseli isti format datuma u Delphi... Pokušaj tako... Ako ne bude išlo, reci nam koja baza je u pitanju, i daj nam upit koji ti radi u bazi.
[ savkic @ 09.11.2009. 14:51 ] @
> Pre nego sto sam se javio za pomoc, probao sam sve moguce kombinacije:
> . i sve varijacije formatiranja datuma, uvek izbaci gresku "Data type mismatch in criteria expression ". Ne znam u cemu gresim:(
Moraš saznati u kom formatu ta baza očekuje datum (YYYY-MM-DD; DD-MMM-YYYY; DD/MM/YY itd.)
Ili još lakše koristi parametre:
Query.Sql := 'SELECT * FROM TABELA WHERE DATUM < :Date';
Query.Prepare;
Query.Parmas[0].AsDateTime := Now;
Query.Open;
[ priki @ 09.11.2009. 15:08 ] @
nisam siguran ali mislim da će zbog drajvera za ADO najbolje rešenje biti SQL
Code:
SELECT * FROM TABELA WHERE DATUM < CONVERT(VARCHAR(10), <datum>, 104)
[ lan-mi @ 09.11.2009. 15:18 ] @
Upit pri startu programa koji radi OK:
adoquery.SQL.Text:='SELECT * FROM TABELA ORDER BY DATUM DESC'
Ovakav upit sortira podatke po datumu i vremenu.
Baza je Access *.mdb, komponente standardne TADOQuery i TAdoConnection,delphi 2009
[ lan-mi @ 09.11.2009. 15:20 ] @
Ovo sa parametrima mi ne ide bas iz prve. Probaću..
[ lan-mi @ 09.11.2009. 15:37 ] @
Probao sam ovako iako ne razumem upit:
adoQuery2.SQL.Text:='SELECT * FROM TABLE WHERE DATUM < CONVERT(VARCHAR(10), NOW(), 104)';
"Undefined function 'CONVERT' in expression" greška.
[ priki @ 09.11.2009. 16:00 ] @
Access mislim da ne pozna CONVERT
[ stankons @ 09.11.2009. 16:31 ] @
Access je malo striktan po određenim pitanjima, upit, mislim, mora da izgleda tačno ovako:
Code:
SELECT Table1.test
FROM Table1
WHERE (((Table1.test)=#11/11/2009#));
Znači, uslov za datum mora da bude tačno u datom obliku, nisam probao iz Delphi - a, trenutno, pretpostavljam da kad bi "ručno" kreirao SQL upit i ubacio ga u query da bi skoro sigurno radilo, ali preko parametara, nisam siguran kako...
[ lan-mi @ 09.11.2009. 18:30 ] @
Hm..
Kada upit postavim:
adoQuery2.SQL.Text:='SELECT * FROM TABELA WHERE DATUM < NOW()';
..radi.
Evo još jedan primer kada upit lepo radi, filtrirani su svi datumi manji od danasnjeg:
adoQuery2.SQL.Text:='SELECT * FROM TABELA WHERE DATUM < DATE() ORDER BY DATUM DESC';
.. ali nikako mi ne ide da umesto DATE() ubacim neki drugi datum.
[Ovu poruku je menjao lan-mi dana 09.11.2009. u 20:07 GMT+1]
[Ovu poruku je menjao lan-mi dana 09.11.2009. u 20:08 GMT+1]
[ lan-mi @ 09.11.2009. 20:06 ] @
Evo rešenja, hvala bogu.
Fiter svih datuma četiri dana manje od današnjeg:
adoQuery2.SQL.Text:= 'SELECT * FROM TABELA WHERE DATUM <'+FormatDatetime('#yyyy-mm-dd#',INCDAY(now,-4));
HVALA PUNO svima, jer mi svaka sugestija pomogla!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|