Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.04.06;
Скачать: CL | DM;

Вниз

DBLookUpComboBox конфликт   Найти похожие ветки 

 
well ©   (2011-02-07 14:47) [0]

Не буду приводить весь текст программы, но суть в следующем.
Есть две таблицы. Table1 и Table2. Вторая таблица связана с первой, скажем по полю ID_Table1.
Доступ к таблицам через TADOQuery,TDataSource.

1. Делаю обратобчик события OnDataChange первой таблицы

[code]TForm1::TDataSource1DataChange(TObject *Sender, TField *Field)
{
   Table1->Close();
//
//Тут выполняются некоторые действия, которые не влияют на проблему
//
   Table1->Open();
}[/code]

Обработка проходит успешно, ошибок нет.

2. Добавляю элемент BDLookUpComboBox
 DataSource=DataSource2
 DataField=ID_Table1
 ListSource=DataSource1
 KeyField=ID
 ListField=какое то поле

И тут при запуске программы выдаётся сообщение о переполнении стека.

Что за конфликт? И как его обойти?
Пожалуйста подскажите!


 
И. Павел ©   (2011-02-07 15:20) [1]

> Делаю обратобчик события OnDataChange первой таблицы


Occurs when the data in a record has changed, either due to field edits or moving the cursor to a new record.
Когда вы открываете таблицу (Table1->Open) то вызывается TDataSource1DataChange и т.д. пока не истратится весь стек.


 
И. Павел ©   (2011-02-07 15:26) [2]

> И как его обойти?


Отключением этого события на время:

DataSource1.OnDataChange = NULL;
try
 Table1->Open;
finally
 DataSource1.OnDataChange = TDataSource1DataChange;  //тут не помню, нужен ли "&" в C++Builder
end;


 
well ©   (2011-02-07 15:27) [3]

А если я убираю BDLookUpComboBox почему он не тратится?


 
И. Павел ©   (2011-02-07 15:33) [4]

> А если я убираю BDLookUpComboBox почему он не тратится?

Трассируйте и да узрите :)

У меня вот такой код (без DBLookUpComboBox) приводит (при нажатии на кнопку Button1) к зацикливанию:

procedure TMainForm.DataSource1DataChange(Sender: TObject; Field: TField);
begin
 Table1.Close;
 Table1.Open;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
 Table1.Open;
end;


 
Плохиш ©   (2011-02-07 15:53) [5]


> И как его обойти?

Не сувать всякую дерьмообработку куда не попадя. Не преднозначено событие onDataChange для закрытий/открытий связанного набора данных.


 
well ©   (2011-02-07 16:39) [6]

Ладно, тут ты прав. Хотел попроще сделать, а получилось как всегда :)



Страницы: 1 вся ветка

Текущий архив: 2014.04.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
15-1381492740
v1.0
2013-10-11 15:59
2014.04.06
Назвать классы


11-1235303269
Dy1
2009-02-22 14:47
2014.04.06
глючный KOLAdd


15-1380921656
KilkennyCat
2013-10-05 01:20
2014.04.06
Удивительное в мире отечественной электроники.


15-1381696203
Юрий
2013-10-14 00:30
2014.04.06
С днем рождения ! 14 октября 2013 понедельник


3-1297498336
Гость
2011-02-12 11:12
2014.04.06
Почему запрос так долго выполняеется