|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Удаление записей из связанных таблиц
Здравствуйте.
Из одной таблицы удаление: Код:
if (Table1.RecordCount>0) then begin u:=MessageDlg('Удалить проект?',mtCustom,[mbYes,mbNo],0); if u=mrYes then begin Table1.Delete; //Table2.Delete; end; Но в связанных с таблицей 1, таблицах записи не удаляются. Я понимаю , что есть каскадное удаление, но там при удалении ошибка появлялась. И второй вопрос. Что надо добавить в строке u:=MessageDlg('Удалить проект?',mtCustom,[mbYes,mbNo],0); чтобы в диалоговом окне удалить проект стояло ,то что введено в таблицу 1, т.е в combobox? Последний раз редактировалось Maks19, 17.07.2019 в 20:53. |
#2
|
|||
|
|||
на второй вопрос:
Код:
u:=MessageDlg('Удалить проект '+Table1.FieldByName('...').AsSTring + '?',mtCustom,[mbYes,mbNo],0); На первый вопрос. Если база - СУБД (MS SQL, Oracle, Interbase, etc), то действительно можно применять каскадное удаление.Тогда БД сама по ключам удалит нужные записи. Если БД локальная (типа Paradox, dBase), то придется удалять руками. Т.е. из главной таблицы запоминаешь уникальный id записи, удаляешь из подчиненных таблиц записи с соотв. значением, указывающем на главную запись и в конце удаляешь соотв. запись из главной таблицы. |
#3
|
|||
|
|||
Цитата:
На запись Код:
u:=MessageDlg('Удалить проект'+'Table1.FieldByname('Projname').AsString'+'?',mtCustom,[mbYes,mbNo],0); |
#4
|
|||
|
|||
Цитата:
|
#5
|
|||
|
|||
не просто не там, а по своей инициативе добавил лишних...
|
#6
|
|||
|
|||
Цитата:
|
#7
|
|||
|
|||
Цитата:
Ну есть же у тебя какое-то поле, по которому осуществляется связь таблиц. Вот оно и является id записи в главной таблице... |
#8
|
|||
|
|||
Код:
Table3.Delete |
#9
|
|||
|
|||
Ага, именно в цикле.
Тут интересный вопрос, что у тебя в таблице. Если она уже отфильтрована что бы показывать только те записи, которые тебе нужны, то просто надо удалить все записи. Если же там вообще все записи, то тогда надо делать проверку. Например, как-то так (код не проверял): Код:
Table3.first; while not Table3.eof do if Table3.FieldByName('...').AsInteger = ... // условие на поиск записи, которые надо удалять Then Table3.Delete Else Table3.Next; |