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

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

выборка из dbgrid [D7, XP]


shake ©   (2006-08-28 11:11:00) 

Доброго времени суток !
Подскажите пожалуйста как обратиться к ячейке в dbgrid или записать содержимое в переменную ?
(есть что-то аналогичное как в stringgrid ...cells[2,3] ?)
Буду очень признателен за пример


Ega23   (2006-08-30 16:47:00) [1]


> MsGuns ©   (30.08.06 15:51) [12]


Только я бы добавил ещё
var
bm: TBookMark;

with dbgrid1.DataSource.DataSet do
  begin
    try
    DisableControls;
    bm := GetBookMark;
    First;
    while not Eof do
       begin
        for a:= 0 to Fields.Count-1 do
         ... := Fields[a].asstring;
        Next;
       end;
    GoToBookMark(bm);
    FreeBookMark(bm);
   finally
    EnableControls;
    end;
  end;


Чтобы уж точно EnableControls прошёл.


MsGuns   (2006-08-30 15:51:00) [2]

>shake   (30.08.06 06:04) [11]

а теперь перепиши вот так:

var
 bm: TBookMark;

 with dbgrid1.DataSource.DataSet do
   begin
    DisableControls;
    bm := GetBookMark;
    First;
    while not Eof do
       begin
        for a:= 0 to Fields.Count -1do
        ... := Fields[a].asstring;
        Next;
       end;
    GoToBookMark(bm);
    FreeBookMark(bm);
    EnableControls;
   end;

и твой код будет не противно читать, он не будет тормозить и дергать грид и, кроме того, вернет после сканирования курсор в исходное положение


shake   (2006-08-30 06:04:00) [3]

И ещё раз башое башое спасибо !!!
У меня все полулучилось, я сделал примерно так

   dbgrid1.DataSource.DataSet.First;
   while not dbgrid1.DataSource.DataSet.Eof do
        begin
        for a:= 1 to dbgrid1.DataSource.DataSet.FieldCount do
        .....................................................................
        showmessage(dbgrid1.DataSource.DataSet.Fields.FieldByNumber(a).asstring);
        .....................................................................
        dbgrid1.DataSource.DataSet.Next;
        end;


Ega23   (2006-08-29 12:49:00) [4]

см. справку по методам TDataSet:
First, Next, Prior, Last.


shake   (2006-08-29 12:43:00) [5]

Спасибо !!!
я сделал так:
showmessage(dbgrid1.DataSource.DataSet.Fields.FieldByNumber(1).asstring);
- работает

но, только как быть, если у меня таблица типа

|---------------------|
|   x1   |   x2   |   x3   |
|---------------------|
|    1   |   2    |   3    |
|---------------------|
|    4   |   5    |   6    |
|__________________|

через FieldByNumber я могу перемещаться по числам "1" "2" "3" ,
а как быть если я хочу обратиться к числам которые в "нижнем ряду" (4,5,6)?
как сменить "текущую строку" из которой идёт выбор ?


Virgo_Style   (2006-08-29 08:09:00) [6]

shake   (29.08.06 5:19) [6]
После DataSet поставь точку, чуть подожди и полистай... "Там столько всего вкусного!" (с) %-) Кажется, Fields тебе нужен.


Sergey13   (2006-08-29 08:00:00) [7]

> [6] shake   (29.08.06 05:19)

В хелпе смотрел?
Индкс колонки грида вовсе необязательно совпадает с индексом поля датасета.


shake   (2006-08-29 05:19:00) [8]

dbgrid не содержит в себе данные, он отображает их из источника через datasource.

Но всёже, как обратиться к данным по числовым индексам? Может быть у кого-то есть примеры


MBo   (2006-08-28 12:06:00) [9]

>shake
Ответь на вопрос - содержит ли DBGrid в себе данные?


shake   (2006-08-28 12:01:00) [10]

спасибо, Ega23 !!! Пример работает.

А можно вместо fieldname как-нибудь указать индекс в dbgrid ? То есть чтобы не было необходимости обрашаться по символьному полю, а была возможность организовать цикл


Fay   (2006-08-28 11:29:00) [11]

Мне кажется, нет ничего зазорного в том, что начинающий читает какую-нибудь книжку по Delphi. Судя по всему, афтар читать умеет. Но стесняется?


Ega23   (2006-08-28 11:23:00) [12]

ВИПкшвюВфефЫщгксуюВфефЫуеюАшудвИнТфьу
блин...
DBGrid.dataSource.DataSet.FieldByName(FieldName).As....


Sergey13   (2006-08-28 11:13:00) [13]

> [0] shake   (28.08.06 11:11)

Работай не с ячейками, а с записям и полями датасета, отображаемого в гриде.


Наверх

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