• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

FLYer

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

Вот мой запрос:
Код:
with DataModule2.ADOQuery3 do
begin
Sql.Text:='DELETE FROM [Контакты] WHERE name='+DBLookUpListBox1.SelectedItem;
ExecSQL;
end;

здесь name - ранее созданный в квери параметр, соответсвующий полю Имя в лист боксе

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

nayke

У меня есть БД с 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;
Но в вашем случае достаточно указать название атрибута(колонки), а не параметра.
 
F

FLYer

Огромное спасибо!!! Сработало с ADOTable.Delete :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!