Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как взять значение 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]

А что такое номер строки в гриде?


Наверх

Титульная страница Поиск, карта сайта Написать письмо