|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
не воспринимается параметр
после такого запроса
Код:
With DataModul.IBQuery1 do begin Close; SQL.Clear; sql.Add(' select FilmName from table_film where filmname like :str '); Params[0].AsString:= '%'+ Edit1.Text+'%'; Open; end; выдается ошибка sql error code = -206 column unknown STR пожскажите пожалуйста чего за фигня? Последний раз редактировалось Admin, 12.01.2009 в 20:15. |
#2
|
|||
|
|||
SQL выражение - это строка. Парсер встречая "str" пытается найти поле с таким именем в таблице. Т.к. его нет, происходит ошибка при проверке выражения.
Код:
sql.Add('select FilmName from table_film where filmname like '+ QuotedStr('%'+ Edit1.Text)+'%')); // Params[0].AsString:= '%'+ Edit1.Text+'%'; Open; Параметры это, конечно, хорошо, но применять их смысла большого нет. Если представить себе приложение где формируется сотня видов SQL выражений, то получается, что на форме надо держать сотню компонентов Query каждый со своими параметрами. Нелепость какая-то. Проще держать пару Query, задавая нужное выражение в каждый момент времени свое, передавая значения параметров непосредственно в текст выражения (как показано здесь в исходнике). Не забывайте делать резервные копии Последний раз редактировалось san-46, 13.01.2009 в 08:55. |
#3
|
|||
|
|||
я наверна после армии вообще отупел )) но всетаки...
а тут что? параметр задан изначально в свойствах ibquery, но при исполнении запроса опять ругается и говорит что такой column не найден Код:
DataModul.DataSource1.DataSet:=DataModul.IBQuery3; if ComboBox1.ItemIndex<>0 then With DataModul.IBQuery3 do begin Close; SQL.Clear; sql.Add('select * from table_film where filmtype = :q'); ParamByName('q').AsInteger:=i; Open; end; i - параметр который передается в процедуру. спасибо Последний раз редактировалось Admin, 13.01.2009 в 17:55. |
#4
|
|||
|
|||
да, и кстати на
Close; SQL.Clear; sql.Add('select FilmName from table_film where filmname like ''%'+ Edit1.Text+'%'''); Open; выдает "xsqlda index out of range" хотя строка запроса получается правильная... |
#5
|
|||
|
|||
кстати наверно это глюки ... Я сейчас тот же проект переделал в дел 7(которую нашел), до этого делал в 2009....
|
#6
|
|||
|
|||
IBX надо обновить. Про обновление и работу с IBX смотреть здесь: http://www.ibase.ru/devinfo/ibx.htm
Если SQL выражение перенести в свойство "SQL" IBQuery (в редакторе этого свойства делается), то параметры (список в свойстве Params)создаются автоматом - городить ничего не надо. А IBX с Delphi 2009 это вообще особая песня. Ошибка из-за глюков - это точно. Не забывайте делать резервные копии |