我想在一个Atl的DLL项目中添加ADO的引用 可是死活不成功 郁闷

progame 2003-06-01 11:35:20
在stdafx.h文件我添加了


#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","ADOEOF")


使用:
__interface IDBOperator : IDispatch
{
[id(1), helpstring("Execute sql string")] HRESULT ExecuteString([in] BSTR sql, [in] VARIANT aParam, [out,retval] _Recordset **prstOutput);
};

错误:

c:\documents and settings\administrator\my documents\visual studio projects\cdboperatorlib\cdboperatorlib\dboperator.h(20): error MIDL2011 : unresolved type declaration : _Recordset [ Parameter 'prstOutput' of Procedure 'ExecuteString' ( Interface 'IDBOperator' ) ]
...全文
11 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huabh 2003-06-05
可以先用ole db接口,把数据放入ole db的行集,在把ole db的行集转化位一个ado的记录集recordset.具体的方法是通过ado记录集对象的IADORecordsetConstruction接口,这个接口提供方法put_Rowset,它将一个ole db的行集放入ado记录集对象并接将行集转化位记录集。
例子:
RecordsetPtr rsTemp(__uuidof(Recordset));
ADORecordsetConstructionPtr pRSConstruct;
rsTemp->put_CursorLocation(adUserClient);
pRSConstruct = rsTemp;
hr = pRSConstruct->putRowset(cmd.m_spRowset);
*rs =(IDispatch *)pRSConstruct->Detach();
Seesion.Close();

OK!!!!
回复
sunyuan_01 2003-06-05
gz
回复
progame 2003-06-03
up
回复
zhp80 2003-06-03
我也在找
如何让一个RawSet支持Recordset接口
不知那位知道?
当然,不是自己去实现Recordset接口
回复
huabh 2003-06-02
你及让已经选用atl技术,其实可以在atl项目中不必应用ado,直接采用ole db的provider,效率比用ado要高,而且,atl中直接可以插入ole db的项目。
回复
zhp80 2003-06-02
1.写入
[ importlib("c:\\program files\\common files\\system\\ado\\msado15.dll") ];
建议在 [ module(.....)] 之后
2.在接口定义中
[
object,
library_block, //必须
.....
]
__interface IDBOperator : IDispatch
{
[id(1), helpstring("Execute sql string")] HRESULT ExecuteString([in] BSTR sql, [in] VARIANT aParam, [out,retval] _Recordset **prstOutput);
};
回复
progame 2003-06-02
up
回复
progame 2003-06-02
ole db ?

我的其它中间层和客户端是VB写的啊

我通过什么来传递结果集?
回复
发动态
发帖子
VC.NET
创建于2007-09-28

7536

社区成员

.NET技术 VC.NET
申请成为版主
社区公告
暂无公告