Horse |
Отправлено: 02.09.2004, 18:58 |
|
Не зарегистрирован
|
Имеем следующую картину. Есть контрол класса TADODataSet и таблица для отображения данных TADODataGrid. По свойствам ADODataSet я могу определить количество полей и количество записей в базе. Как, имея эти данные, перебрать в цикле все записи конкретного поля и достать из них значения? Пробовал так
DBGrid1->Columns->Items[j]->Fileds->Value
Дальше первой записи не прошел, а как идти, не понятно.
Код цикла:
for(int j = 0; jFieldCount; j++)
{
if(ADODataSet1->Fields->Fields[j]->FieldName == "name")
{
for(int k = 0; kRecordCount; k++)
{
//вот он и вопрос
}
break;
}
} |
|
Horse |
Отправлено: 02.09.2004, 19:00 |
|
Не зарегистрирован
|
Простите за неточность. Таблица класса TDBGrid. Не судите строго. просто очень устал и совершаю элементарные ошибки. |
|
AVC |
Отправлено: 03.09.2004, 08:04 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
В примере вы перебираете все поля одной записи. Для перебора значений
одного поля из всех записей можно так
TDataSet *ds = DBGrid1->DataSource->DataSet;
или
TDataSet *ds = ADODataSet1;
TField *fld = ds->FieldByName("???");
for (ds->First(); !ds->Eof; ds->Next())
{ ??? fld->Value;
}
(olegenty я помню ваше замечание про ds, но не могу сдержаться )
Отредактировано AVC — 03/09/2004, 08:07 |
|
Gedeon |
Отправлено: 03.09.2004, 08:05 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Тут ни при чем TDBGrid, все надо добывать из DataSet
CODE |
int RecValue;
for(DataSet->First();DataSet->Eof;DataSet->Next){
// тут и получаем значения по очереди
RecValue = DataSet->FildByName("YourFild")->AsInteger;
} |
Отредактировано Gedeon — 03/09/2004, 09:24
|
|