Главная страница
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.057 c
1-1156600280
nali
2006-08-26 17:51
2006.10.08
Мерцания при прорисовке ячеек грида


2-1158396165
SPACE!!
2006-09-16 12:42
2006.10.08
Хранение графических ресурсов ..


2-1158739362
KyRo
2006-09-20 12:02
2006.10.08
Время конекта


15-1158251137
Чародей
2006-09-14 20:25
2006.10.08
OpenGL® SuperBible, Third Edition


15-1158424188
*Новенький*
2006-09-16 20:29
2006.10.08
Словарик интернетчика.