![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как взять значение DataSet по заданному номеру строки грида? [D5, D6, D7, MSSQL]
Inoemy © (2005-02-25 14:16:00)Не могу решить следующую задачу:
есть DBGrid в котором отображается набор данных
нужно взять значение некоторого поля записи, которая отображена в гриде в строке с определенным номером.... RecNo не подходит, т.к. в гриде данные могут быть смещены скролом
ЮЮ (2005-02-28 03:56:00) [1]>но вот айДи документа (верхнего в гриде или нижнего зависимо от направления скрола) как взять?
DBGrid имеет в своем составе DataLink (правда он Protected в стандартном, но, надеюсь, уже умеешь достучться до protected свойств), который и есть "буфер" отображаемых в гриде записей.
P.S. Смотри в исходниках DrawCell, как грид перерисовывает все видимые записи датасета, не "скроллируя" при этом его самого.
Inoemy (2005-02-25 15:40:00) [2]ну все равно спасибо... ;-)
Digitman (2005-02-25 15:32:00) [3]
> нужно по номеру строки в гриде взять даннЫе из набора данных
есть такое понятие - "текущая запись"
Anatoly Podgoretsky (2005-02-25 15:30:00) [4]После [3] понятно о каких строках ты говоришь. Но сам подход не верный, поищи лучше другой критерий ограничения количества возвращаемых строк, чем количество строк в гриде, задача сразу станеть простой и стабильной.
Inoemy (2005-02-25 15:19:00) [5]мне нужно по номеру строки в гриде взять даннЫе из набора данных :-)
Sergey13 (2005-02-25 15:04:00) [6]2[5] Inoemy (25.02.05 14:57)
>Я и даю только то что должно влезть в грид
Более чем странный критерий отбора.
>смотри внимательно запрос...
Видал я такие вопросы. Не ты первый.
Digitman (2005-02-25 15:01:00) [7]
> проблемма в определении первой или последне записи в будущем
> наборе
первая запись - first-метод
последняя запись - last-метод
чего тебе еще надобно, старче ? какие нафих RecNo, если dynaset ?
Inoemy (2005-02-25 14:57:00) [8]Я и даю только то что должно влезть в грид.... плюс 1 запись вниз или вверх... проблемма в определении первой или последне записи в будущем наборе.... смотри внимательно запрос...
Sergey13 (2005-02-25 14:38:00) [9]2[3] Inoemy (25.02.05 14:33)
>В Датасет слишком много записей...
Вот тут собака и зарыта. Давай узеру не все, а только нужное.
Inoemy (2005-02-25 14:33:00) [10]В Датасет слишком много записей... они постоянно меняются... появляются новые. Нужно рефрешить грид...(при каждом скроле вверх и вниз и периодически из-за изменений другими пользователями) но полностью на все записи- слишком дорого :) поэтому я хочу брать селектом только часть, причем с учетом скрола и т.п
вот запрос.... но вот айДи документа (верхнего в гриде или нижнего зависимо от направления скрола) как взять? количчество строк я беру....
select top 38 * from Invoices(NOLOCK) where created between @pstart and @pend and created<= @psearchVal and ( created != @psearchVal or doc_id <= @psearchDoc) order by created desc
Sergey13 (2005-02-25 14:21:00) [11]>Как взять значение DataSet по заданному номеру строки грида?
Как правило, это достаточно странная (хотел написать другое слово, но сдержался 8-) задача.
Anatoly Podgoretsky (2005-02-25 14:21:00) [12]А что такое номер строки в гриде?