Главная страница
    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.46 MB
Время: 0.043 c
15-1158127245
Rouse_
2006-09-13 10:00
2006.10.08
Интернет входит в правовые рамки.


2-1157710078
id
2006-09-08 14:07
2006.10.08
Работа с BLOB полями


2-1158572518
Димыч
2006-09-18 13:41
2006.10.08
Перехват сообщений "Службы сообщений" Windows


1-1156592548
Handle
2006-08-26 15:42
2006.10.08
TTreeView


15-1158596104
Весь в делах
2006-09-18 20:15
2006.10.08
Вопрос к ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский