![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация по дате [D7, MS Access]
lirikus © (2010-07-18 22:05:00)Здравствуйте. Имеется таблица. Необходимо вывести записи принадлежащие выбранному временному периоду. Пробовал делать следующим образом:
DataModule2.ADOTable3.Filtered:=false; DataModule2.ADOTable3.Filter:='[Дата]>='+QuotedStr(DateToStr(DateTimePicker1.DateTime))+'
and [Дата]<='+QuotedStr(DateToStr(DateTimePicker2.DateTime))+'';
DataModule2.ADOTable3.Filtered:=true;
В данном случае даты сравниваются как строки. Т.е. если сравнивать, к примеру, 18.07.2010 и 01.08.2010, то больше будет первая дата, что является ошибкой.
Чтобы сравнивать как даты,пробовал в MS Access задать полю "дата" тип "дата/время ". При попытке записать значение даты с DateTimePicker выдавалась ошибка "WideString actual: TDateTime". Поэтому пришлось перейти на строковый тип, что привело меня в тупик...
Очень прошу вашей помощи. Заранее, спасибо.
Германн (2010-07-20 02:04:00) [1]
> а ошибки так и не исправил... только то на что "нарвался",
> до остального дела нет. радуется.
Студент кулинарного техникума радуется, что наконец-то скинул зачет по ненавистному ему предмету "Программирование".
Может хоть кулинар из него получится грамотный?
:)
sniknik (2010-07-20 00:58:00) [2]> Вот и радость у человека...
а ошибки так и не исправил... только то на что "нарвался", до остального дела нет. радуется.
Юрий Зотов (2010-07-19 23:08:00) [3]Вот и радость у человека...
Знакомо, проходили.
Жаль, что я уже не могу испытывать восторгов типа "блин, какой я крутой, не спал всего лишь пару суток, но запрос, гад такой, все же заработал".
Правда, подобный кайф все равно испытываешь, когда за ту же пару бессонных суток решишь сложную задачу. А уж если решишь ее еще и красиво, то полный кайф.
Но задачи такие попадаются очень редко, все больше рутина...
:-(
lirikus (2010-07-19 14:35:00) [4]Удалено модератором
lirikus (2010-07-19 14:34:00) [5]Всем ОГРОМНЕЙШЕЕ СПАСИБО за помощь! В особенности sniknik и Юрию Зотову. Заработал вариант с DateTime.
DataModule2.FndQuerry.SQL.Clear;
DataModule2.FndQuerry.Close;
DataModule2.FndQuerry.SQL.Add('Select * from Çàÿâêè_îòð WHERE Дата BETWEEN :Date1 and :Date2');
DataModule2.FndQuerry.Parameters.ParamByName('date1').Value:=DateTimePicker1.Dat eTime; DataModule2.FndQuerry.Parameters.ParamByName('date2').Value:=DateTimePicker2.Dat eTime;
DataModule2.FndQuerry.Open;
(Вместо value asdate/asdatetime не подставлялось, ошибка Undeclared identifier: 'AsDate')
P.S.: Не судите строго, я только учусь =)
sniknik (2010-07-19 14:15:00) [6]> Anatoly Podgoretsky © (19.07.10 14:11) [34]
а, ну да, "ступил". у нас тут уже дикая смесь BDE с ADO...
Anatoly Podgoretsky (2010-07-19 14:11:00) [7]> sniknik (19.07.2010 14:09:33) [33]
ParamByName('date1').AsDateTime -> ParamByName('date1').Value
sniknik (2010-07-19 14:09:00) [8]Юрий Зотов © (19.07.10 13:35) [32]
неправильно, говорили же уже, нужен datatime или готовсь к проблемам
т.е.
with DataModule2.FndQuerry.Parameters do
begin
ParamByName('date1'). AsDateTime:= DateTimePicker1. DateTime;
ParamByName('date2'). AsDateTime:= DateTimePicker2. DateTime;
end;
Юрий Зотов (2010-07-19 13:35:00) [9]> lirikus (19.07.10 13:24) [30]
with DataModule2.FndQuerry.Parameters do
begin
ParamByName('date1'). AsDate:= DateTimePicker1.Date;
ParamByName('date2'). AsDate:= DateTimePicker2.Date;
end;
Часто приводимые на форумах примеры - это всего лишь подсказки. Их не следует понимать буквально.
А вот фразы типа "См. справку по разделу такому-то" следует понимать как раз буквально. И справку надо действительно смотреть.
И. Павел (2010-07-19 13:28:00) [10]А почему в [25] в "Select..." одно русское слово "Дата" отображается нормально, а то слово, которое после from - каракулями? Там что, три разных языка?
lirikus (2010-07-19 13:24:00) [11]
> Anatoly Podgoretsky © (19.07.10 13:14) [27]
> DateTime
Так и есть. В чем тогда несоответствие?
> Dennis I. Komarov © (19.07.10 13:12) [26]"Зина, в печку
> ее..."
> Anatoly Podgoretsky © (19.07.10 13:17) [28]В печку.
> AdoQuery - в печку
> запрос по частям - в печку
> русские названия - если правильно используешь, то можно
учту на будущее
Anatoly Podgoretsky (2010-07-19 13:19:00) [12]
> русские названия - если правильно используешь, то можно
А ты используешь неправильно, поэтому тоже в печку.
Anatoly Podgoretsky (2010-07-19 13:17:00) [13]
> Под рукой "Библия Делфи" Фленова. (Т.е. все-таки учебник
> я почитал прежде, чем обратиться к вам. Единственное, не
> знаю, правильную ли литературу выбрал, но до этого по его
> примерам все получалось) И вот как раз там он использует
> и ADOQuerry, и внесение запроса по частям, и русские названия
> таблиц. Пытался делать по аналогии. С разработкой баз данных
> сталкиваюсь впервые. SQL - для меня, вообще, новое понятие.
> Можете называть меня ламером (наверное, так оно есть),
> но не уверен, что это добавит вам чести.
В печку.
AdoQuery - в печку
запрос по частям - в печку
русские названия - если правильно используешь, то можно
За честь не беспокойся, по крайней мере мы не беспокоимся, если надо будет, то назовем.
Anatoly Podgoretsky (2010-07-19 13:14:00) [14]
> Какой тип должен быть у поля "дата" в Access?
DateTime
Dennis I. Komarov (2010-07-19 13:12:00) [15]
> Под рукой "Библия Делфи" Фленова. (Т.е. все-таки учебник
> я почитал прежде, чем обратиться к вам. Единственное, не
> знаю, правильную ли литературу выбрал, но до этого по его
> примерам все получалось)
"Зина, в печку ее..."
lirikus (2010-07-19 13:07:00) [16]Спасибо всем откликнувшимся. Дико извиняюсь, что испытываю ваше терпение. Но на запрос выдается ошибка "Несоответствие типов данных в условиях отбора". Какой тип должен быть у поля "дата" в Access?
DataModule2.FndQuerry.SQL.Clear;
DataModule2.FndQuerry.Close;
DataModule2.FndQuerry.SQL.Add('Select * from Çàÿâêè_îòð WHERE Дата BETWEEN :Date1 and :Date2');
DataModule2.FndQuerry.Parameters.ParamByName('date1').Value:=DateTimePicker1.Dat e; DataModule2.FndQuerry.Parameters.ParamByName('date2').Value:=DateTimePicker2.Dat e;
DataModule2.FndQuerry.Open;
> Германн © (19.07.10 01:57) [11]Да. Но переросли новичков
> только те, кто читал "учебники", а не просил
> sniknik © (19.07.10 09:38) [18]1 привязка к DataModule2
> 2 использование ADOQuery
> 3 то что делает ADOQuery опасным на старых версиях - внесение
> запроса частями
> 4 русское название таблицы (+ без кавычек)
> 5 параметры
Под рукой "Библия Делфи" Фленова. (Т.е. все-таки учебник я почитал прежде, чем обратиться к вам. Единственное, не знаю, правильную ли литературу выбрал, но до этого по его примерам все получалось) И вот как раз там он использует и ADOQuerry, и внесение запроса по частям, и русские названия таблиц. Пытался делать по аналогии. С разработкой баз данных сталкиваюсь впервые. SQL - для меня, вообще, новое понятие. Можете называть меня ламером (наверное, так оно есть), но не уверен, что это добавит вам чести.
Плохиш (2010-07-19 10:39:00) [17]
> DataModule2.FndQuerry.SQL.Clear;
> DataModule2.FndQuerry.Close;
> DataModule2.FndQuerry.SQL.Add('Select * from Prodaja WHERE
> Data BETWEEN :Data1 and :Data2;');
>
Я бы убил.
бумбум (2010-07-19 10:14:00) [18]Я тож с тупил, только додумался посмотреть
[D7, MS Access]
бумбум (2010-07-19 10:13:00) [19]
> А нафига ему пример из БДЕ?
Я как то не понял что это у него за FndQuerry
Да и если автор не может до тукатся как в инспекторе объекта устанавливать параметры то это ему здорово поможет
Anatoly Podgoretsky (2010-07-19 10:02:00) [20]
> бумбум (19.07.10 09:58) [19]
А нафига ему пример из БДЕ?