Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фильтрация по дате [D7, MS Access]


Страницы:   1 2

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]

А нафига ему пример из БДЕ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо