Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Непонятки с датой.


Автор: ACMilian 23.1.2007, 18:12
Помогите, пож-ста, разобраться вот в чём. Загружаю скрипт:
Scritp ADACCESS
   Insert into ORDERS
             (nuid, cid, data)
             values(:nuid:,:cid:,:data:)
 в ADOQuery
LoadScript( ExtractFilePath(ParamStr(0)) + 'SCREEPT.sql',  'ADACCESS', DataModule2.ADOQUERY3.SQL );
 SetParam( DataModule2.ADOQUERY3.SQL, 'nuid', '4' );
  SetParam( DataModule2.ADOQUERY3.SQL, 'cid', '4' );
  SetParam( DataModule2.ADOQUERY3.SQL, 'data', 'DateToStr(date))
после последней строки возникает ошибка : Syntax error in number in query expression '11.01.2007'
Что делаю не так?

Автор: voha 23.1.2007, 18:18
А зачем дату в строку преобразовывашь? ИМХО это лишнее

Автор: ACMilian 23.1.2007, 18:20
Если так: SetParam( DataModule2.ADOQUERY3.SQL, 'data', date);
то не совместимость типов Дататайм и стринг...

Автор: voha 23.1.2007, 18:27
а запрос грузится в рантайме или нет
если нет, то помоему можно явно указать типы параметров запроса
если да, то в рантайме попробуй указать типы параметров, если такое можно в АДО

Автор: ACMilian 24.1.2007, 10:55
запрос грузится после клика на кнопке...

Автор: voha 24.1.2007, 11:59
а если 
Код

SetParam( DataModule2.ADOQUERY3.SQL, 'data', Concat('''',DateToStr(date), ''''))


но я всеравно склоняюсь к мнению о том что параметры нужно типизировать

Автор: RideX 25.1.2007, 21:39
ACMilian, чтобы всегда работало правильно и не было необходимости задумываться об этом, в SQL-запросе используй функцию из самого Jet SQL: DateValue.

В общем виде это должно выглядеть так:
Код

SELECT * FROM tblMaster WHERE [Дата заказа] = DateValue('25.01.2007');


Или вот, в частности, пример рабочего кода:
Код

strCmdText := 'SELECT * FROM '+ tblMaster + ' WHERE [Дата заказа] BETWEEN DateValue("' +
                DateTimeToStr(StartDate) + '") AND DateValue("' +
                DateTimeToStr(EndDate)   + '")';
ADOCommand.CommandText := strCmdText;
ADODataSetMaster.Recordset := ADOCommand.Execute;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)