访问Access2000,CDaoDatabase.Open(..)成功打开。但是,CDaoRecordset.Open(&tb)却报错。错误内容是:
Unhandled exception in MyProject.exe(KERNEL32.DLL):0xE06D7363:Microsoft C++ Exception
我跟踪了代码,在DAOCORE.cpp中:
void CDaoRecordset::Open(CDaoTableDef* pTableDef, int nOpenType,
int nOptions)
函数中
// Share the same database object
m_pDatabase = m_pTableDef->m_pDatabase;
句报的错误。同样这段代码可以访问下面这段代码创建的Access数据库
CDaoDatabase db;
db.Create(lpszDbFileName,dbLangGeneral,dbVersion30);
CDaoTableDef tb(&db);
tb.Create(lpszTBName);
tb.CreateField(_T("ID"),dbLong,4,dbVariableField|dbUpdatableField);
tb.CreateField(_T("Name"),dbText,20);
tb.CreateField(_T("Sex"),dbText,2);
tb.CreateField(_T("Birthday"),dbDate,8);
tb.CreateField(_T("Salary"),dbCurrency,8);
tb.CreateField(_T("Note"),dbMemo,0);
tb.Append();
tb.Close();
db.Close();
最初,我以为是版本的问题,就网上查了一些内容,让我加上
#ifndef _AFXDLL
#define _MFC_VER 0x0601
#else
AfxGetModuleState()->m_dwVersion = 0x0601;
#endif
加了以后,db.Open没有问题了。但rs.Open又有问题了。可是,又找不到相关问题的答案。
主要代码如下:
static TCHAR g_szDbFilename[] = _T("db1.mdb");
static TCHAR g_szTBname[] = _T("PhoneNum");
main()
{
#ifndef _AFXDLL
#define _MFC_VER 0x0601
#else
AfxGetModuleState()->m_dwVersion = 0x0601;
#endif
AfxDaoInit();
CDaoDatabase db;
db.Open(lpszDbFileName);
CDaoTableDef tb(&db);
tb.Open(lpszTBName);
CDaoRecordset rs(&db);
rs.Open(&tb);//这句抱错 COleVariant var1,var2,var3,var4,var5,var6;
while(!rs.IsEOF())
{
rs.GetFieldValue(_T("ID"),var1);
rs.GetFieldValue(_T("Name"),var2);
rs.GetFieldValue(_T("Sex"),var3);
rs.GetFieldValue(_T("Birthday"),var4);
rs.GetFieldValue(_T("Salary"),var5);
rs.GetFieldValue(_T("Note"),var6); cout<<"ID:"<<var1.lVal<<endl;
cout<<"Name:"<<V_BSTRT(&var2)<<endl;
cout<<"Sex:"<<V_BSTRT(&var3)<<endl;
cout<<"Birthday:"<<COleDateTime(var4.date).GetYear()<<endl; CString str = COleCurrency(var5.cyVal).Format();
cout<<"Salary:"<<str.GetBuffer(str.GetLength())<<endl;
cout<<"Note:"<<V_BSTRT(&var6)<<endl;
cout<<"================================="<<endl;
rs.MoveNext();
}
rs.Close();
tb.Close();
db.Close();
}
解决方案 »
- 继承对话框的派生类作为公共基类的问题。
- char*如何转换成char[],unsigned char [200]' 如何转换成 char *
- 复合文档中使用COleClientItem嵌入一个word对象,隐藏word菜单,并使滚动条可以拖动,不知道怎么实现!
- 如何实现将几个视频流写入一个文件
- 哪位有《Windows网络编程技术第二版》(Network Programming for Microsoft Windows, Second Edition)配套光盘
- vc学习资料
- 在ActiveX控件中使用多线程后Fire事件的问题
- 乱码问题,日文WIN2000下如何才正确显示汉字??
- 请教高手,是否能做到???
- ◇◆◇ 毕业设计:Elite Listen & Response 英语听力训练软件 (enmity) II ◇◆◇
- 问下关于socket的select函数
- 谁用过base34编码?编码规则是怎样的?
用Access2000里面的工具-〉数据库转换