怎么不能返回count值

Amphibian 2003-05-29 12:47:58
STDMETHODIMP Caa::get_Count(long *pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())

// TODO: Add your implementation code here
_RecordsetPtr spRS;
long lcnt;
try{
OpenConnection();
MYCREATEINSTANCE(spRS,Recordset);
spRS->CursorLocation = adUseClient;
spRS->putref_ActiveConnection(m_spConn);
char buf[99];
sprintf(buf,"SELECT count(*) as cnt FROM taa");
spRS->Open(_variant_t(buf),vtMissing,adOpenStatic,adLockBatchOptimistic,-1);

spRS->PutRefActiveConnection(NULL);// Disassociate the connection from the recordset.

m_spConn->Close();

lcnt= spRS->Fields("cnt");
*pVal=lcnt;
spRS->AddRef();
}
catch( _com_error &e){
ERR_MSG(e,"get_Count");
}
return S_OK;

}

我的目的是返回count值,怎么返回不了?
error C2064: term does not evaluate to a function
...全文
45 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Earthdog 2003-05-29
  • 打赏
  • 举报
回复
_variant_t var = spRS->Fields->GetItem(0L)->Value;
if (var.vt != VT_NULL && var.vt != VT_EMPTY)
{
var.ChangeType(VT_I4);
lcnt= var.lVal;
}
else
{
lcnt = 0;
}
zzyx 2003-05-29
  • 打赏
  • 举报
回复
dll不能删除,是你还有程序没有释放对其接口的引用
如果你的com是普通的exe客户端调用,注意引用计数
如果你的com是在asp中调用,那么要先停止iis的几个服务
再删除,再启动
Amphibian 2003-05-29
  • 打赏
  • 举报
回复
编译的时候能够通过,build的时候出现下列错误
LINK : fatal error LNK1168: cannot open Debug/Taaa.dll for writing
怎么解决这个问题?
Amphibian 2003-05-29
  • 打赏
  • 举报
回复
*pVal=spRS->GetRecordCount();
在重新启动计算机的后通过了。而且其他的函数如果有问题,即使改对了,也只有重新启动后才知道。这怎么解决?我将dll regsrv32 /u后,还是不行,而且这个dll根本就删除不掉
lifeforu 2003-05-29
  • 打赏
  • 举报
回复
spRS->GetRecordCount(&pVal);
Amphibian 2003-05-29
  • 打赏
  • 举报
回复
如果*pVal=spRS->GetRecordCount();
出现问题
cannot open file "Debug/Taa.dll"
zzyx 2003-05-29
  • 打赏
  • 举报
回复
显然应该是
*pVal=spRS->GetRecordCount();
Amphibian 2003-05-29
  • 打赏
  • 举报
回复
谢谢,现在剩下的问题是数据类型的如何转化
我这么做
STDMETHODIMP CTCSchoolBases::get_Count(long *pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
//_RecordsetPtr spRS;
pVal=spRS->GetRecordCount(); **
return S_OK;

}
**这行出问题,如何改?新手,请多关照
zangyong 2003-05-29
  • 打赏
  • 举报
回复
为什么不试试 spRs->GetCollect("cnt")呢

简单、方便
qinghero 2003-05-29
  • 打赏
  • 举报
回复
有些看不明白,lcnt= spRS->Fields("cnt");是什么意思?如果你是想取得cnt的值,应该是 spRS->Fields("cnt")->get_Value(VARIANT);
然后再把变体VARIANT转化成long

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧