100分求解!!!ADO的问题,高手请过

crgxw 2005-10-26 10:57:17
在ado中,执行一个联合查询语句(select Table1.a,Table2.b from Table1 join Table2 on Table1.id = table2.id ),为啥返回的记录集只能MoveNext,而不能MovePrevious呀,如果不能用MovePrevious我应怎么回滚记录集那,我是这要执行sql语句的
BOOL CMyAdo::ExecuteMySql(CString strSql, BOOL IsUpdateSet)
{
try
{
m_cmd->CommandText = _bstr_t(strSql);
if (IsUpdateSet)
{
m_Set = m_cmd ->Execute(NULL,NULL,adCmdText);
}
else
{ //m_Cn ->Execute(strSql.AllocSysString(),NULL,1);
m_SetTemp = m_cmd ->Execute(NULL,NULL,adCmdText);
}

}
catch(_com_error *e)
{
AfxMessageBox(e ->Description());
return false;
}
return true;
}
...全文
192 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzww2003 2005-10-27
  • 打赏
  • 举报
回复
设置成动态移动 adOpenDynamic
goodboyws 2005-10-27
  • 打赏
  • 举报
回复
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->CursorLocation = adUseClient;
m_pRecordset->Open(_bstr_t(strSQL),
_variant_t((IDispatch *)m_pConnection,true),
adOpenDynamic,
adLockBatchOptimistics,
adCmdText);
crgxw 2005-10-27
  • 打赏
  • 举报
回复
不行呀,还是有问题,只要到MovePrevious()函数那就出错

最好有一个demo

我的邮箱是:
cr-gxw@tom.com
crgxw@tom.com
goodboyws 2005-10-26
  • 打赏
  • 举报
回复

m_pRecordSet.CreateInstance(__uuidof(Recordset));
m_pRecordSet->Open(_bstr_t(strSQL),_variant_t((IDispatch *)m_pConnection,true), adOpenDynamic,
adLockReadOnly, adCmdText);
goodboyws 2005-10-26
  • 打赏
  • 举报
回复
比较奇怪的是你这么用怎么返回记录集
goodboyws 2005-10-26
  • 打赏
  • 举报
回复
游标的问题
ZhengxinLiu 2005-10-26
  • 打赏
  • 举报
回复
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->CursorLocation = adUseClient;
m_pRecordset->Open(_bstr_t(strSQL),
_variant_t((IDispatch *)m_pConnection,true),
adOpenStatic,
adLockBatchOptimistics,
adCmdText);
使用m_pRecordset->CursorLocation = adUseClient;可以更灵活的控制cursor了

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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