C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 4 - Получение записей / DAO / Visual C++

Шаг 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;

| |
Автор Каев Артем.
[AD]