![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтр на базу [D6, dBase, FoxPro]
ArtemB © (2003-05-07 09:26:00)Подскажите как сделать следующее:
Бызa dbf, у которой есть среди прочих поле даты Date (dd/mm/yy).
Есть компонент DateTime в котором стоит Long Format на показ только месяца и года.
Теперь задача: выбрать (фильтр наложить) из таблицы те записи, для которых поле Date удовлетворяет выбранному DateTime
(т.е. нужно вывести данные за такой то месяц такого то года... не важно какое число месяца)
Подскажите как сделать.... Спасибо
ArtemB (2003-05-07 10:33:00) [1]Спасибо :-)
Mike Kouzmine (2003-05-07 09:46:00) [2]SQL
select * from Table t
where t."Date" between :DB and DE
DecodeDate(DateTimePicker1.Date,Y,M,D);
Q.Params[0].asDate := EncodeDate(Y,M,1);
Q.Params[1].AsDate := EncodeDate(Y,M,DaysInMonth(DateTimePicker1.Date))
Q.Open
Mike Kouzmine (2003-05-07 09:42:00) [3]DecodeDate(DateTimePicker1.Date,Y,M,D);
Table.Filter:="Date >= "+ QuotedStr(DateToStr(EncodeDate(Y,M,1))) + "and Date <= " + QuotedStr(DateToStr(EncodeDate(Y,M,DaysInMonth(DateTimePicker1.Date)))
Table.Filtered:=True;
snake1977 (2003-05-07 09:41:00) [4]пардон, ошибся, если надо за месяц, то тогда так
cost st:Char="""";
Var Table:TTable;
d:TDateTime;
yy,mm,dd:Word;
......
DecodeDate(d,yy,mm,dd);
Table.Filter="Date>="+st+"01"+"."+IntToStr(mm)+"."+IntToStr(yy)+st+" and Date<="+st+"30"+"."+IntToStr(mm)+"."+IntToStr(yy)+st;
Table.filtered:=True;
.....
примерно так, но наверняка есть способы поинтереснее, а вообще то прочсе сделать SQL запрос
например
Query.SQL.Append("select t.* from table t where t.Date like "%."+IntTostr(mm)+"."+IntToStr(yy)+""");
и
Query.Open;
snake1977 (2003-05-07 09:33:00) [5]Например так
cost st:Char="""";
Var Table:TTable;
d:TDateTime;
.....
Table.Filter:="Date="+st+DateToStr(D)+st;
Table.Filtered:=True;
....
Johnmen (2003-05-07 09:31:00) [6]OnFilterRecord