![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить присутствует-ли занчение в TDataSet ? [D7, IB6.x]
Rych © (2004-04-13 13:19:00)Всем доброго времени! Проблема такая: есть TIbQuery фильтрующий таблицу IB по заданному критерию. В результатах пользоваткль делает закладки (Bookmark не подходит так как ссылается на номер записи и при пересортировке валидный Bookmark указывает не туда), нужно проверить присутствует-ли запись со значением закладки при текущем фильтре. Lookup хоть и не изменят текущей записи, но скролит таблицу и оказывается что под курсором после клика не та запись что была до. Есть-ли способ перерыть DataSet без скроллинга ?
Заранее благодарен Rych.
kaif (2004-04-13 23:21:00) [1]Можно запомнить последнее текущее значение ключевого поля, затем вызвать DisableControls, затем найти то, что нужно с помощью locate или lookup, затем вернуться к исходной записи с помощью того же locate (по последнему текущему значению ключевого поля), затем вызвать EnableControls. Ничего дергаться при этом не должно, насколько я понимаю.
Rych (2004-04-13 18:37:00) [2]Относительно отдельного запроса - меня терзают смутные сомнения - "Закладок", по моим представлениям может быть около десятка (вряд-ли пользователь удержит в голове больше) проверять их "валидность" нужно по клику и соответственно строить список. Если по каждому клику выполнять запрос 10 раз - мне кажется будет тормозить.
С ActiveRecord я пробовал - пытался восстановить положение строки в гриде - не получилось если Lookup не меняет текущую запись, то изменение ActiveRecord у меня позиционирует курсор на другую запись, не являющуюся текущей в DataSet, а скроллинг приводит к скроллингу DataSet.
А вот по поводу ID записи - я с этим не работал - если можно поподробнее - где его взять? или где почитать? Плиз!
clickmaker (2004-04-13 15:46:00) [3]type
TCrackedDBGrid = class(TDBGrid);
OldActive := TCrackedDBGrid(DBGrid).DataLink.ActiveRecord;
DBGrid.DataSource.DataSet.Locate
TCrackedDBGrid(Sender).DataLink.ActiveRecord := OldActive;
Курдль (2004-04-13 15:16:00) [4]Ну ладно, припомнить ID записи, перелопатить набор данных, а потом сделать Locate по этому ID.
Domkrat (2004-04-13 15:02:00) [5]Отдельно сделать запрос спомощью IBSQL.
Rych (2004-04-13 13:25:00) [6]Пробовал :) - всё равно состояние грида изменяется и позиционирует запись аккурат в центер :(
Курдль (2004-04-13 13:20:00) [7]А TIbQuery.DisableContrils не подойдет?