![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не выводятся данные в DBGrid [D7, IB6.x]
galexis © (2005-11-09 11:38:00)Извиняюсь за глупый вопрос, но торможу, ничего не поделать.
Ситуация такая: идет поиск по фоновому запросу и вывод данных (TIBQuery+TDataSource+TDBGrid). Все работает прекрасно.
Меняю запрос с фонового на прямой, т.е.
FindQr.SQL.Clear;
FindQr.SQL.Add(....);
FindQr.Open;
В DBGrid остаются данные предыдущего запроса.
Я так понимаю дело в "фоновом наборе данных". Как его очистить?
Digitman (2005-11-11 09:54:00) [1]
> galexis
по поводу корректной отмены в IB "тяжелых" запросов, выполняемых в теле ХП, на ibase.ru есть статья
Leonid Troyanovsky (2005-11-10 10:08:00) [2]
> galexis (09.11.05 12:44) [8]
> Поиск в другом потоке - единственный способ отменить выполнение
> запроса, который я знаю.
А выглядит отмена как TerminateThread? :)
--
Regards, LVT.
Жанболат (2005-11-10 09:37:00) [3]На чем экономишь то?
galexis (2005-11-09 13:15:00) [4]Сделал, что называется в лоб. Поставил еще один TDataSource и переключаю свойство DBGrid.DataSource.
Я вообще противник большого числа одинаковых компонент в приложении.
galexis (2005-11-09 12:44:00) [5]
> Sergey13 ©
Как убить я знаю, написать слово Destroy :) Для того и есть конструктор и деструктор.
Поиск в другом потоке - единственный способ отменить выполнение запроса, который я знаю.
Плохиш (2005-11-09 12:37:00) [6]
> galexis (09.11.05 12:28) [4]
<telepator on>
Открывается один запрос, а отображаются данные из другого.
<telepator off>
Sergey13 (2005-11-09 12:36:00) [7]2[4] galexis (09.11.05 12:28)
Если не знаешь как убить - зачем создавал? 8-)
И зачем вообще искать в другом потоке? Так долго ищет?
ANB (2005-11-09 12:35:00) [8]
> galexis (09.11.05 12:28) [4]
Еще больше все запутал. Код запости. И объясни - в чем смысл великий отдельного потока ?
galexis (2005-11-09 12:28:00) [9]
> Ega23 ©
Ну я понимаю, что я программист хреновый, но уж не настолько :).
Но вот формулировщик вопросов видимо точно совсем никакой.
Попробую еще раз. Пользователь жмет кнопку Найти, создается и запускается фоновый поток, который производит поиск по запросу и возвращает набор данных в основной поток. Т.е. FindQr.Close - не действует - это компонент основного потока, а закрыть нужно из фона.
Выход - убить фоновый поток! Вопрос, где его убить? По нажатию кнопки Найти не могу, иначе получится только создал, сразу и убил. Из другого места тоже не могу, создал то я его по кнопке Найти. Вот такая проблема
Ega23 (2005-11-09 12:17:00) [10]
FindQr.Close;
FindQr.SQL.Clear;
FindQr.SQL.Add(....);
FindQr.Open;
?
galexis (2005-11-09 12:14:00) [11]
> ANB ©
Закрыть! Так вот я и спрашиваю как его закрыть!
Выполняется фоновый запрос, идет передача набора данных из фонового потока в основной поток. Чего закрывать то?
ANB (2005-11-09 12:09:00) [12]
> galexis (09.11.05 11:38)
Что значит "фоновый набор".
ЗЫ. Перед открытием нового запроса неплохо бы старый то закрыть.
ЗЫЫ. SQL.Text := - удобнее.