Работаем с текущим. Только изменения внутри IsOpen.
if (db->IsOpen())
{
CDaoRecordset *CRec;
CRec=new CDaoRecordset(db);
CDaoTableDef *CTab;
CTab=new CDaoTableDef(db);
CTab->Open("TABLE1");
CRec->Open(CTab);
int y=CRec->GetRecordCount();
cout << y << endl;
for (int x=0;x < y;x++)
{
COleVariant CValue;
CRec->GetFieldValue("Count",CValue);
long d=CValue.lVal;
CRec->GetFieldValue("Family",CValue);
CString s=CValue.pbVal;
cout << d << " " << s << endl;
CRec->MoveNext();
}
CRec->Close();
CTab->Close();
db->Close();
}
Для работ с записями нам надо открыть обьект CDaoRecordset на базе обькета CDaoTableDef. Потом мы получаем количество записей.
COleVariant обьект хамелеон. Он создан специально для того, чтобы в нем можно было хранить разные данные. Вот в этот обьект мы и получаем данные поля. В предыдущем шаге мы с вами получали типы полей, в принципе на основе этого необходимо извлекать данные.
GetFieldValue получает данные по имени поля или индексу. Данные получаются из текущего поля. При открытии записей указатель(кусор) стоит в начале записи. Для перехода к следующей я использовал MoveNext.
Использование DAO хорошо тем, что этот механизм доступа к базе данных применяется часто например для офисного программирования VBA. Пример приведен ниже.
Sub test()
Dim db As Database
Set db = OpenDatabase("d:\db1.mdb")
Dim rc As Recordset
Set rc = db.OpenRecordset("TABLE1")
Do While Not rc.EOF
MsgBox (rc.Fields(1))
rc.MoveNext
Loop
End Sub
Со временем я продолжу эти шаги. А для первого знакомства этого достаточно.
Создай обьект открой объект таблицы:
CRec->Open(CTab);
Получи данные на основе обьекта COleVariant:
COleVariant CValue;
CRec->GetFieldValue("Count",CValue);
Извлеки данные на основе типа данных:
long d=CValue.lVal;