重大问题!高手请进来!VC在OLEDB方式下调用带临时表的存储过程的时候出问题? VC在OLEDB方式下调用带临时表的存储过程的时候出问题!创建的_RecordsetPtr对象在Open后总是关闭的!!急!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ConnectDB(); _CommandPtr cmd; _RecordsetPtr pRs; _bstr_t bstr_empty; _variant_t vtEmpty (DISP_E_PARAMNOTFOUND,VT_ERROR); _ParameterPtr para[3]; CArray <int,int> arpseid; CArray <HTREEITEM,HTREEITEM> arphtree; try { cmd.CreateInstance(__uuidof(Command)); pRs.CreateInstance(__uuidof(Recordset)); for(int h=0; h<3; h++) { para[h].CreateInstance(__uuidof(Parameters)); } cmd->ActiveConnection = m_pConnDB; cmd->CommandType = adCmdStoredProc; cmd->CommandText = "Up_QrySeStrInfo"; //参数 para[0] = cmd->CreateParameter(bstr_empty, adSmallInt, adParamInput, 2, (_variant_t)(long)scid); cmd->Parameters->Append(para[0]); para[1] = cmd->CreateParameter(bstr_empty, adSmallInt, adParamInput, 2, (_variant_t)(long)ssid); cmd->Parameters->Append(para[1]); para[2] = cmd->CreateParameter(bstr_empty, adSmallInt, adParamInput, 2, (_variant_t)(long)1); cmd->Parameters->Append(para[2]); //执行存储过程 cmd->Execute(NULL, NULL, adCmdStoredProc); //打开记录集 pRs->CursorLocation = adUseClient; pRs->Open((_variant_t((IDispatch *)cmd)), vtEmpty, adOpenStatic, adLockReadOnly, -1); 我的用法和楼主稍有不同,是这样的[db_command(L"{ CALL Info_ListPage (?,?,?,?,?) }")]class CRS_InfoListPage{public: [ db_column("InfoID",dbtype=DBTYPE_I4,status=m_dwIDStatus,length=m_dwIDLength) ] LONG m_ID; [ db_param(1, DBPARAMIO_INPUT) ] TCHAR m_Cats[1001]; [ db_param(2, DBPARAMIO_INPUT) ] LONG m_PageSize; [ db_param(3, DBPARAMIO_INPUT) ] LONG m_PageIndex; [ db_param(4, DBPARAMIO_INPUT) ] TCHAR m_fldName[256]; [ db_param(5, DBPARAMIO_INPUT) ] TCHAR m_Keywords[1001]; void GetRowsetProperties(CDBPropSet* pPropSet) {// pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);// pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL); } DBSTATUS m_dwIDStatus; DBLENGTH m_dwIDLength;};使用的时候,hr = CRS_InfoListPage.OpenRowset(connection);结果总是hr=E_FAIL如果去掉 [ db_column("InfoID",dbtype=DBTYPE_I4,status=m_dwIDStatus,length=m_dwIDLength) ] LONG m_ID;这行,则可以返回S_OK,到底要如何用OLE DB调用返回表的存储过程呢? Unfortunitely, I got the same problem. Thanks xiaoyao19811201(俗人) though, at least I know where the wrong is. :) 一个纠结的老问题 Zorder与消息响应 视图分割问题?? 求删除列表中的进度条的问题 德文操作系统下界面的问题!在线等... ~~~~~我写的控件我作主~~~~ 请问CListCtrl类怎么清屏?? arvid_gs(west)请进来。谢谢你!!!!^_^这是另外一贴。 如何通过SQL Edit(informix) 知道,某个库下有几个表!!!!!急!!!!如何通过SQL Edit(informix) 知道,某个库下有几个表!!! 大家一起来谈谈如何考高级程序员 VC坐标轴动态改变问题? delete时 提示未处理的用户异常 求大侠帮我看看 win32串口通信英文翻译
_RecordsetPtr pRs;
_bstr_t bstr_empty;
_variant_t vtEmpty (DISP_E_PARAMNOTFOUND,VT_ERROR);
_ParameterPtr para[3];
CArray <int,int> arpseid;
CArray <HTREEITEM,HTREEITEM> arphtree;
try
{
cmd.CreateInstance(__uuidof(Command));
pRs.CreateInstance(__uuidof(Recordset));
for(int h=0; h<3; h++)
{
para[h].CreateInstance(__uuidof(Parameters));
}
cmd->ActiveConnection = m_pConnDB;
cmd->CommandType = adCmdStoredProc;
cmd->CommandText = "Up_QrySeStrInfo";
//参数
para[0] = cmd->CreateParameter(bstr_empty, adSmallInt, adParamInput, 2, (_variant_t)(long)scid);
cmd->Parameters->Append(para[0]);
para[1] = cmd->CreateParameter(bstr_empty, adSmallInt, adParamInput, 2, (_variant_t)(long)ssid);
cmd->Parameters->Append(para[1]);
para[2] = cmd->CreateParameter(bstr_empty, adSmallInt, adParamInput, 2, (_variant_t)(long)1);
cmd->Parameters->Append(para[2]);
//执行存储过程
cmd->Execute(NULL, NULL, adCmdStoredProc);
//打开记录集
pRs->CursorLocation = adUseClient;
pRs->Open((_variant_t((IDispatch *)cmd)), vtEmpty, adOpenStatic, adLockReadOnly, -1);
[db_command(L"{ CALL Info_ListPage (?,?,?,?,?) }")]
class CRS_InfoListPage
{
public:
[ db_column("InfoID",dbtype=DBTYPE_I4,status=m_dwIDStatus,length=m_dwIDLength) ] LONG m_ID; [ db_param(1, DBPARAMIO_INPUT) ] TCHAR m_Cats[1001];
[ db_param(2, DBPARAMIO_INPUT) ] LONG m_PageSize;
[ db_param(3, DBPARAMIO_INPUT) ] LONG m_PageIndex;
[ db_param(4, DBPARAMIO_INPUT) ] TCHAR m_fldName[256];
[ db_param(5, DBPARAMIO_INPUT) ] TCHAR m_Keywords[1001]; void GetRowsetProperties(CDBPropSet* pPropSet)
{
// pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
// pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
}
DBSTATUS m_dwIDStatus;
DBLENGTH m_dwIDLength;
};使用的时候,hr = CRS_InfoListPage.OpenRowset(connection);
结果总是hr=E_FAIL
如果去掉 [ db_column("InfoID",dbtype=DBTYPE_I4,status=m_dwIDStatus,length=m_dwIDLength) ] LONG m_ID;
这行,则可以返回S_OK,到底要如何用OLE DB调用返回表的存储过程呢?