Программирование - это просто
Advertisement
Главная arrow Уроки Delphi arrow Delphi - это просто! arrow Delphi - это просто. Урок 8.11.6:  Групповое удаление данных из таблицы средствами SQL.
26.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Delphi - это просто. Урок 8.11.6:  Групповое удаление данных из таблицы средствами SQL. Печать E-mail
Автор megabax   
17.07.2011 г.
Базы данных

Delphi - это просто. Урок 8.11.6:  Программируем создание и печать накладных.

 Часть 6.  Групповое удаление данных из таблицы средствами SQL.

Исходники к уроку вы можете скачать здесь.

Это последний урок из серии "Delphi - это просто!", публикуемый в бесплатном разделе. Начиная со следующего, публикация уроков будет продолжена в платном разделе. В бесплатном же разделе, возможно, иногда будут публиковать некоторые статьи, посвященные основам программирования на Delphi.

Сегодня мы добавим к нашем журналу накладных две кнопочки: "Добавить" и "Удалить". Помните на прошлом уроке мы добавляли и удаляли строки из накладной? Теперь это же будем делать с целыми документами. Казалось бы, чего сложно, берем тот же алгоритм и применяем его к документу. А нет! В прошлый раз мы удаляли из базы данных только один объект: строку документа. А теперь нам надо по кнопочке "Удалить" кильнуть как сам документ, так и все его строки, которые у нас хранятся в другой таблицы. При чем удалить нам надо только строки данного документа, не затронув записи других документов. А вот с добавлением все обстоит куда проще: алгоритм тот же самый, что и в прошлый раз. 

И так, открываем исходники, созданные на прошлом уроке. Если их у вас нет, скачайте их здесь. На форму TfrmDocs добавляем кнопочки и компонент  TTable. Называем его tbDocs и связываем с таблицей DOCS.DB*:

Delphi - это просто. Урок 8.11.6:  Программируем создание и печать накладных. Часть 6.  Групповое удаление данных из таблицы средствами SQL.

Этот компонент TTable нужен нам для добавления документов. А вот для удаления нам нужен TQuery. Так же добавим его к форме из панели компонентов*:

Delphi - это просто. Урок 8.11.6:  Программируем создание и печать накладных. Часть 6.  Групповое удаление данных из таблицы средствами SQL.

Кидаем его на форму, присваиваем имя qDelete и начинаем программировать. Для начала давайте, как и в прошлый раз, оформим отдельную процедуру RefreshTable:

procedure TfrmDocs.RefreshTable;

begin

  qDocs.Active:=false;

  qDocs.Active:=true;

end;

Про то, что ее надо объявить в описании класса формы я уже не говорю - и так понятно. Разумеется, переделываем по этому поводу TfrmDocs.btnEditClick:

procedure TfrmDocs.btnEditClick(Sender: TObject);

var frm:TfrmDoc; id:integer;

begin

   id:=qDocs.FieldByName('DocNum').Value;

   frm:=TfrmDoc.Create(self);

   if frm.OpenDoc(id, WaresFields)=mrOK then  RefreshTable;

end;

А теперь займемся кнопочками. Кнопка "добавить", как я и сказал, ничего сложно, почти полностью повторяем строки из прошлого урока:

procedure TfrmDocs.btnAddClick(Sender: TObject);

begin

  tbDocs.Active:=true;

  tbDocs.Append;

  tbDocs.FieldValues['DocDate']:=Date;

  tbDocs.Post;

  tbDocs.Active:=false;

  RefreshTable;

end;

А вот с кнопочкой "Удалить" тут уже по интереснее, при помощи компонента TQuery посылам два запроса: на удаление строк накладной и самой накладной:

procedure TfrmDocs.btnDeleteClick(Sender: TObject);

var

   query:string;

begin

  query:='DELETE FROM TABLPARTS WHERE doc='+qDocs.FieldByName('DocNum').AsString;

  qDelete.Close;

  qDelete.SQL.Clear;

  qDelete.SQL.Add(query);

  qDelete.ExecSQL;

  query:='DELETE FROM DOCS WHERE id='+qDocs.FieldByName('DocNum').AsString;

  qDelete.Close;

  qDelete.SQL.Clear;

  qDelete.SQL.Add(query);

  qDelete.ExecSQL;

  RefreshTable;

end;

 Тут тоже все предельно просто: при помощи компонента TQuery посылаем сначала запрос 

DELETE FROM TABLPARTS WHERE doc=<Текущий номер документа>

который удалит из таблицы TABLPARTS  строки документа а затем посылаем второй запрос на удаление уже самого документа:

DELETE FROM DOCS WHERE id=<Текущий номер документа>

Теперь тестируем нашу программу:

Delphi - это просто. Урок 8.11.6:  Программируем создание и печать накладных. Часть 6.  Групповое удаление данных из таблицы средствами SQL.

Как мы узнаем, действительно ли при нажатии на кнопочку "Удалить" удаляться из базы в том числе и строки документов? В Delphi мы могли воспользоваться специальной утилитой для просмотра базы данных. В Turbo Delphi такого нет. Ничего страшного. Напишите ее сами, воспользовавшись материалом урока  "Delphi. Урок 8.4. Базы данных: пишем форму просмотра баз данных."

Исходники к уроку вы можете скачать здесь.


Скриншоты, помеченные знаком* , являются цитатами и иллюстрациями  программного продукта "Turbo Delphi", авторское право на который принадлежит фирме "Borland Delphi".

 

Последнее обновление ( 06.11.2011 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги