编写OCX控件的时候,怎么样在控件内使用ADO呢? 我想把一系列用ADO访问数据库的操作都封装在ADO里去,但是不知道如何在编写控件的时候使用ADO,谁能告诉我!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不好意思,是想封装到OCX(MFC)里去:) #import directive在ocx里面也可以用msdn2.microsoft.com/en-us/8etzzkb6.aspx - 22k #import "C:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ARXADO") rename("BOF","adoBOF") rename("EOF","adoEOF") 这是我的import,编译不会出错,但是我定义一个_RecordsetPtr m_adoSet;他就会告诉我missing storage-class or type specifiers,请教一下为啥呢 masterz!!!!能给点示例代码吗?或者看看我的有什么问题.谢谢了!!1 例子代码http://www.fruitfruit.com/vc/atl/ado.cpphttp://www.fruitfruit.com/vc/database/ado_create_rs.txt你的代码问题在于#import的时候指明了namespace :ARXADO那你用的时候要带上它 ARXADO::_RecordsetPtr有2种其他办法:在#import的时候用no_namespace, 或者在#import下面加上using namespace ARXADO; 使用no_namespace,有这样的错误:e:\xgs\work\dataactivex\debug\msado15.tlh(171) : error C2011: 'LockTypeEnum' : 'enum' type redefinition使用using namespace ARXADO,他会说没有ARXADO这个名字空间使用我的,调用不会有错但是不能定义!!!!!我以前也用过ADO的啊,从来没见过这样的问题,不知道是不是在OCX里有特殊的方式啊!!!! 在stdafx.h中#pragma warning(disable: 4146)#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename( "EOF", "adoEOF" )#pragma warning(default: 4146)在xxx.odl 中library XCOMBOXLib{ importlib(STDOLE_TLB); importlib(STDTYPE_TLB); //------------------------------加下面这个,如果系统不装在c盘,把c:该成其他就是了 importlib("c:\program files\common files\system\ado\msado15.dll"); //[id(30)] IDispatch* DataSourceOfRst;把IDispatch* 改成_Recordset*就可以在VB,delphi中暴露DataSourceOfRst属性的自动化,不然在DataSourceOfRst后打一个点,ADO记录级的方法和属性都不会自动列出来的 [id(30)] _Recordset* DataSourceOfRst;//这里不能把_Recordset*写成_RecordsetPtr,因为_RecordsetPtr是_Recordset*的宏定义,但没有定义在odl,所以会报错 请教:如何判断程序运行过程中一段时间内没有键盘和鼠标的操作。 WTL的问题 在一个工程中引用另一个工程中的头文件出错 将filezilla断点续传部分抽取出来作成一个DLL 如何令CListCtrl的item支持Multiline 请问谁了解vc开发串行口程序?有源程序最好!谢谢 高分请教关于ActiveX的开发经验 菜鸟问题………………………………………虚心求教 查找解释DOC格式的资料 谁有截图程序的源代码(不要mfc)? plsql能连远程的oracle数据库,但是ado连不了,怎么回事啊? 使用unzip32.dll解zip压缩?
msdn2.microsoft.com/en-us/8etzzkb6.aspx - 22k
这是我的import,编译不会出错,但是我定义一个_RecordsetPtr m_adoSet;他就会告诉我missing storage-class or type specifiers,请教一下为啥呢
http://www.fruitfruit.com/vc/atl/ado.cpp
http://www.fruitfruit.com/vc/database/ado_create_rs.txt
你的代码问题在于#import的时候指明了namespace :ARXADO
那你用的时候要带上它 ARXADO::_RecordsetPtr
有2种其他办法:在#import的时候用no_namespace, 或者在#import下面加上
using namespace ARXADO;
e:\xgs\work\dataactivex\debug\msado15.tlh(171) : error C2011: 'LockTypeEnum' : 'enum' type redefinition
使用using namespace ARXADO,
他会说没有ARXADO这个名字空间
使用我的,调用不会有错但是不能定义!!!!!
我以前也用过ADO的啊,从来没见过这样的问题,不知道是不是在OCX里有特殊的方式啊!!!!
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename( "EOF", "adoEOF" )
#pragma warning(default: 4146)在xxx.odl 中
library XCOMBOXLib
{
importlib(STDOLE_TLB);
importlib(STDTYPE_TLB);
//------------------------------加下面这个,如果系统不装在c盘,把c:该成其他就是了
importlib("c:\program files\common files\system\ado\msado15.dll"); //[id(30)] IDispatch* DataSourceOfRst;把IDispatch* 改成_Recordset*就可以在VB,delphi中暴露DataSourceOfRst属性的自动化,不然在DataSourceOfRst后打一个点,ADO记录级的方法和属性都不会自动列出来的
[id(30)] _Recordset* DataSourceOfRst;//这里不能把_Recordset*写成_RecordsetPtr,因为_RecordsetPtr是_Recordset*的宏定义,但没有定义在odl,所以会报错