|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
ошибка при использовании параметров
Приветствую
При запуске из 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
|
||||
|
||||
На другом форуме поспрашивал - проблему так и не нашли(( Возможно какие-то глюки на моем софте
Но вот обнаружил закономерность: ошибка выскакивает всегда и везде, но кроме случая, когда запрос прописан в ADOQuery в designTime, так же ошибка появляется только при первом формировании и вызове запроса и параметра Что за?? Такое чувство, что происходит какое-то кеширование текста запроса перед его выполнением и когда я пытаюсь сформировать его программно - вылазит ошибка(( Правильно ли будет забить на ошибку? Ведь запрос срабатывает так как надо... Я за здоровый экстрим! Спасибо за "спасибо") |
#4
|
||||
|
||||
Цитата:
вот, типа лог) Код:
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; в любых вариациях - неявная ошибка Я за здоровый экстрим! Спасибо за "спасибо") |