Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

обновление detail - таблицы [D5]


zunder ©   (2004-12-02 17:17:00) 

в событии master.OnDataChange закрываю таблицу и если связываемые поля в master`е не пустые открываю ее, при работе программы возникает ошибка обращения не к свое области памяти.
Не могу понять что не так.

const Busy: Boolean = False;
begin
 if Busy then
   Exit;
   
 Busy := True;  
 if (AnsiUpperCase(Sender.FieldName) = 'AR_INN') then
   if Sender.IsNull then begin
     dstMain.FN('AR_NAME').Clear;
     dstMain.FN('DOG_NO').Clear;
     dstMain.FN('DOG_DATA').Clear;
   end;

 if (AnsiUpperCase(Sender.FieldName) = 'DOG_NO') then
   if Sender.IsNull then
     dstMain.FN('DOG_DATA').Clear;

 //обновить договоры арендатора
 if dstMarkDogs.State = dsBrowse then begin
   dstMarkDogs.Close;
   if (dstMain.FN('AR_INN').AsString <> '') or (dstMain.FN('DOG_NO').AsString <> '') then
     dstMarkDogs.CloseOpen(False);
 end;

 if (AnsiUpperCase(Sender.FieldName) = 'RENT') or (AnsiUpperCase(Sender.FieldName) = 'PENI') or (AnsiUpperCase(Sender.FieldName) = 'NDS') then begin
   dstMain.FN('PAY_AMOUNT').AsFloat := dstMain.FN('RENT').AsFloat+dstMain.FN('NDS').AsFloat+dstMain.FN('PENI').AsFloat;
 end;
 
 Busy := False;


zunder   (2004-12-03 11:04:00) [1]

dstMain переходит в режим [dsEdit,dsInsert] при открытии модального окна.
Busy нужна для того чтобы не было рекрсивных обработок, т.к. dstMain - master.
В master-detail, если ключ мастера пустой (добавляем запись в master) у меня detail-таблица выдает все записи, мне это не надо, может какая-то настройка есть в FIBPlus компонентах, которая позволяет автоматически закрывать detail dataset и открывает его при установке ключа?


msguns   (2004-12-02 18:14:00) [2]

Не вникая в смысл таких странных переоткрытий (зачем их делать руками, если определена связь Master-Detail, причем стринговые поля, если связь д.б. по ID, что делает таинственный Busy,который по идее всегда ложь (или он переприсваивается в обработчмках событий датасетов) и т.д.), не понятно как работает присвоение в последней конструкции if, если предварительно НД не был переведен в моду Edit.
Вообще странная связь ;))


Наверх

Титульная страница Поиск, карта сайта Написать письмо