Текущий архив: 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.46 MB
Время: 0.04 c