首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么在VC中,将一个ADO记录集Recordset,转换成OleVariant类型

2012-03-05 
如何在VC中,将一个ADO记录集Recordset,转换成OleVariant类型ACRptEngineX.ocx 本COM组件是 Anycell Report

如何在VC中,将一个ADO记录集Recordset,转换成OleVariant类型
ACRptEngineX.ocx 本COM组件是 Anycell Report报表控件V1.83的OCX版,可以在VB、.Net、VC、Delphi等支持ADO的开发工具中使用。

接口方法:

1.初始化报表设置
  Init

2.加入一个数据集
  AddDataSet(数据集命名[字符], ADO记录集[OleVariant])

.......

开发环境:WinXP + VC6.0
已将ACRptEngineX.ocx注册,并Add Project-->Components and Controls引入到MFC中 ,创建了类CACRptEngine

其中一个方法如下:
void CACRptEngine::AddDataSet(const VARIANT& aDatasetName, const VARIANT& aDataSet)
{
static BYTE parms[] =
VTS_VARIANT VTS_VARIANT;
InvokeHelper(0xca, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
&aDatasetName, &aDataSet);
}
此方法即是上面的2.加入一个数据集实现

//=====我的问题???====
1.如何在VC中,将一个ADO记录集Recordset,转换成OleVariant类型??
  ,传递到AddDataSet(数据集命名[字符], ADO记录集[OleVariant])。

2,给出代码示例



[解决办法]
你说的。。。。。是What?我现在才开始学VC咧。。。。顶哈你吖。。。
[解决办法]
获取ADO记录集Recordset的IDispatch指针(QueryInterface就行了),假设是pdispRS
VARIANT aDataSet;
aDataSet.vt = VT_DISPATCH;
aDataSet.pdispVal = pdispRS;
然后就可以调用AddDataSet(name,aDataSet)了


[解决办法]
IDispatch *pDisp;
pRecordset->QueryInterface(IID_IDispatch, (void**)&pDisp);

热点排行