![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вложенные запросы. Нужен совет. [D6, XP]
DimonS © (2006-07-24 10:00:00)Решил попробовать сделать вложенный запрос, причем подзапрос обращается к этой же базе:
ADOGPS.Close;
ADOGPS.SQL.Clear;
ADOGPS.SQL.Add('select Distance as Dist from Distance_All where UniqID=1 and TimeNav');
ADOGPS.SQL.Add('=(select Max(Timenav) from Distance_all where Timenav<=:Dat2 and UniqID=1)');
ADOGPS.Parameters.ParamValues['Dat2']:=DateTimeToStr(Now);
ADOGPS.Open;
В результате выдает ошибку:
"The conversion a chsr data type to a datetime data type resulted in an out-of-range datetime value"
Как я понял, вложенный подзапрос выдает не тот формат? По отдельности запросы работают нормально. Что здесь неправильно?
Или может быть проще сделать запрос через соединение таблиц?
DimonS (2006-07-24 10:42:00) [1]
> Desdechado © (24.07.06 10:36)
Спасибо, дело было именно в преобразовании в строку. Передал напрямую - заработало все ок.
Desdechado (2006-07-24 10:36:00) [2]Ругается вот здесь:
ADOGPS.Parameters.ParamValues['Dat2']:=DateTimeToStr(Now);
Какого лешего ты в строку преобразуешь? Передавай прямо.
Да и текст ошибки прозрачен - ошибка преобразования
Ega23 (2006-07-24 10:35:00) [3]
> Найдет в любом случае, если отдельным запросом делать, то
> находит, база не пустая и значения такие точно есть.
Гарантии нет. Хотя тебе виднее. Но это потенциальная дыра, учти.
DimonS (2006-07-24 10:08:00) [4]
> Ega23 © (24.07.06 10:05) [1]
Найдет в любом случае, если отдельным запросом делать, то находит, база не пустая и значения такие точно есть.
Ega23 (2006-07-24 10:05:00) [5]А если Max не найдёт по такому условию?