SELECT *
FROM ****
WHERE (((packetrelation.packetdate) Between [:begin] And [:end]) AND ((packetrelation.active)=1));
Параметры запроса в MSAccess - проблема с передачей даты.
В базе используется запрос к ряду таблиц:
Код:
т.е. необходимо получить набор записей поле packetdate которых лежит в промежутке между дат. Запрос работает и возвращает все что требуется без каких либо особенностей. Кодировка в системе установлена русская, короткий и длинный формат даты совпадает и имет вид dd.MM.yyyy. поле в таблице имеет тип Дата/время и содержит 11.09.2006 17:07:00
Для работы с запросом используется TADOStoredProc, данные из нее выгружаются в TClientDataSet. Если с предустановленными параметрами активировать компонент в среде разработки - все нормально.
Используется следующий код (на приведение к типу строки обращать внимание не стоит - это от безысходности, результат пустой )
Код:
AnsiString Begin = DateToStr(dtpBegin->DateTime);
AnsiString End = DateToStr(dtpEnd->DateTime);
dmMain->adoListClParamWithDate->Parameters->ParamByName(":begin")->Value = Begin;
dmMain->adoListClParamWithDate->Parameters->ParamByName(":end")->Value = End;
dmMain->cdsListClParamWithDate->Active = true;
AnsiString End = DateToStr(dtpEnd->DateTime);
dmMain->adoListClParamWithDate->Parameters->ParamByName(":begin")->Value = Begin;
dmMain->adoListClParamWithDate->Parameters->ParamByName(":end")->Value = End;
dmMain->cdsListClParamWithDate->Active = true;
Может кто сталкивался?
Пробовал использовать Query - результат аналогичный.
Создавался новый проект и в запарке не залез в свойства проекта - дата модуль создался автоматически. В тоже время в функции инициализации формы было
Код:
dmMain= new TdmMain(this);
понятное дело возникли проблемы. После удаления датамодуля из списка автоматически создаваемых все заработало как и должно.
Вывод - как бы вы не торопились - будте внимательны. :)