Удаление Выделенной Записи Из Бд

  • Автор темы FLYer
  • Дата начала
F

FLYer

#1
У меня есть БД с 12 полями. Одно из них отображается в DBLookUpListBox, остальные показаны в DBEdit. Кликая на определенную запись в лист боксе, в эдитах показываются соответствующие.
Проблема: мне нужно удалить выделенную в лист боксе запись (то есть в лист боксе выделяется одно поле а удаляется вся запись в БД).
Пыталась делать запросом и через параметр. Удаляются либо все записи БД либо выдается ошибка параметра. Например: "Поле name не имеет значения по умолчанию"

Вот мой запрос:
Код:
with DataModule2.ADOQuery3 do
begin
Sql.Text:='DELETE FROM [Контакты] WHERE name='+DBLookUpListBox1.SelectedItem;
ExecSQL;
end;
здесь name - ранее созданный в квери параметр, соответсвующий полю Имя в лист боксе

Вобщем, буду рада любому совету, так как не знаю с какой стороны и как правильно подойти к решению данной задачи. Заранее спасибо
 

nayke

Well-known member
04.08.2010
310
0
#2
У меня есть БД с 12 полями. Одно из них отображается в DBLookUpListBox, остальные показаны в DBEdit. Кликая на определенную запись в лист боксе, в эдитах показываются соответствующие.
Проблема: мне нужно удалить выделенную в лист боксе запись (то есть в лист боксе выделяется одно поле а удаляется вся запись в БД).
Если DBLookUpListBox привязан в ADOTable например или есть возможность привязать к adoTable. достаточно вызвать ADOTable.Delete. Естественно если у вас BDE компоненты логика таже.

Вот мой запрос:
Код:
with DataModule2.ADOQuery3 do
begin
Sql.Text:='DELETE FROM [Контакты] WHERE name='+DBLookUpListBox1.SelectedItem;
ExecSQL;
end;
здесь name - ранее созданный в квери параметр, соответсвующий полю Имя в лист боксе

Вобщем, буду рада любому совету, так как не знаю с какой стороны и как правильно подойти к решению данной задачи. Заранее спасибо
Тут совсем непонятно. Если name это параметр то код должен быть примерно такой(писал по памяти за синтаксис не уверен)
Код:
with DataModule2.ADOQuery3 do
begin
paramByName('name').asString=DBLookUpListBox1.SelectedItem;
Sql.Text:='DELETE FROM [Контакты] WHERE name=:name;
ExecSQL;
end;
Но в вашем случае достаточно указать название атрибута(колонки), а не параметра.