Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Параметры в ADO: q2: Parameter 'i' not found [D6, dBase, FoxPro]


Progr_Neud ©   (2006-08-04 10:21:00) 

Пишу следующую конструкцию:

  q2.Close;
  q2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Таблицы Visual FoxPro;UID=;SourceDB='+PathBD+';SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Delet ed=Yes;"';
  q2.SQL.Clear;
  q2.SQL.Add('insert into starye (id,kolvo,nazvan,opisan) values( :i , :c , :n , :m )');
  while not q1.Eof do begin
     q2.Close;
     q2.Parameters.ParamByName('i').Value:=q1.FieldByName('id').AsInteger;
     q2.Parameters.ParamByName('c').Value:=q1.FieldByName('kolvo').AsFloat;
     q2.Parameters.ParamByName('n').Value:=q1.FieldByName('nazvan').AsString;
     q2.Parameters.ParamByName('m').Value:=q1.FieldByName('opisan').AsString;
     q2.ExecSQL;
     q1.Next;
  end;

Строка подключения следующая:


Когда пытается запузырить значение в параметр по имени "i" - ругается на то что он не найден....

Пробовал и с пробелами перед : и без пробелов.
Как бороться?
Причем этот компонент в других местах программы нормально работает с параметрами......


Johnmen   (2006-08-04 10:59:00) [1]

Потому, что в других местах этой программы этот компонент не претерпевал дизайнерских изменений...


Progr_Neud   (2006-08-04 10:49:00) [2]

Ура!!!
Добавил строчку перед циклом
q2.Parameters.ParseSQL(q2.SQL.Text,true);

и все заработало....
Всем спасибо.
Вопрос в догонку: а почему в других местах этой программы этот компонент работал без такой строчки???


sniknik   (2006-08-04 10:34:00) [3]

1 q2.Close; в цикле лишнее.
2 на вставку, и вообще команды не возвращаемые данные, лучше выполнять в ADOCommand. (возвращающие в ADODataSet, а ADOQuery/Table/StoredProc на помойку...)
3 не использование ADOConnection (прописывание строки в командном компаненте, как у тебя) частый источник глюков, часто вообще непонятных... используй его даже если думаеш что он тебе не нужен (!!!!).
4 ParamCheck возможно у тебя отключен, поэтому параметры совсем не созданы. ругается на первый используемый.


ORMADA   (2006-08-04 10:29:00) [4]

параметры перепарсить нада Paramerers.ParseSQL вызать


Наверх

Титульная страница Поиск, карта сайта Написать письмо