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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 14:39   #1
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию Удалить запись в таблице через DBgrid

у меня получаются что удаляются все записи в таблице, а надо только текущую (выделенная строка в гриде)

вот мои потуги
Код:
begin
    if messageDlg('Удалить запись?', mtconfirmation,[mbYes,mbNo],0)=mrYes
  then
 with datamodule2.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('DELETE FROM Attestat WHERE Id_sotrud=' +Form7.DBGrid2.Fields[1].AsString);
    ExecSQL;
    datamodule2.Attestat.Active:=False;
    datamodule2.Attestat.Active:=true;
  end;
Scorpuha вне форума Ответить с цитированием
Старый 11.02.2014, 14:51   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Попробуйте
Код:
Form7.DBGrid2.Fields[1].Value
Streletz вне форума Ответить с цитированием
Старый 11.02.2014, 15:04   #3
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Попробуйте
Код:
Form7.DBGrid2.Fields[1].Value
выдает ошибку
Изображения
Тип файла: jpg Безымянный.JPG (20.5 Кб, 61 просмотров)
Scorpuha вне форума Ответить с цитированием
Старый 11.02.2014, 16:01   #4
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Код:
begin
    if messageDlg('Удалить запись?', mtconfirmation,[mbYes,mbNo],0)=mrYes
  then
 with datamodule2.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('DELETE FROM Attestat WHERE Id_sotrud=' +QuotedStr(Form7.DBGrid2.Fields[1].AsString));
    ExecSQL;
    datamodule2.Attestat.Active:=False;
    datamodule2.Attestat.Active:=true;
  end;
Попробуйте так...

а скорее всего вы берёте данные из поля типа integer, тогда лучше так
Код:
SQL.Add('DELETE FROM Attestat WHERE Id_sotrud=' +QuotedStr(IntToStr(Form7.DBGrid2.Fields[1].AsInteger)));
Да и к полям лучше обращаться по названию и в запросах использовать параметры...

Последний раз редактировалось Dozent; 11.02.2014 в 16:04.
Dozent вне форума Ответить с цитированием
Старый 11.02.2014, 16:18   #5
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

тоже ругается на счет типов данных

а так решил вот таким способом

Код:
if messageDlg('Удалить запись?', mtconfirmation,[mbYes,mbNo],0)=mrYes
  then
    form7.DBGrid2.DataSource.DataSet.Delete;
Scorpuha вне форума Ответить с цитированием
Старый 11.02.2014, 16:28   #6
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

таким способом вы удалите данные из набора данных которые получили при откртии приложения ну или когда там у вас датасет таблицы получает данные, а в таблице БД всё останется как и было. Ошибку покажите и покажите структуру таблицы
Dozent вне форума Ответить с цитированием
Старый 11.02.2014, 16:44   #7
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

почему же останется в таблице ? у меня данные удаляются из таблицы.
Scorpuha вне форума Ответить с цитированием
Старый 11.02.2014, 16:48   #8
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

а ну да) там же идёт привязка таблицы из БД, просто очень давно не пользуюсь данным видом работы с БД, потому немножко тупанул....
Dozent вне форума Ответить с цитированием
Старый 11.02.2014, 16:57   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Scorpuha Посмотреть сообщение
у меня получаются что удаляются все записи в таблице, а надо только текущую (выделенная строка в гриде)

вот мои потуги
Код:
begin
    if messageDlg('Удалить запись?', mtconfirmation,[mbYes,mbNo],0)=mrYes
  then
 with datamodule2.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('DELETE FROM Attestat WHERE Id_sotrud=' +Form7.DBGrid2.Fields[1].AsString);
    ExecSQL;
    datamodule2.Attestat.Active:=False;
    datamodule2.Attestat.Active:=true;
  end;
Вот смотрите
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if Application.MessageBox(PChar('Вы действительно хотите удалить  : ' + ADOQuery1Naimenovanie.AsString), 'Внимание!!!', MB_OKCANCEL)=id_OK then
   ADOQuery1.Delete;
end;
Вложения
Тип файла: rar T12.rar (327.9 Кб, 9 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 11.02.2014, 17:07   #10
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

ой извините, но проект мне некогда смотреть, а вот то что вы написали тут как раз не будет удаления из БД, потому что квери это квери а TTable это совсем дургое, давайте структуру таблицы из БД сюда) будем составлять норм запрос на удаление
Dozent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выявить одинаковые числа в таблице и удалить их falcon-2005 Microsoft Office Excel 4 30.05.2011 14:59
удалить повторы в таблице Радужок Microsoft Office Excel 2 30.04.2011 20:37
Удалить через SQL строку в таблице ADOQuery1 UNToxa БД в Delphi 2 20.03.2011 15:44
VBA_макрос: удалить всю строку в таблице, если в ней есть слово "удалить" макарошка Microsoft Office Excel 15 05.10.2010 09:09
удалить записи в таблице Dbf. pups БД в Delphi 7 15.12.2006 19:19