Dao连接访问数据库问题
我的mdb是在access97下的,转换到access2000下后,我过去的程序就出现访问时错误:
错误信息如下:
DAO error 3433,SOURCE=DAO.Workspace,DESCR=Unrecognized database format
'f:\vod\program.mdb'
大家发表意见。
问题点数:120、回复次数:12Top
1 楼myb123(myb123)回复于 2001-10-15 11:02:36 得分 10
因Access97用的是DAO3.5驱动包,若用Access2000,应在你的机器下安装DAO3.6驱动包.
DAO3.5在visual studio这套碟中可找到,DAO3.6则要在其它地方找,可能在微软的网站,或CSDN中可找到吧!Top
2 楼wmouse(山水)回复于 2001-10-15 11:04:12 得分 10
如果找不到驱动,就把Access2000转换成Access97Top
3 楼kane_yj()回复于 2001-10-15 11:05:30 得分 100
我以前的回答,还有别人的,一同粘来
access97用的是microsoft jet3.0数据引擎,单独在裸机上安装执行你的程序肯定不行,不管你的程序是static连接的还是怎样;安装microsoft jet3.0数据引擎时在你的机子上安装了相应的com组件,所以不单单是几个dll的问题;安装MDAC2.6也不行地
解决的方法:
1、安装microsoft jet3.5数据引擎,visual studio 6.0(10片)的第六或七张上有它,你可以拿来装一下---ok!
2、安装vc++---当然,这不是好方法;
3、用wise做安装程序,wise里面可以直接指定使用了DAO技术
4、installshale6.2做安装程序,里面可以直接指定使用了DAO技术
如果只是microsoft jet 3.5 的问题,倒有一个比较简单的方法:
在App的InitInstance()里加入以几句话就行了。
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
#ifdef _AFXDLL
AfxGetModuleState()->m_dwVersion = 0x0601;
#else
#endif
.......
有几个东东你可以试试
http://download.microsoft.com/download/access2000/SP/4.0/NT5/EN-US/Jet40SP5_W2K.exe
http://download.microsoft.com/download/access2000/SP/4.0/W9XNT4/EN-US/Jet40SP5_9xNT.exe
http://download.microsoft.com/download/office97pro/SP/1/WIN98/EN-US/Jet35sp3.exe
http://download.microsoft.com/download/access2000/Utility/1.0/WIN98Me/EN-US/JetCU40.exe
http://download.microsoft.com/download/access20/whitepap/1/WIN98/EN-US/Jetwp.exe
其中第一个也许能解决你windows2000下的问题 Top
4 楼nicolas(nicolas)回复于 2001-10-15 11:09:31 得分 0
谢谢大家的帮助,我试试,我发现下面出错:
try {
// nonexclusive, read-only
m_database.Open(m_strDatabase, FALSE, TRUE);
}
catch (CDaoException* e) {
DaoErrorMsg(e);
e->Delete();
return FALSE;
}
其中m_strDatabase为:f:\vod\program.mdb,是当前目前下的mdb(access2000)。
我按照你们说的试试,问题解决后立即给分,你们继续提建议呀。Top
5 楼nicolas(nicolas)回复于 2001-10-15 11:10:05 得分 0
谢谢大家的帮助,我试试,我发现下面出错:
try {
// nonexclusive, read-only
m_database.Open(m_strDatabase, FALSE, TRUE);
}
catch (CDaoException* e) {
DaoErrorMsg(e);
e->Delete();
return FALSE;
}
其中m_strDatabase为:f:\vod\program.mdb,是当前目前下的mdb(access2000)。
我按照你们说的试试,问题解决后立即给分,你们继续提建议呀。Top
6 楼nicolas(nicolas)回复于 2001-10-15 11:11:37 得分 0
谢谢大家的帮助,我试试,我发现下面出错:
try {
// nonexclusive, read-only
m_database.Open(m_strDatabase, FALSE, TRUE);
}
catch (CDaoException* e) {
DaoErrorMsg(e);
e->Delete();
return FALSE;
}
其中m_strDatabase为:f:\vod\program.mdb,是当前目前下的mdb(access2000)。
我按照你们说的试试,问题解决后立即给分,你们继续提建议呀。Top
7 楼jiangsheng(蒋晟.Net[MVP])回复于 2001-10-15 11:25:08 得分 0
什么错?(你不会只在目录字符串把目录分隔符写成一个"\"吧)Top
8 楼nicolas(nicolas)回复于 2001-10-15 14:07:46 得分 0
按照kane_yj的方法:
在App的InitInstance()里加入以几句话就行了。
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
#ifdef _AFXDLL
AfxGetModuleState()->m_dwVersion = 0x0601;
#else
#endif
就解决问题了,我将这个贴子再放一阵就就给分。Top
9 楼nicolas(nicolas)回复于 2001-10-15 14:08:18 得分 0
按照kane_yj的方法:
在App的InitInstance()里加入以几句话就行了。
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
#ifdef _AFXDLL
AfxGetModuleState()->m_dwVersion = 0x0601;
#else
#endif
就解决问题了,我将这个贴子再放一阵就就给分。Top
10 楼nicolas(nicolas)回复于 2001-10-15 14:09:47 得分 0
按照kane_yj的方法:
在App的InitInstance()里加入以几句话就行了。
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
#ifdef _AFXDLL
AfxGetModuleState()->m_dwVersion = 0x0601;
#else
#endif
就解决问题了,我将这个贴子再放一阵就就给分。Top
11 楼xtky_limi(窗外细雨)回复于 2001-12-25 17:10:22 得分 0
AfxGetModuleState()->m_dwVersion = 0x0601;
其实最重要的就这一句话。Top
12 楼xtky_limi(窗外细雨)回复于 2001-12-25 17:13:58 得分 0
listenTop




