Главная страница
    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.04 c
2-1158908775
kyn66
2006-09-22 11:06
2006.10.08
Клик по Listbox


3-1155117094
DelphiLexx
2006-08-09 13:51
2006.10.08
Как очистить от данных TFIBDataSet не закрывая его


2-1158359832
Juri
2006-09-16 02:37
2006.10.08
Фильтровать базу данных по куску слова


10-1124182498
mic_2000
2005-08-16 12:54
2006.10.08
Как добавить нумерованый список в MS Word


3-1154527729
Scorpio
2006-08-02 18:08
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский