Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

В чём причина появления ошибки: «parameter Kod not found»?(ADO)   Найти похожие ветки 

 
NewSer   (2008-03-16 10:23) [0]

В чём может быть причина появления ошибки:
«parameter "Kod" not found»
при повторном запуске процедуры?
If new then begin
  if ADOQueryS.Active then ADOQueryS.Close;
  ADOQueryS.Parameters.Clear;
  ADOQueryS.SQL.Text:="INSERT INTO TableM (Kod, Nomer) "+
   "VALUES (:Kod, : Nomer)";
  ADOQueryS.Parameters.ParamValues["Kod"]:=SpinEditKod.Value;
  ADOQueryS.Parameters.ParamValues[" Nomer "]:=LabeledEditO.Text;
  ADOQueryS.ExecSQL;
  ADOQueryS.Close;
 end
 else begin
  if ADOQueryS.Active then ADOQueryS.Close;
  ADOQueryS.Parameters.Clear;
  ADOQueryS.SQL.Text:="UPDATE TableM SET Kod=:Kod WHERE Nomer =:Nom";
  ADOQueryS.Parameters.ParamValues["Kod"]:=SpinEditKod.Value;
  ADOQueryS.Parameters.ParamValues[" Nom "]:=LabeledEditO.Text;
  ADOQueryS.ExecSQL;
  ADOQueryS.Close;
End;

Причём! UPDATE после INSERT срабатывает нормально, а повторный UPDATE вызывает эту ошибку!
С INSERT то-же самое: например не получилось записать данные (ввели существующее значение ключевого поля), повторная попытка требует перезапуска программы.


 
sniknik ©   (2008-03-16 10:57) [1]

причина вот в этом
> ADOQueryS.Parameters.Clear;
в данном коде это не нужно

еще более веская причина в использовании ADOQuery, изза которого(под влиянием) пишется такой убогий код... там где нужен ADOCommand.

и самая глобальная причина в подходе (можно сказать психологии программирования), который заставляет экономить(???) то что не нужно (компоненты положенные на форму) за счет ресурсов и быстродействия (все бывает за счет чегото).
так тут по правильному требуется 2 компонента ADOCommand, чтобы системе не приходилось постоянно "препарить" одни и теже запросы, и д.р. а делать только необходимое - присвоить параметры и выполнить.

т.е. если бы писал правильным "стилем", правильными компонентами то даже близко бы к "проблеме" не подошел бы.


 
NewSer   (2008-03-16 11:06) [2]

Спасибо, sniknik, сейчас попробую!

> 2 компонента ADOCommand
Вы говорите правильно, но, например, в данном случае, у меня база находится под паролем (проверять 2 раза), два раза переписывать строку соединения....

А по-поводу ADOQuery - значит, Вы считаетет - на них экономить не стоит?

И ADOQueryS.Parameters.Clear - я всё делал по аналогичным рабочим примерам! Подобного "not found" там не возникало!


 
NewSer   (2008-03-16 11:17) [3]

Ещё раз спасибо, sniknik!

Сработало!
Но хотелось бы узнать:
>> И ADOQueryS.Parameters.Clear - я всё делал по аналогичным рабочим
>> примерам! Подобного "not found" там не возникало!


 
sniknik ©   (2008-03-16 11:38) [4]

> у меня база находится под паролем (проверять 2 раза), два раза переписывать строку соединения....
????
с идеологией даже хуже чем предполагал.
есть такой компонент ADOConnection который при работе с ADO ОБЯЗАТЕЛЕН к использованию, даже если больше ни одного ADO компонента не предвидится.

> А по-поводу ADOQuery - значит, Вы считаетет - на них экономить не стоит?
нет, я считаю что их надо снести нафиг с палитры, и не в коем случае не использовать (+ ADOTable, ADOStoredProc) особенно начинающим. не стоит травмировать неокрепшую психику корявой логикой...

> Но хотелось бы узнать:
просто везло. не было внесено 2х подряд одинаковых запросов. (при разных оно само сделает и клер параметрам и т.д. а если одинаковые, т.е. уже все сделано для того же самого ранее зачем парится повторно? а тут ты ему такое западло, взял и удалил то, что не просили...)


 
NewSer   (2008-03-16 11:44) [5]

Хм ))) всё-таки полезно не только книжки читать, но и на форумах общаться! )))

> есть такой компонент ADOConnection который при работе с ADO ОБЯЗАТЕЛЕН

а-а-а разобрался!!!
я подумал Вы про 2 - ADOConnection говорите )))
один то у меня есть! )))
По началу думал, что проблема в "обрыве" связи ADOQuery с ним!



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
2-1205597380
Riply
2008-03-15 19:09
2008.04.13
Упреждающее чтение.


2-1205665714
Igor23
2008-03-16 14:08
2008.04.13
Дата


15-1204204894
Виталий Панасенко(дом)
2008-02-28 16:21
2008.04.13
Механизм переоценки мат.ценностей(товара)


15-1204055076
Kerk
2008-02-26 22:44
2008.04.13
Ненавижу TurboD2006!


15-1203967236
@!!ex
2008-02-25 22:20
2008.04.13
Программирование на Delphi на приставки