Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > SQLDelete


Автор: MacTep 10.4.2011, 12:40
Кто работал с Oracle Data Access Controls прошу помочь со следующим вопросом: как удалить данные программно из таблицы, использую OraQuery и свойство этого компонента SQLDelete. Не понимаю, почему у меня не работает следующий блок кода (вылезает ошибка о том, что параметр p_country_id не найден - почему он не определяется - не пойму):
Код

procedure TfrmCountryList.actDelExecute(Sender: TObject);
var tmp: Integer;
begin
  if (quCountries.Active) and (quCountries.RecordCount > 0) then
  begin
    tmp := quCountries.FieldByName('country_id').AsInteger;
    quCountries.ParamByName('p_country_id').AsInteger := tmp;
    quCountries.Delete;
  end;
end;
при этом у меня в SQLDelete на позиции Delete стоит такой текст
Код

update countries 
set is_del = 1 
where country_id = :p_country_id
Помогите, пожалуйста.

Автор: MacTep 10.4.2011, 19:03
Актуально до сих пор smile

Автор: cat512 10.4.2011, 19:28
Select покажи. Дело в том что DAK-и, пересоздают параметры, которые можно инициализировать в обработчике (не помню точно) помойму beforeExecute. Если не пользовать такой обработчик,
то нужно что-бы наз. параметра соответствовало полю в select запросе. Тогда DAC, сам автоматом подставит параметр в запрос

Добавлено @ 19:33
По идее так должно сработать
Код

update countries 
set is_del = 1 
where country_id = :country_id

если в select-е есть поле country_id

Автор: Vas 11.4.2011, 07:16
А так?
Код

update countries 
set is_del = 1 
where country_id = :old_country_id

Автор: MacTep 11.4.2011, 08:15
Так
Код

update countries 
set is_del = 1 
where country_id = :old_country_id
 не работает.
Select был обычный что-то типа select t.* from countries t, причем поле айдишника называлось именно country_id. Вариант, предложенный cat512, попробую вечером.

Автор: Vas 11.4.2011, 08:41
Не дочитал я, в SQLUpdate будет работать с префиксом old_
А в SQLDelete просто по имени надо использовать, как cat512 написал.

Автор: toreh 11.4.2011, 22:36
помогите у меня почти такая же проблема только база в прадоксе с делана имеется sql запрос выводит данные из базы ну я их не могу редактировать и не могу к ним подклюсить dbedit 

Автор: MacTep 11.4.2011, 22:56
Цитата(toreh @  11.4.2011,  22:36 Найти цитируемый пост)
помогите у меня почти такая же проблема только база в прадоксе с делана имеется sql запрос выводит данные из базы ну я их не могу редактировать и не могу к ним подклюсить dbedit  

Одна проблема, один топик. Стартуй свой. Этот считаю закрытым. Спасибо! ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)