Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Удаление записи из базы данных mdb


Автор: badman 30.9.2004, 07:41
Не подскажите, желательно на примерчике, как реализовать САБЖ выбранной. Я делаю так, но ничего не получается?
ADOTable1.DeleteRecords := arCurrent;

Автор: Dynamic 30.9.2004, 08:28
Код
ADOTable1.Delete
?

Автор: badman 1.10.2004, 10:16
Спасибо большое, а возможно ли удаление всех записей из связанной таблице, например: есть две таблицы главная и подчиненная, в главной удаляется запись, а в подчиненной есть N кол-во записей относящихся к записи в главной таблице. Вот их то и надо удалить все сразу, вопрос как?

Автор: Гость_guest 1.10.2004, 14:03
если связ имеет параметр cascade то ето произаидет автоматичеки, в противном случае нужно удолять в ручную

Автор: badman 1.10.2004, 15:30
Цитата
если связ имеет параметр cascade то ето произаидет автоматичеки, в противном случае нужно удолять в ручную

А где этот параметр устанавливается?

Автор: Dynamic 1.10.2004, 16:00
В общем случае можно делать так:
Код
var Cascade: boolean = nil; // флаг каскадного удаления
.............
procedure TDataModule.MasterTableBeforeDelete(DataSet: TDataSet);
begin
    Cascade := true;
    while not DetailTable.IsEmpty do DetailTable.Delete;
    Cascade := false;
end;

procedure TDataModule.DetailTableBeforeDelete(DataSet: TDataSet);
begin
    if not Cascade then
      if MessageBox(..........) <> ID_YES then abort;
end;


Флаг нужен, чтобы MessageBox не вылазил на каждой записи при каскадном удалении.
Добавлено @ 16:02
В парадоке есть опция Cascade, но она ничего не удаляет, а просто не позволяет удалить мастер-запись, для которой есть деталь-записи, т.е. просто ограничение. Для акцесса не знаю.

Автор: Pakshin A. S. 1.10.2004, 18:33
А я бы так:
Код

with ADOQuery1{Настраивается так же как и Table} do
begin
 Close;
 SQl.Text:='Delete * from Table2 where Table2.Id = Table1.Id;';
 ExecSQL;
 Close;
 SQL.Text:='Delete * from Table1;';
 ExecSQL;
 Close
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)