Форум: "Базы";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизВыбор с помощью TQuery из базы Access Найти похожие ветки
← →
Lola (2002-08-19 17:16) [0]Строку SQL формирую в программе, значения беру из TDateEdit. Результирующая строка имеет вид
SELECT ... FROM Reg Reg WHERE DateDoc="18.08.2002"
. В результате вылетает с ошибкой Data type mismatch in criteria expression. Примечательно то, что на Paradox-е этот код проходит без ошибок. Вопрос: в чем ошибка?
← →
Reindeer Moss Eater (2002-08-19 17:20) [1]Ошибка в том, что "Data type mismatch in criteria expression"
Используй параметрический запрос
← →
Mike Kouzmine (2002-08-19 17:21) [2]Возможно надо "#18/08/2002#" или что-то в этом роде.
Но, вообще, если работаю с Эксесом, то все запросы пишу в нем, а использую TADOStroredProc.
← →
koks (2002-08-19 17:36) [3]Да, Access очччень не привиредлив в отношении дат.
В свое время долго бился над этой проблемой...
Вот решение, может не самое красивое, но стопудовое (но только в случае Access (в моем случае это был Access 200) - а и только в случае подключения через ADO)
твоя дата - MyDate: TDateTime
var
MyDate: TDateTime;
AYear, AMonth, ADay: integer;
begin
DecodeDate(MyDate, AYear, AMonth, ADay);
Query.Close;
Query.Params.ParamByName("Year").Value := AYear;
Query.Params.ParamByName("Month").Value := AMonth;
Query.Params.ParamByName("Day").Value := ADat;
Query.Open;
end;
Query.SQL:
SELECT F1, F2, F3
FROM MyTable
WHERE DateField = DateSeria(:Year, :Month, :Day);
DateSerial - это функция VBA Access, которая возвращает корркетную для Access дату по трем числамЖ год, месяц, день...
Если ты подключаешься через ADO, а ан в свою очередь через Jet - то у тебя появляется доступ к этим функциям...
← →
Lola (2002-08-19 18:33) [4]
> Mike Kouzmine (19.08.02 17:21)
Такой формат тоже пробовала, ругается на синтаксическую ошибку.
Попробую использовать параметры. Особо спасибо koks © за DateSerial. Я о ней не знала.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c