Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2010, 09:12   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию Удалить строку таблицы

Имеется таблица Наличие документов. мне нужно удалить строку таблицы у которой Наименование = 8. Использую вот такой код
Код:
Query1.SQL.Clear;
//Query1.SQL.Text:= 'SELECT *';
Query1.SQL.Text:= 'DELETE FROM Наличие_документов';
Query1.SQL.Text:= 'WHERE Наименование='+'8';
Что я делаю не так у меня не удаляет.
Aleksandr вне форума Ответить с цитированием
Старый 13.03.2010, 09:37   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Может так:
Код:
Query1.SQL.Text:= 'WHERE Наименование=8';
М?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.03.2010, 09:40   #3
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Нет у меня 8 не число , а текст.
Есть CheckBox если ставлю флажок , то добавляется строка в таблице. Если убираю флажок то удаляется строка из таблицы. Без SQL запроса удаляет, но последнюю строку, а мне нужно, чтобы именно у которой наименование равнялось 8
Код:
procedure TEditRecordForm.CheckBox10Click(Sender: TObject);
begin
if checkbox10.Checked then begin
List9.Enabled:=true;
List9.SetFocus;
DataModule1.NalDokTable.Insert;
Datamodule1.NalDokTable.FieldByName('Наименование').Value:= 8;
DataModule1.NalDokTable.Post;
  end
  else
  begin
// if Datamodule1.NalDokTable.FieldByName('Наименование').AsFloat =8 then
 //  begin
  List9.Clear;
  List9.Enabled:=false;
//  DataModule1.NalDokTable.Delete;

Query1.SQL.Clear;
//Query1.SQL.Text:= 'SELECT *';
Query1.SQL.Text:= 'DELETE FROM Наличие_документов';
Query1.SQL.Text:= 'WHERE Наименование='+'8';
//Query1.Open;
//Query1.Delete;

//    end;
   end;


end;

Последний раз редактировалось Aleksandr; 13.03.2010 в 09:50.
Aleksandr вне форума Ответить с цитированием
Старый 13.03.2010, 09:42   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Может так:
Код:
Query1.SQL.Clear;
//Query1.SQL.Text:= 'SELECT *';
Query1.SQL.Text:= 'DELETE * FROM Наличие_документов';
Query1.SQL.Text:= 'WHERE Наименование='+'8';
??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.03.2010, 09:43   #5
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Код:
Query1.SQL.Clear;
Query1.SQL.Text:= 'DELETE FROM Наличие_документов WHERE Наименование = 8';
Query1.Open;
Проверь, должно работать.
Gorychev вне форума Ответить с цитированием
Старый 13.03.2010, 10:12   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Gorychev
Код:
Query1.Open;
учу молодых, что для insert/update/delete нельзя использовать открытие датасета, а опытные коллеги туда же

НЕЛЬЗЯ ДЕЛАТЬ .OPEN для запросов, которые изменяют данные! Это только для запросов с SELECT


Aleksandr
а что Вы полю text присваиваете 1-ю половину запроса, потом её затираете и присваивает 2-ю половину запроса?! и что, по Вашему, после этих манипуляций будет в SQL.Text ?!!

попробуйте либо так:
Код:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('DELETE FROM Наличие_документов');
Query1.SQL.Add('WHERE Наименование=8');
Query1.ExecSQL;
либо так:
Код:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('DELETE FROM Наличие_документов');
Query1.SQL.Add('WHERE Наименование=''8''');
Query1.ExecSQL;

Последний раз редактировалось Serge_Bliznykov; 13.03.2010 в 10:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2010, 10:25   #7
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Все равно не удаляет

Последний раз редактировалось Aleksandr; 13.03.2010 в 10:36.
Aleksandr вне форума Ответить с цитированием
Старый 13.03.2010, 10:38   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну разумеется!
писать в форуме вредно - описки возникают...
Правильно, разумеется,
Код:
Query1.ExecSQL;
в своём сообщении подправил..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2010, 21:55   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Добавлю свои "пять копеек"
Может, так ?
Код:
Query1.SQL.Text:= 'DELETE * FROM Наличие_документов WHERE Наименование='+QuotedStr('8');
mihali4 вне форума Ответить с цитированием
Старый 15.03.2010, 17:19   #10
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Тоже не удаляет.
Aleksandr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить строку? Nesta23 Общие вопросы C/C++ 0 12.01.2010 20:36
Удалить последнюю строку из файла Flame_of_Death Помощь студентам 6 21.07.2009 13:48
C#: Добавить, Изменить и удалить строку в бд Veiron Общие вопросы .NET 1 10.06.2009 09:25
Добавить строку в ДБГрид и удалить MbIJIO БД в Delphi 4 18.04.2009 12:45
Как удалить строку в Excel? Dux Microsoft Office Excel 5 01.02.2009 21:04