目前用VC做ADO的时候,发现一个问题,即打开的结果集,在提交完一个事务后,会自动被关闭掉。很麻烦的说。经查MSDN,发现MSDN里说,必须把recordset的动态属性"Preserve on Commit"的Value设置为True,这样可以阻止数据集在事务提交后被CLOSE,进入所谓 zombie 状态。
但是我没有搞成功,代码如下:
if (m_rptr->Open(Source, _variant_t((IDispatch *)cpstr, true), GNMAdo::adOpenStatic, GNMAdo::adLockOptimistic, GNMAdo::adCmdText) == S_OK)
{
GNMAdo::PropertyPtr p = m_rptr->Properties->GetItem(COleVariant("Preserve on Commit"));
p->PutValue("True");
m_active = true;
return S_OK;
}
结果提示,说是不能在记录集打开的情况下进行PutValue操作。我又试着把PutValue放到打开前,结果又提示说找不到该属性。:(
我在网上查了阵,没有查到相关帖子,看看这里的老大们会不会解决。
但是我没有搞成功,代码如下:
if (m_rptr->Open(Source, _variant_t((IDispatch *)cpstr, true), GNMAdo::adOpenStatic, GNMAdo::adLockOptimistic, GNMAdo::adCmdText) == S_OK)
{
GNMAdo::PropertyPtr p = m_rptr->Properties->GetItem(COleVariant("Preserve on Commit"));
p->PutValue("True");
m_active = true;
return S_OK;
}
结果提示,说是不能在记录集打开的情况下进行PutValue操作。我又试着把PutValue放到打开前,结果又提示说找不到该属性。:(
我在网上查了阵,没有查到相关帖子,看看这里的老大们会不会解决。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货