Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2014.04.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.001 c
2-1372278605
Вова
2013-06-27 00:30
2014.04.06
Как правильно поставить процесс на паузу?


2-1371967597
Aleks
2013-06-23 10:06
2014.04.06
проблемы с Xml


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


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


15-1381571203
RDen
2013-10-12 13:46
2014.04.06
боян - выбор конфигурации компа





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