Удаление связей в TTable
От: Аноним  
Дата: 01.03.04 16:48
Оценка:
Прошу сразу не пинайте ногами.
Приложение на D6 + Paradox: в приложении есть 5 Table, 5 DataSourse, 5 DBGrid. 3 комплекта (Table+ DataSourse+ DBGrid) представляют из себя справочники. Данные в 2 другие комплекта заносятся из этих 3 справочников с помощью lookup полей. Т.е. на этапе проектирования у меня таблицы через «MasterSource» и «MasterFields» не связаны. С этим все нормально. Реализую каскадное удаление записей, т.е. говорю — удалить запись в таблице первого уровня, программа удаляет все записи в дочерних таблицах и затем только удаляет в таблице первого уровня. Но что бы это провернуть таблицы должны быть связаны. Связываю их динамически:

form1.TableSotrudnik1.MasterSource := Form1.dsOtdel;
form1.TableSotrudnik1.MasterFields := 'O_IDOtdel';
form1.TableSotrudnik1.IndexName := 'indS_IDOtdel';
Form1.TableProiz.MasterSource := Form1.dsSotrudnik1;
Form1.TableProiz.MasterFields := 'S_TabelNumber';
Form1.TableProiz.IndexName := 'indP_TabelNumber';
Произвожу удаление.


Внимание вопрос: КАК АННУЛИРОВАТЬ СВЯЗЬ, КОТОРУЮ Я УСТАНОВИЛ ДИНАМИЧЕСКИ???

Попробовал так:

form1.TableSotrudnik1.MasterSource.Destroy;
form1.TableSotrudnik1.MasterFields := '';
form1.TableSotrudnik1.IndexName := '';
Form1.TableProiz.MasterSource.Destroy;
Form1.TableProiz.MasterFields := '';
Form1.TableProiz.IndexName := '';


Но не пошло, всем Table’ам свойству Active присваивается FALSE, т.е. они у меня становятся на форме в режиме runtime становятся неактивны, насколько я понял из-за Destroy т.е TableSotrudnik1 уничтожается.

Скажите пожалуйста что делаю неправильно!!!! Я практически в отчании.....
Re: Удаление связей в TTable
От: Аноним  
Дата: 02.03.04 00:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Прошу сразу не пинайте ногами.

А>Приложение на D6 + Paradox: в приложении есть 5 Table, 5 DataSourse, 5 DBGrid. 3 комплекта (Table+ DataSourse+ DBGrid) представляют из себя справочники. Данные в 2 другие комплекта заносятся из этих 3 справочников с помощью lookup полей. Т.е. на этапе проектирования у меня таблицы через «MasterSource» и «MasterFields» не связаны. С этим все нормально. Реализую каскадное удаление записей, т.е. говорю — удалить запись в таблице первого уровня, программа удаляет все записи в дочерних таблицах и затем только удаляет в таблице первого уровня. Но что бы это провернуть таблицы должны быть связаны. Связываю их динамически:

А зачем спрашивается нагружать программу каскадным удалением, когда это все весьма просто реализуется на уровне Paradox-таблиц, надо только связать их соответствующими отношениями...
Re[2]: Удаление связей в TTable
От: orger Россия  
Дата: 02.03.04 10:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Прошу сразу не пинайте ногами.

А>>Приложение на D6 + Paradox: в приложении есть 5 Table, 5 DataSourse, 5 DBGrid. 3 комплекта (Table+ DataSourse+ А>>DBGrid) представляют из себя справочники. Данные в 2 другие комплекта заносятся из этих 3 справочников с помощью А>>lookup полей. Т.е. на этапе проектирования у меня таблицы через «MasterSource» и «MasterFields» не связаны. С этим А>>все нормально. Реализую каскадное удаление записей, т.е. говорю — удалить запись в таблице первого уровня, А>>программа удаляет все записи в дочерних таблицах и затем только удаляет в таблице первого уровня. Но что бы это А>>провернуть таблицы должны быть связаны. Связываю их динамически:

А>А зачем спрашивается нагружать программу каскадным удалением, когда это все весьма просто реализуется на уровне А>Paradox-таблиц, надо только связать их соответствующими отношениями...


Т.е. вы имели в виду если буду установлены соответствующие связи, достаточно будет удалить одну запись в таблице верхнего уровня, и все записи в подчиненых таблицах удаляся сами????!!!!! Если так, то почему авторы книги которую я использую в виде помоши при написанни программы написали что именно программист должен сам реализовать каскадное удаление записей, а не сказали что все иак просто.

Прошу пример в студию...
Re: Удаление связей в TTable
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.03.04 11:37
Оценка: 3 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Внимание вопрос: КАК АННУЛИРОВАТЬ СВЯЗЬ, КОТОРУЮ Я УСТАНОВИЛ ДИНАМИЧЕСКИ???

Вместо разрыва связи ты убил сам объект. Аналогия: решил ты выкинуть человека из телефонной книжки. Но вместо того, чтобы лист вычеркнуть, пошел и застрелил его. Из помпового ружья. Молодец. Не, не дам я тебе свой телефон.
Теперь попробуй так:
  form1.TableSotrudnik1.MasterSource:= nil;

И т.д.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Удаление связей в TTable
От: orger Россия  
Дата: 02.03.04 12:03
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:


А>>Внимание вопрос: КАК АННУЛИРОВАТЬ СВЯЗЬ, КОТОРУЮ Я УСТАНОВИЛ ДИНАМИЧЕСКИ???

S>Вместо разрыва связи ты убил сам объект. Аналогия: решил ты выкинуть человека из телефонной книжки. Но вместо того, чтобы лист вычеркнуть, пошел и застрелил его. Из помпового ружья. Молодец. Не, не дам я тебе свой телефон.
S>Теперь попробуй так:
S>
S>  form1.TableSotrudnik1.MasterSource:= nil;
S>

S>И т.д.

Огромное Вам человеческое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.