[ reiser @ 09.07.2004. 00:00 ] @
Imam jedan Query na formi i jedan DataSet. DataSet je povezan sa Query-em, a sve to sa DBGrid-om. Baza podataka je Paradox 7.
Kako da napravim da mi u DBGrid-u prikaze sve CD-ove izdate od, recimo 01/01/2004 do 02/02/2004 ?
Probao sam sa Query1.Filter, ali mi ne da da koristim aritmeticke operatore (>, >=, <, <=), valjda zato sto radim sa Paradox 7 bazama.
Moze li da se resi preko Query.SQL, i ako moze, kako glasi ta SQL linija ?
(SELECT * FROM bases\MemberCard.db ORDER BY CDID {i sta ovde treba da ide... ?})
[ overflow @ 09.07.2004. 11:48 ] @
Pogledaj SQL operator "BETWEEN".
[ byTer @ 09.07.2004. 14:02 ] @
A ako ne onda sa DatePart valjda postoji u Paradoxu rashchlani datume pa ih onda uporedjuj kao integere.
[ reiser @ 10.07.2004. 02:52 ] @
Ovako, SQL string glasi :
Code:
'SELECT * FROM bases\MemberCard.db WHERE RentDate BETWEEN' + MaskEdit1.Text + ' AND ' + MaskEdit2.Text + 'ORDER BY CDID'


MaskEdit su u formatu DD/MM/YYYY
Cim pokusam da kreiram formu, izbaci gresku :
Citat:
Type mismatch in expression
[ neuromancer @ 10.07.2004. 08:43 ] @
RentDate ti je tipa Date, dok je MaskEdit1.text tipa string tako da nije ni cudo sto ti javlja gresku, ja sam to resavao sa dva DateTimePicker-a, U kojima korisnik bira datume za filtritranje... probaj to ili konvertuj string u Date format.
poz
[ byTer @ 10.07.2004. 12:52 ] @
Valjda je SQL expression za datume #datum#. Probaj.
[ reiser @ 10.07.2004. 13:15 ] @
@neuromancer
Da, ali kad ja umesto MaskEdit1.Text stavim StrToDate(MaskEdit1.Text) compiler mi javi gresku "Incompatible types - Date and String". Query.SQL.Add se poziva sa string parametrom, zar ne ? Isti slucaj je i za DateTimePicker, ne mogu da stavim
Code:
SQL.Add('....' + DateTimePicker1.Date + '....');


@byTer
Ne razumem ? Kako to funkcionise ?

Poz, Marko.
[ byTer @ 10.07.2004. 15:34 ] @
Pa
Code:

'SELECT * FROM Tabela WHERE Datum = #'+ dateTimePicker1.date+'#'

na primer.
[ reiser @ 10.07.2004. 16:04 ] @
Nece. Probao sam i RentDate = #...# i WHERE RentDate BETWEEN #...# AND #...#.
U oba slucaja javlja 'Invalid use of keyword #...#'.
(tri tacke su u stvari datum)
[ byTer @ 10.07.2004. 16:44 ] @
A jesi li probao da ih stavis izmedju navodnika

datum = '#..#'
[ reiser @ 10.07.2004. 17:26 ] @
Tad javlja Type mismatch gresku...
[ slavica2000 @ 31.07.2004. 18:25 ] @
Dacu ti jednostavan primer a ti pokusaj da ga primenis mislim da ce sigurno raditi.
Dakle kreirao si Query1, DataSource, DBGrid1, MaskEdit1, MaskEdit2.
U Query1 u Object Inspectoru u DatabaseName uneses Alijasa na pr: DBDemos.
U njegovom SQL uneses kod:

Select * from Employee
Where HireDate >=:dat1
And HireDate <=:dat2

Zatim u njegovom Params odredis tip podatka za dat1 I dat2 tj. DataType –ftDate.
(Podrazumeva se da za MaskEdit odradis njegov InputMask odredis SampleMasks na pr:Date).A potom , recimo na dogadjaju OnExit komponente MaskEdit2 uneses ovaj kod:
Query1.Params[0].AsDate := strToDate(MaskEdit1.Text);
Query1.Params[1].AsDate:= strToDate(MaskEdit2.Text);
Query1.Close;
Query1.Open;
Dakle primeni:

SELECT * FROM bases\MemberCard.db
WHERE RentDate >=:dat1
AND RentDate <=:dat2
ORDER BY CDID
Pozdrav!!!
[ reiser @ 31.07.2004. 19:46 ] @
Hvala, zaboravio sam da napisem da sam prolem resio jos poodavno - na isti nacin kao sto si opisala.

poz