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

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

DBGrid [D7]


VIB ©   (2005-12-07 12:44:00) 

Как мне получить значение ячейки сабжа, если у меня есть
индекс колонки и столбца


ЮЮ   (2005-12-08 03:33:00) [1]

У DBGrid-а есть DataLink, который обеспечивает доступ ко всем записям, отображенных в гриде. Посмотри его использование в исходниках TDBGrid.DrawCell


msguns   (2005-12-07 17:53:00) [2]

>VIB   (07.12.05 17:39) [14]

То, что ты описал, и делает TDataSource вместе с нисходящими TDataSet. Если все это работает медленно из-за большого кол-ва записей, то либо принципиально неверно построена концепция интерфейса с БД (например, тянутся все документо-строки всех документов БД вместо того, чтобы извлекать только заголовки документов за определенный периоди все строки только по одному документу), либо надо отказаться от стандартных методов доступа, заменив их более мобильными своими. Например, перейти на трехзвенку и ограничивать "порции" на апп-сервере.


Плохиш   (2005-12-07 17:45:00) [3]


> VIB   (07.12.05 17:39) [14]
> Например я считываю 50 первых позиций из таблицы.
> Грид показывает мне их. Я начинаю двигатся по таблице например
> вниз

Используя кнопки PgDn/PgUp, перетаскиванием ползунка в вертикальном ScrollBar.


stone   (2005-12-07 17:44:00) [4]


> Значение поля последней активной позиции у меня есть.
> Поэтому мне надо знать значение поля второй строки сетки,
>  чтобы от него запросить еще 50 записей и.т.д.

А если набор данных отсортирован не по ID, как ты в этом случае собираешься строить запрос?


VIB   (2005-12-07 17:39:00) [5]

Я вижу меня не понимают уважаемые мастера.
Еще раз попробую объяснить ситуацию которую хочу сделать.
Например я считываю 50 первых позиций из таблицы.
Грид показывает мне их. Я начинаю двигатся по таблице например вниз.
Когда доходжу до последней записи мне надо подчитать следующих 50 записей но я должен также и вывысти записи которые в данный момент видно на экране. Значение поля последней активной позиции у меня есть.
Поэтому мне надо знать значение поля второй строки сетки, чтобы от него запросить еще 50 записей и.т.д.


alex_***   (2005-12-07 17:22:00) [6]

скроллинг по таблице организуется с помощью Next(), Prior()


Sergey13   (2005-12-07 15:46:00) [7]

2[11] VIB   (07.12.05 15:39)
>Если мне надо выбрать данные между датами 01.01.2005 и 01.12.2005 а их там 3000000.
И в грид? Наверное их кто-то смотреть будет? Наверное все 3000000 сразу? И все запомнит и проанализирует в уме?


VIB   (2005-12-07 15:39:00) [8]

Как в таком случае организовать скролинг грида вверх и вниз по всей таблице.

Если мне надо выбрать данные между датами 01.01.2005 и 01.12.2005 а их там 3000000.


Sergey13   (2005-12-07 15:28:00) [9]

2[9] VIB   (07.12.05 15:15)
А если сделать секцию Where более насыщеной (и осмысленной!) и вернуть на клиента только то, что действительно надо?


VIB   (2005-12-07 15:15:00) [10]

Ну вот для этого я и хочу считывать по 100 записей.
Но что - бы мне это реализовать мне надополучить значение поля ID
второй строки.
Пример

Если значение поля ID второй строки =10 и мы к конце DataSet и нажата клавиши вниз, то пишем запрос

Select top 100 * from table_name where id>=10

Аналогично с прокруткой вверх


Sergey13   (2005-12-07 14:59:00) [11]

2[7] VIB   (07.12.05 14:05)
У тебя неправильный подход. Разберись сначала с нужностью видеть в гриде всю "большую таблицу данных".
ИМХО.


VIB   (2005-12-07 14:05:00) [12]

Когда на сервере большая таблица данных.
Я хочу считывать с сервера данные по кускам (например по 100 штук).
И мне надо знать значение поля ID которое находится во второй строке грида


Sergey13   (2005-12-07 14:01:00) [13]

2[4] VIB   (07.12.05 13:59)
Зачем тебе это?


Плохиш   (2005-12-07 14:01:00) [14]


> VIB   (07.12.05 13:59) [4]
> Конкретезирую вопрос.

У DBGrid нет такого понятия как "2-й колонки 6-го столбца", а про значение я уже говорил


VIB   (2005-12-07 13:59:00) [15]

Конкретезирую вопрос.
У меня есть DBGrid.
Как мне из него получить значение 2-й колонки 6-го столбца


Плохиш   (2005-12-07 13:57:00) [16]


> msguns ©   (07.12.05 13:29) [2]

Индекс и координаты, ИМХО, разные вещи.


msguns   (2005-12-07 13:29:00) [17]

В обработчике

procedure TForm1.DBGridDrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
begin
 // Координаты текущей ячейки записать в переменную
 if gdSelected in State then <Переменная типа TRect> := Rect;
end;


Плохиш   (2005-12-07 13:19:00) [18]


> VIB   (07.12.05 12:44)

1. сабж не имеет значений
2. у сабжа свойства "колонка" и "столбец" скрыты от начинающих, поэтому откуда ты их взял совершенно не понятно


Наверх

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