Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Ошибка при удалении   Найти похожие ветки 

 
Ilg   (2006-08-06 22:45) [0]

Здравствуйте!
Столкнулся с такой проблемой:
Имеются две связанные таблицы ...
При удалении записи из одной выдается сообщение об ошибке Master has detail records. Cannot delete or modify.
Почему это происходит и как этого избежать?
Заранее Большое спасибо!


 
Anatoly Podgoretsky ©   (2006-08-06 23:58) [1]

Потому что Master has detail records и наложена ссылочная целостность. И удаление не их одной из них. А из мастера. Удали раньше детальные записи.


 
Ilg   (2006-08-07 10:33) [2]

Если я правильно понял, то я должен сначала удалить все записи второй таблицы, имеющие в связанном поле значение = значению в удаляемой записи Master. Или нет?
Т. е. нет способа просто удалить запись в первой таблице?


 
Sergey13 ©   (2006-08-07 10:54) [3]

> [2] Ilg   (07.08.06 10:33)
> Т. е. нет способа просто удалить запись в первой таблице?
Если в Парадоксе нет каскадного удаления (я не в курсе), то по другому нельзя. Эта связь для того и сделана, что бы запретить удаление записей, имеющих связанные дочерние.


 
Desdechado ©   (2006-08-07 11:01) [4]

Ccылка одной таблицы на другую - это не надпись на заборе, а забота о логической непротиворечивости и целостности данных. Если тебя эти 2 понятия не заботят, сними ссылку. Если заботят, то играй по правилам - сначала удаляй все, что использует это значение из справочника, а затем уже удаляй справочное значение.


 
Ilg   (2006-08-07 17:13) [5]

Делаю с удалением в дочерней таблице. Но ошибка все равно возникает :-(
Делаю так:
procedure TDataModule1.Table2BeforeDelete(DataSet: TDataSet);
begin
Table1.DisableControls;
Table1.Filter:="Topic="+QuotedStr(Table2ShN.AsString);
Table1.Filtered:=true;
//showmessage("Table1:"+inttostr(Table1.RecordCount));
Table1.First;
while not Table1.EOF do
Table1.Delete;
//showmessage("Table1:"+inttostr(Table1.RecordCount));
Table1.Filtered:=false;
Table1.EnableControls;
end;

Причем записи из Table1 удаляются нормально, а при удалении из Table2 возникает та же ошибка (Master has detail records. Cannot delete or modify).
Что я делаю не так? Может что-то забыл?


 
Ilg   (2006-08-07 19:50) [6]

Разобрался ... Оказывается у меня указатель в Table2 смещался и была попытка удалять другую запись.

Теперь другой вопрос (может быть глупый):
При изменении записи в родительской таблице нужно проводить подобные действия с дочерней?


 
Neo Trinitron ©   (2006-08-08 10:59) [7]

Блин, а запросами нельзя было удалить?

> При изменении записи в родительской таблице нужно проводить подобные действия с дочерней?

надеюсь не идёт речь об редактировании ключевого поля?



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
3-1154815736
lexander
2006-08-06 02:08
2006.10.08
ADO + агрегирование (access)


15-1158435187
Real
2006-09-16 23:33
2006.10.08
Какой каталогизатор посоветуете?


2-1158325717
DevilDevil
2006-09-15 17:08
2006.10.08
Delphi+uses Clipbrd VS Notepad


3-1155020491
DelphiLexx
2006-08-08 11:01
2006.10.08
Добавлять записи из одного TRxMemoryData в другой


15-1158593451
Kerk
2006-09-18 19:30
2006.10.08
Любовь к родине — чисто животное чувство