如何实现在ADO下使用DAO 在使用“import msado15.dll”使用ado后就会在#include“afxDAO.h”报错误如何同时使用DAO和ado??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么要同时使用两中技术呢?他们中有很多名字冲突的,加上命名空间吧如果必须要的话 建议分别包装到两个Dll中 我也不想找麻烦,但是我实在无法在本地生成一个数据库文件,又不想使用ODBC我使用DAO可以方便的生成文件,使用ADO可以方便的访问服务器楼上有好的办法么? 使用的时候加上名称空间 比如: ADO.*****生成一个本地数据库文件可以用 HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDisposition, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to // copy);指定文件名为 ***.mdb或其他即可 http://www.codeproject.com/database/caaadoxclass.asp这里的文章写的很清楚了,怎样创建一个数据库 头文件#import "c:\Program Files\Common Files\system\ado\msadox.dll" no_namespace ..._CatalogPtr m_pCatalog;m_pCatalog = NULL;m_pCatalog.CreateInstance(__uuidof(Catalog));CString strConnection = _T("");strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = " "c:\\adox\\Test.mdb;Jet OLEDB:Engine Type=5;";m_pCatalog->Create(_bstr_t(strConnection )); cdwy411(无心睡眠) 的意见本人拜读了但是我生成的不是mdb,而要求生成xls或dbf怎么办?怎么大家都认为要生成mdb 我说说我的方法:1、首先在已有的ADO程序中的stdafx.h 文件中加入如下代码: #include <afxdao.h> #import "c:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("AdoNS")rename("EOF", "adoEOF")添加时应在所有的#include 之后,以确保ADO 的可用 你在完成该步骤后可以试一试,DAO的功能是否可用,如果可用就说明成功了一半。2.这时你的ADO肯定是错误连篇的,你的ADO必须作如下的修改: 你注意上述代码中的“AdoNS”,在所有的ADO的功能函数,功能变量前必须加入AdoNS:: 如果成功,它会自动弹出ADO的所有功能的列表比如原来是 _RecordsetPtr m_pRecordset; 现在必须改成: AdoNS::_RecordsetPtr m_pRecordset; “AdoNS”是你自己在stdafx.h定义的,可以胡乱写,但后面的代码必须以此为统一。 又如自定义的函数Trans2Combox(CComboBox* CtrlBox,_RecordsetPtr Rec,CString field) 必须改写为Trans2Combox(CComboBox* CtrlBox,AdoNS::__RecordsetPtr Rec,CString field)总之,要改写的地方较多,你遇到有问题的地方就改写试一试,看是否需要改写本人摸索了半年才得到的办法。 供大家参考参考 不对啊~~~怎么我照你的做了以后出错的全是adBookFirst……这些东西啊?而且我AdoNS::弹不出所有功能列表? 头文件部分#import "c:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADOX") #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \ rename_namespace("ADO") rename("EOF", "EndOfFile")#pragma warning (disable: 4146)#include "icrsint.h"using namespace ADO;...在代码的实现部分 using namespace ADOX; _CatalogPtr m_pCatalog; m_pCatalog.CreateInstance(__uuidof(Catalog)); CString strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = " "c:\\Test.mdb;Jet OLEDB:Engine Type=5;"; if(!PathFileExists(_T("c:\\Test.mdb"))) m_pCatalog->Create(_bstr_t(strConnection ));using namespace ADO;//如果之后的代码用的是ado的话要加这一句 纹理合成的机器学习(图像识别和学习) MFC如何实现添加整个文件夹? 关于MFC的基础问题 问一个 _UNICODE 定义的问题 MFC vs VC++???? CodeProject的速度怎么这么慢?美国人对华人歧视? 有没有无符号64位整形到字符串的转化函数 求一将BMP进行压缩的算法 vc--春节上班中 关于vc之中的控件 能否使编辑框在不变灰的情况下不能改变编辑框里的内容? ADO应用遇上问题,大侠救我...
他们中有很多名字冲突的,加上命名空间吧
如果必须要的话 建议分别包装到两个Dll中
我使用DAO可以方便的生成文件,使用ADO可以方便的访问服务器
楼上有好的办法么?
生成一个本地数据库文件可以用
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
// pointer to security attributes
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to
// copy
);
指定文件名为 ***.mdb或其他即可
这里的文章写的很清楚了,怎样创建一个数据库
#import "c:\Program Files\Common Files\system\ado\msadox.dll" no_namespace
..._CatalogPtr m_pCatalog;
m_pCatalog = NULL;
m_pCatalog.CreateInstance(__uuidof(Catalog));
CString strConnection = _T("");strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = "
"c:\\adox\\Test.mdb;Jet OLEDB:Engine Type=5;";
m_pCatalog->Create(_bstr_t(strConnection ));
但是我生成的不是mdb,而要求生成xls或dbf怎么办?
怎么大家都认为要生成mdb
1、首先在已有的ADO程序中的stdafx.h 文件中加入如下代码:
#include <afxdao.h>
#import "c:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("AdoNS")rename("EOF", "adoEOF")
添加时应在所有的#include 之后,以确保ADO 的可用
你在完成该步骤后可以试一试,DAO的功能是否可用,如果可用就说明成功了一半。
2.这时你的ADO肯定是错误连篇的,你的ADO必须作如下的修改:
你注意上述代码中的“AdoNS”,在所有的ADO的功能函数,功能变量前必须加入AdoNS::
如果成功,它会自动弹出ADO的所有功能的列表
比如原来是
_RecordsetPtr m_pRecordset;
现在必须改成:
AdoNS::_RecordsetPtr m_pRecordset;
“AdoNS”是你自己在stdafx.h定义的,可以胡乱写,但后面的代码必须以此为统一。
又如自定义的函数
Trans2Combox(CComboBox* CtrlBox,_RecordsetPtr Rec,CString field)
必须改写为
Trans2Combox(CComboBox* CtrlBox,AdoNS::__RecordsetPtr Rec,CString field)
总之,要改写的地方较多,你遇到有问题的地方就改写试一试,看是否需要改写
本人摸索了半年才得到的办法。
供大家参考参考
#import "c:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADOX")
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
rename_namespace("ADO") rename("EOF", "EndOfFile")
#pragma warning (disable: 4146)
#include "icrsint.h"using namespace ADO;...在代码的实现部分 using namespace ADOX;
_CatalogPtr m_pCatalog;
m_pCatalog.CreateInstance(__uuidof(Catalog)); CString strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = "
"c:\\Test.mdb;Jet OLEDB:Engine Type=5;";
if(!PathFileExists(_T("c:\\Test.mdb")))
m_pCatalog->Create(_bstr_t(strConnection ));
using namespace ADO;//如果之后的代码用的是ado的话要加这一句