Pump.exe 中的 0x778f15ee 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0014c7ec 处的 _com_erro

quasimodo1991 2014-05-16 02:59:54
VS2010 mfc 用ado连接access2003,想实现一个输入条件查询的功能,结果显示在一个ListCtrl控件里。调试没有错误,但是运行后点新编辑的按钮就出现错误:“Pump.exe 中的 0x778f15ee 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0014c7ec 处的 _com_error。”图在这儿
代码发在下面,在网上查到可能是指针的问题,但是就是不知道哪出问题了,还请大神解答
void CChuxuanDlg::OnClickedChuxuanButton4()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_headg = m_editHeadc * (m_editHight + 5); // 根据输入的排水高度和扬程损失系数计算扬程估算值。
m_listCtrlchuxuan.DeleteAllItems(); // 删除列表控件中已有记录
CString sql = _T("select * from pump where headrange1>m_headg and headrange2<m_headg"); // 根据扬程估算值生成sql语句。
_RecordsetPtr pRecordset = m_database.Select(sql); // 获得查询结果集合
CString record[25];
CString temp;
COleDateTime time;
CString companyname,model,pclass,acidproof=_T("否"),motormodel;
int ID,series,speed;
float head,headrange1,headrange2,singlehead,ratedflow,flowrange1,flowrenge2,shaftpower,shaftpowerrange1,shaftpowerrange2,efficiency,efficiencyrange1,efficiencyrange2,NPSHR,NPSHRrange1,NPSHRrange2,motorpower;
int row = 0;
while (!pRecordset->adoEOF) // 遍历查询结果集合,将每条结果在列表框中显示
{
pRecordset->GetCollect("ID"); // 取出当前记录的ID字段的值。以为ID字段的值是整形类型,所以取lVal属性获得字段值。
ID = pRecordset->GetCollect("ID").lVal;
temp.Format(_T("%d"), ID);
// 往列表框新增一条记录
m_listCtrlchuxuan.InsertItem(row, temp);
pRecordset->GetCollect("companyname"); // 取出当前记录的companyname字段的值。以为companyname字段的值是字符串类型,所以取bstrVal属性获得字段值。
companyname = pRecordset->GetCollect("companyname").bstrVal;
if (companyname == _T("扬子江泵业"))
{
m_listCtrlchuxuan.SetItemText(row, 1, _T("扬子江泵业"));
}
else
{
m_listCtrlchuxuan.SetItemText(row, 1, _T("XX泵业"));
}
pRecordset->GetCollect("model"); // 取出当前记录的model字段的值。以为model字段的值是字符串类型,所以取bstrVal属性获得字段值。
model = pRecordset->GetCollect("model").bstrVal;
m_listCtrlchuxuan.SetItemText(row, 2, model);
pRecordset->GetCollect("pclass"); // 取出当前记录的pclass字段的值。以为pclass字段的值是字符串类型,所以取bstrVal属性获得字段值。
pclass = pRecordset->GetCollect("pclass").bstrVal;
m_listCtrlchuxuan.SetItemText(row, 3, pclass);
pRecordset->GetCollect("head"); // 取出当前记录的head字段的值。以为head字段的值是字符串类型,所以取fltVal属性获得字段值。
head = pRecordset->GetCollect("head").fltVal;
temp.Format(_T("%f"), head);
m_listCtrlchuxuan.SetItemText(row, 4, temp);
.....省略了一部分,结构一样......
pRecordset->GetCollect("motorpower");
motorpower = pRecordset->GetCollect("motorpower").fltVal;
temp.Format(_T("%f"), motorpower);
m_listCtrlchuxuan.SetItemText(row, 23, temp);
pRecordset->GetCollect("motormodel");
motormodel = pRecordset->GetCollect("motormodel").bstrVal;
m_listCtrlchuxuan.SetItemText(row, 24, motormodel);
row++;
pRecordset->MoveNext();
}
}
...全文
4729 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-04-08
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
zgl7903 2016-04-08
  • 打赏
  • 举报
回复
try catch 捕捉 _comm_error_ 异常
baidu_32718253 2016-04-08
  • 打赏
  • 举报
回复
我也是同样的问题没看明白是怎么解决的!
zhiyouwoshixixi 2015-04-26
  • 打赏
  • 举报
回复
这个问题基本是图片路径的问题,确保名称和后缀没有问题,将图片放在test项目文件夹下的test文件夹中(即主函数main.cpp所在的目录),如我的路径为C:\Users\yuxuesong\Desktop\PRH\test\test,然后imread函数只用写pic.jpg就行了。
大神归来 2014-08-22
  • 打赏
  • 举报
回复
你的问题解决了吗
quasimodo1991 2014-05-16
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
直接调试,看具体代码在哪里出问题了


出现上面这样的提示,是不是这个函数出错了
_RecordsetPtr CADODatabase::Select(CString sql)
{
_bstr_t CommandText(sql); // 生成要执行的sql语句字符串
m_pRecordset.CreateInstance("ADODB.Recordset"); // 生成_RecordsetPtr实例
m_pRecordset->Open(CommandText,m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockBatchOptimistic, adCmdText);
return m_pRecordset;
}
oyljerry 2014-05-16
  • 打赏
  • 举报
回复
直接调试,看具体代码在哪里出问题了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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