aleksandrus
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго времени суток. Есть проект на BCB 6, раньше использовался cxGrid от DevExpress 5 + TADOQuery. Обновил DevExpress до 6.46, и начались очень странные тормоза. Код: TcxGridDBTableView *view TADOQuery *aq1, *aq2 TDataSource *ds1, *ds2 ds1->DataSet = aq1; view->DataController->DataSource = ds1; aq1->SQL->Text = "SELECT * FROM TEST"; aq1->SQL->Open(); | Данные заполнили грид, затем при необходимости обновить запрос: Код: view->DataController->DataSource = NULL;//Поидее, должен отвязать грид от датасета? //И вот тут при закрытии задержка почти две секунды, хотя раньше выполнялось мгновенно: aq1->Close(); aq1->SQL->Text = "SELECT * FROM TEST2"; aq1->SQL->Open(); view->DataController->DataSource = ds1; | Методом тыка нашёл способ избежать такого поведения. Создаётся временные ADOQuery, DataSource, на которые "перенаправляется" грид, причём их обязательно надо открыть. После этого настоящий датасет закрывается как и раньше - без тормозов. Код: aq2->SQL->Text = "SELECT * FROM TEST3"; ds2->DataSet = aq2; view->DataController->DataSource = ds2; aq2->Open(); //А теперь закрывается мгновенно: aq1->Close(); aq1->SQL->Text = "SELECT * FROM TEST2"; aq1->SQL->Open(); view->DataController->DataSource = ds1; | Есть идеи, что же происходит и как с этим бороться? И как, нужно правильно обновлять запрос для грида? |