Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2011, 18:10   #1
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
Вопрос Запрос по дате, Access

Добрый день.
Возникла у меня проблемма с запросом по дате. Работаю с БД Access.
Код:
    ...
    Memo1.Lines.Add('AND Date >= '''+FormatDateTime('MM/dd/yyyy', DateTimePicker1.Date)+'''');
    Memo1.Lines.Add('AND Date <= '''+FormatDateTime('MM/dd/yyyy', DateTimePicker2.Date)+'''');
    Memo1.Lines.Add('ORDER BY KP, Date, Time;');

    ADODataSet1.Active:=False;
    ADODataSet1.CommandText:=Memo1.Text;
    ADODataSet1.Active:=True;
Пробовал и формат даты менять... и с кавычками/диезами...
Выдает ошибку: Несоответствие типов данных в выражении условия отбора
Убираю условия по дате - все чудно работает!
Дык в чем ошибка?

P.S. Memo использую временно, чтобы иметь возможность просматривать сформированный отчет.
Жить тоже вредно, от этого умирают!!!

Последний раз редактировалось Demien; 09.02.2011 в 18:13.
Demien вне форума Ответить с цитированием
Старый 09.02.2011, 18:24   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

у аксеса "свой" формат даты... проще всего использовать параметрический запрос...
то есть:
Код:
with dm.Exp1Cq do
 begin
  Close;
   with sql do
    begin
      Clear;
      Add('SELECT komplekt.id_obk, komplekt.id_mat, mat.NAIM_MAT, mat.OB_MAT, Sum(procent.kolvo_mont) AS [Sum-kolvo_mont]');
      Add('FROM (komplekt INNER JOIN procent ON komplekt.id_kompl=procent.id_kompl) INNER JOIN mat ON komplekt.id_mat=mat.ID_MAT');
      Add('WHERE (((procent.dat_mont)>=:p_data1 And (procent.dat_mont)<:p_data2))');
      Add('GROUP BY komplekt.id_obk, komplekt.id_mat, mat.NAIM_MAT, mat.OB_MAT');
      Add('HAVING (((komplekt.id_obk)='+IntToStr(DBLookupComboBox1.KeyValue)+'));');
    end;
    Parameters.ParamByName('p_data1').Value := dateTimePicker1.DateTime;
    Parameters.ParamByName('p_data2').Value := dateTimePicker2.DateTime;
   Open;
  end;
думаю суть Вам ясна
___________
апдейт
а дабы аксесу нравился формат даты передаваемый "напрямую"
следует писать
Цитата:
HAVING (((procent.dat_mont)>=#10/1/2010# And (procent.dat_mont)<#11/1/2010#))
формат mm/dd/yyyy и "решетки" по бокам

Последний раз редактировалось maLoy*508; 09.02.2011 в 18:33.
maLoy*508 вне форума Ответить с цитированием
Старый 09.02.2011, 18:25   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
  var FDateBegin, FDateEnd: TDateTime;
  
    Memo1.Lines.Add('AND Date >= :date_begin');
    Memo1.Lines.Add('AND Date <= :date_end');

    ADODataSet1.Active:=False;
    ADODataSet1.SQL.Text:=Memo1.Text;
    ADODataSet1.ParamByName('date_begin').AsDateTime := FDateBegin;
    ADODataSet1.ParamByName('date_end').AsDateTime := FDateEnd;
    ADODataSet1.Active:=True;
... не успел
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос по дате aharem08 БД в Delphi 4 02.02.2011 15:32
Запрос по дате Explosion БД в Delphi 3 02.06.2010 18:22
Запрос по дате DaMadQuest SQL, базы данных 0 06.04.2010 17:37
Запрос по дате program123 БД в Delphi 4 17.03.2010 19:53
Запрос по дате ННС Помощь студентам 4 20.04.2009 19:30