DAOによるMS-Accessからのデータ抽出する


【Sample program】

#include <afxdao.h>         // MFC のデータベース操作用DAOを使用する

void CDbCtrlDlg::OnButton1() 
{
	COleVariant buf;         //データ格納用
	long RecCnt;             //レコード数格納用

	//Dao操作用クラスの宣言
	CDaoDatabase *m_DB = new CDaoDatabase(NULL);

	//データベースを開く(参考:ここの引数をODBC用に書き換えればODBC接続のDBを同様に操作できる)
	m_DB->Open( _T("C:\\My Documents\\Test.mdb"), FALSE, TRUE, _T("") );

	//レコード・セット・オブジェクトの構築
	CDaoRecordset *m_dbRecord = new CDaoRecordset(m_DB);

	//レコードを抽出する
	m_dbRecord->Open(dbOpenDynaset,"SELECT * FROM test",dbReadOnly);

	//レコード数を取得する(ここでの処理には、関係無いが一応方法を示します。)
	m_dbRecord->MoveLast();			//注意:一度最終レコードへ移動しないと、GetRecordCount()は正しい数を返さない。
	m_dbRecord->GetRecordCount();	//レコード数の取得
	m_dbRecord->MoveFirst();		//先頭レコードへ戻る

	//レコードのデータを取得する
	while(!m_dbRecord->IsEOF()){
		m_dbRecord->GetFieldValue(1,buf);    //先頭フィールドの値を取得
		m_dbRecord->MoveNext();
	}

	m_dbRecord->Close();
	m_DB->Close();
}