查询ACCESS时候出现RUNTIME ERROR!!

liudan9567 2006-10-10 09:32:01
麻烦高人帮我看下
strSql.Format("SELECT * FROM PatientTable WHERE ID='&s'",strID);
BSTR bstrSQL=strSql.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,
adCmdText);
While(!m_pRecordset->adoEOF)
{
...//获取记录并显示
}
m_pConnection->Close();
m_pRecordset->Close();
...全文
327 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinCEC 2006-10-13
  • 打赏
  • 举报
回复
应该是没有注册dll吧,是不是在没有装VC的电脑上运行啊?

做一个bat文件,输入:
Regsvr32.exe .\mfc42.dll
Regsvr32.exe .\msado15.dll
Regsvr32.exe .\msjro.dll

保存---退出---把文件mfc42.dll msado15.dll msjro.dll拷贝到当前目录

执行bat文件,即可
pioneer_public 2006-10-13
  • 打赏
  • 举报
回复
m_pConnection->Close();
m_pRecordset->Close();

写反了吧?

应该是记录集先关闭后关闭连接吧

如果这个没有问题,进行单步调试,很有可能是open中的问题
jixingzhong 2006-10-12
  • 打赏
  • 举报
回复
断点+单步,
确定问题语句所在,
然后GetLastError查看错误代码 ....
mynamelj 2006-10-12
  • 打赏
  • 举报
回复
如果是断言错误,应该是MFC产生的错误,ADO一般是产生运行时错误.
mynamelj 2006-10-12
  • 打赏
  • 举报
回复
进行单步调试,看执行到哪一条语句后就会出现断言错误.
xiangrujian 2006-10-12
  • 打赏
  • 举报
回复
看看是不是前面的m_pRecordset没关闭
liudan9567 2006-10-11
  • 打赏
  • 举报
回复
不好意思,&s是我打错了,程序里是写的%s
miladuo 2006-10-11
  • 打赏
  • 举报
回复
同意楼上所说%s
gaopl_8278 2006-10-10
  • 打赏
  • 举报
回复
你的这一句strSql.Format("SELECT * FROM PatientTable WHERE ID='&s'",strID);中请把&s改为%s,然后在这一句后面加上一句AfxMessageBox(strSql),看看这个变量现在是什么样的,是不是合法的SQL查询语句,如果是就好了,如果不是就改写成这样:(看仔细,不要把符号搞错)
strSql.Format("SELECT * FROM PatientTable WHERE ID='%s'"+'\0',strID);这样strSql就不会乱指了.最好把strSql定义成CString对象,因为别的我没试过.

4,011

社区成员

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

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