CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

用ADO+VC,MOVEFIRST 出错???

楼主fingerfox(狐狸【人不要脸,天下无敌】)2002-11-29 09:01:32 在 MS-SQL Server / 疑难问题 提问

try  
  {  
  hr   =   Conn.CreateInstance(__uuidof(Connection));  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  sprintf(pBuffer,"Driver={SQL   Server};UID=SA;PWD=;DATABASE=AkumaDB;SERVER=ABC;");  
  hr   =   Conn->Open(pBuffer,"","",-1);  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  hr   =   WorkRecord.CreateInstance(__uuidof(Recordset));  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  sprintf(pBuffer,"SELECT   *   FROM   [WORK]");  
  hr   =   WorkRecord->Open(_variant_t(pBuffer),Conn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  hr   =   WorkRecord->MoveFirst();//this   line   cause   error??  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  if(WorkRecord->adoEOF)  
  MessageBox("ADO   EOF");  
  WorkRecord->Close();  
  hr   =   WorkerRecord.CreateInstance(__uuidof(Recordset));  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  sprintf(pBuffer,"SELECT   *   FROM   [WORKER]   ORDER   BY   People_ID");  
  hr   =   WorkerRecord->Open(pBuffer,Conn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  if(WorkerRecord->adoEOF)  
  MessageBox("adoEOF");  
  i   =   0;  
  while(!WorkerRecord->adoEOF)  
  {  
  for(int   j   =   0;   j   <   WorkerRecord->Fields->GetCount();   j++)  
  {  
  _variant_t   vIndex((long)j);  
  value   =   WorkerRecord->GetCollect(vIndex);  
  if(CrackStrVariant(value,pBuffer,1024))  
  {  
  if(j==0)  
  m_ListCtrl2.InsertItem(i,pBuffer,0);  
  else  
  m_ListCtrl2.SetItemText(i,j,pBuffer);  
  }  
  }  
  i++;  
  hr   =   WorkerRecord->MoveNext();  
  if(FAILED(hr))  
  goto   ErrorProcess;  
  }  
  ErrorProcess:  
  if(WorkRecord->State   ==   adStateOpen   )  
  WorkRecord->Close();  
  if(WorkerRecord->State   ==   adStateOpen   )  
  WorkerRecord->Close();  
  if(Conn->State   ==   adStateOpen   )  
  Conn->Close();  
  return;  
  }  
  catch(...)  
  {  
  MessageBox("Error   Occru   UnDeterminable!!!");  
  return;  
  } 问题点数:50、回复次数:3Top

1 楼ashanm()回复于 2002-11-29 16:05:50 得分 50

在调用MoveFirst和MoveLast,还是其他几个移动接口函数时,你要先判断IsEof(),IsBof(),如果本来已经到头了,还要往前移动,当然会触发异常错误。Top

2 楼fingerfox(狐狸【人不要脸,天下无敌】)回复于 2002-11-29 16:50:19 得分 0

MoveFirst  
  要判断?Top

3 楼Drate(小虫(好好学习,天天向上))回复于 2002-12-02 13:21:27 得分 0

是呀,在VC就是这样,需要自己去判断Top

相关问题

  • ado出错
  • VC++,ado编程问题:导入msdasc.dll出错
  • ado的addnew出错????
  • VC出错!救我!
  • 在VC++中ado 连接mysql用ODBC的出错问题?(高手请进)
  • 利用VC+ADO删除SQL数据库出错的问题,在线等
  • ado 操作出错代码
  • delph5的ado出错问题
  • ADO出错信息列表
  • ADO连ACCESS问题,出错

关键词

  • hr
  • workerrecord
  • workrecord
  • pbuffer
  • movefirst
  • goto errorprocess
  • adoeof
  • adstateopen
  • failed
  • uuidof

得分解答快速导航

  • 帖主:fingerfox
  • ashanm

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo