C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Получение записи из БД, ADODB
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, но не могу сдержаться smile.gif )

Отредактировано 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

Вернуться в Работа с базами данных в C++Builder