Шаг 4 - Получение записей

Создание проекта

Работаем с текущим. Только изменения внутри 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;

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 08.09.99