Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Внизвыборка из dbgrid Найти похожие ветки
← →
shake (2006-08-28 11:11) [0]Доброго времени суток !
Подскажите пожалуйста как обратиться к ячейке в dbgrid или записать содержимое в переменную ?
(есть что-то аналогичное как в stringgrid ...cells[2,3] ?)
Буду очень признателен за пример
← →
Sergey13 © (2006-08-28 11:13) [1]> [0] shake (28.08.06 11:11)
Работай не с ячейками, а с записям и полями датасета, отображаемого в гриде.
← →
Ega23 © (2006-08-28 11:23) [2]ВИПкшвюВфефЫщгксуюВфефЫуеюАшудвИнТфьу
блин...DBGrid.dataSource.DataSet.FieldByName(FieldName).As....
← →
Fay © (2006-08-28 11:29) [3]Мне кажется, нет ничего зазорного в том, что начинающий читает какую-нибудь книжку по Delphi. Судя по всему, афтар читать умеет. Но стесняется?
← →
shake (2006-08-28 12:01) [4]спасибо, Ega23 !!! Пример работает.
А можно вместо fieldname как-нибудь указать индекс в dbgrid ? То есть чтобы не было необходимости обрашаться по символьному полю, а была возможность организовать цикл
← →
MBo © (2006-08-28 12:06) [5]>shake
Ответь на вопрос - содержит ли DBGrid в себе данные?
← →
shake (2006-08-29 05:19) [6]dbgrid не содержит в себе данные, он отображает их из источника через datasource.
Но всёже, как обратиться к данным по числовым индексам? Может быть у кого-то есть примеры
← →
Sergey13 © (2006-08-29 08:00) [7]> [6] shake (29.08.06 05:19)
В хелпе смотрел?
Индкс колонки грида вовсе необязательно совпадает с индексом поля датасета.
← →
Virgo_Style © (2006-08-29 08:09) [8]shake (29.08.06 5:19) [6]
После DataSet поставь точку, чуть подожди и полистай... "Там столько всего вкусного!" (с) %-) Кажется, Fields тебе нужен.
← →
shake (2006-08-29 12:43) [9]Спасибо !!!
я сделал так:
showmessage(dbgrid1.DataSource.DataSet.Fields.FieldByNumber(1).asstring);
- работает
но, только как быть, если у меня таблица типа
|---------------------|
| x1 | x2 | x3 |
|---------------------|
| 1 | 2 | 3 |
|---------------------|
| 4 | 5 | 6 |
|__________________|
через FieldByNumber я могу перемещаться по числам "1" "2" "3" ,
а как быть если я хочу обратиться к числам которые в "нижнем ряду" (4,5,6)?
как сменить "текущую строку" из которой идёт выбор ?
← →
Ega23 © (2006-08-29 12:49) [10]см. справку по методам TDataSet:
First, Next, Prior, Last.
← →
shake (2006-08-30 06:04) [11]И ещё раз башое башое спасибо !!!
У меня все полулучилось, я сделал примерно так
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;
← →
MsGuns © (2006-08-30 15:51) [12]>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-1 do
... := Fields[a].asstring;
Next;
end;
GoToBookMark(bm);
FreeBookMark(bm);
EnableControls;
end;
и твой код будет не противно читать, он не будет тормозить и дергать грид и, кроме того, вернет после сканирования курсор в исходное положение
← →
Ega23 © (2006-08-30 16:47) [13]
> 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 прошёл.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.062 c