Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.12.2013, 15:08
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию ошибка при использовании параметров

Приветствую

При запуске из Delphi (F9) ошибка:
"Project Project1.exe raised exception class EOleException with message 'Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом'"
Но все работает

При запуске ехе-ка ошибки, соответственно, нет

Код:

Код:
  ADOQuery_Eh1.Close;

  ADOQuery_Eh1.SQL.Text := 'SELECT * FROM proto.stv WHERE (date_montaz > :dat)';
 // ADOQuery_Eh1.Parameters.ParseSQL(ADOQuery_Eh1.sql.text, true); так ли нужна эта строка? и без нее все работает и с ней...
  ADOQuery_Eh1.Parameters.ParamByName('dat').Value:=yesterday;
// ADOQuery_Eh1.Parameters.ParamByName('dat').DataType:= ftDate; тоже не влияет

  ADOQuery_Eh1.Active:=true;

Перепробовал много разных вариантов, но всегда эта ошибка
Причем ошибка появляется только 1 раз при первом открытии ADOQuery, потом работает без нареканий даже при смене значения даты

Что это может быть?

БД - mysql, для поля date_montaz - тип DATE, при создании параметра вручную в ADOQuery.Parameters все так же
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")

Последний раз редактировалось Mrak, 05.12.2013 в 16:22.
Ответить с цитированием
  #2  
Старый 09.12.2013, 10:24
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

На другом форуме поспрашивал - проблему так и не нашли(( Возможно какие-то глюки на моем софте

Но вот обнаружил закономерность: ошибка выскакивает всегда и везде, но кроме случая, когда запрос прописан в ADOQuery в designTime, так же ошибка появляется только при первом формировании и вызове запроса и параметра

Что за?? Такое чувство, что происходит какое-то кеширование текста запроса перед его выполнением и когда я пытаюсь сформировать его программно - вылазит ошибка((

Правильно ли будет забить на ошибку? Ведь запрос срабатывает так как надо...
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #3  
Старый 09.12.2013, 12:52
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Правильней будет -- пытаться установить тип параметра до присвоения ему первого значения.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #4  
Старый 09.12.2013, 12:57
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от Freeman
Правильней будет -- пытаться установить тип параметра до присвоения ему первого значения.
пробовал, вообще, что я только не пробовал))
вот, типа лог)
Код:
ADOQuery_Par.Close;
 //  ADOQuery_Par.Parameters.CreateParameter('dat', ftDate ,pdUnknown, 0, yesterday);
 // ADOQuery_Par.SQL.Clear;
 // ADOQuery_Par.SQL.add('SELECT * FROM proto.stv WHERE (id > :dat);');
 ADOQuery_Par.SQL.Text:='SELECT * FROM proto.stv WHERE (id < :dat);';
 //ADOQuery_Eh1.Parameters.ParseSQL(ADOQuery_Eh1.sql.text, true);
 //ADOQuery_Eh1.Parameters[0].name:='dat';
 //ADOQuery_Eh1.Parameters[0].DataType:=ftdate;
 //ADOQuery_Eh1.Parameters[0].Value:=yesterday;
 // ADOQuery_Eh1.Parameters.ParamByName('dat').DataType:=ftInteger;
 ADOQuery_Par.Parameters.ParamByName('dat').Value:=edit1.Text;// yesterday;
 //ADOQuery_Eh1.Parameters.Paramvalues['dat']:='33';//strtodate(edit1.Text);// yesterday;
 //  ADOQuery_Eh1.Parameters.ParamByName('dat').DataType:= ftDateTime;
 ADOQuery_Par.Open;
и это не все

в любых вариациях - неявная ошибка
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter