执行m_AdoConn.m_pRecordset->adoEOF,弹出“对象关闭时 不允许操作”

鸿福-晴天 2013-12-24 03:44:43
点击接班按钮后,执行函数OnBnClickedButton2()
void CDuty_Shift::OnBnClickedButton2()//接班
{
// TODO: 在此添加控件通知处理程序代码
time = CTime::GetCurrentTime();
nowtime.Format("%d-%02d-%02d %02d:%02d:%02d",time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());
//查询是否已经交接班
ADOConn m_AdoConn;
//打开数据库连接
m_AdoConn.InitConnection();
CString sql;
sql.Format("insert into Duty_Record(交接班状态,时间) values('接班',\'%s\')",nowtime);
m_AdoConn.Execute((_bstr_t)sql);//执行插入语句
m_AdoConn.ExitConnection();
//OnClear1();
CWnd::GetDlgItem(IDC_BUTTON2)->EnableWindow(false);//接班
CWnd::GetDlgItem(IDC_BUTTON1)->EnableWindow(true);//接班
AfxBeginThread(SubProcessShifjie,this,THREAD_PRIORITY_NORMAL);
UpdateData(false);
// CWnd::GetDlgItem(IDOK)->EnableWindow(true);//确定
}

然后跳到线程 SubProcessShifjie(LPVOID param)中

UINT SubProcessShifjie(LPVOID param)
{
CDuty_Shift* Dlg = (CDuty_Shift*) param;
CTime tm = CTime::GetCurrentTime();
CString str;
str.Format("%d-%02d-%02d",tm.GetYear(),tm.GetMonth(),tm.GetDay());
//CString time;
ADOConn m_AdoConn;
//打开数据库连接
m_AdoConn.InitConnection();
CString sql;
_RecordsetPtr m_pRecordset;
while(true)
{
try
{
sql.Format("select * from Duty_Record where 时间> \'%s\' and 交接班状态 = '接班' and 姓名 is not nul",str);
m_pRecordset = m_AdoConn.GetRecordset((_bstr_t)sql);
if(!m_AdoConn.m_pRecordset->adoEOF)
{
CString name = m_pRecordset->GetCollect("姓名");
name = name + "接班成功!!";
Dlg->MessageBox(name,"温馨提示!");
//Dlg->OnClear1();
break;
}
CTime time11 = CTime::GetCurrentTime();
if(time11 - tm > 300)//五分钟
{
Dlg->MessageBox("接班失败,请输入指纹进行接班!!","温馨提示!");
sql.Format("delete from Duty_Record where 时间> \'%s\' and 交接班状态 = '接班' and 姓名 is not nul",str);
m_AdoConn.Execute((_bstr_t)sql);
break;
}
}
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}
m_AdoConn.m_pRecordset->Close();
m_AdoConn.m_pRecordset =NULL;
m_AdoConn.ExitConnection();
return 0;
}

执行到if(!m_AdoConn.m_pRecordset->adoEOF)时,直接异常,弹出“对象关闭时 不允许操作”提示框!!
上网查找解决方案好久,也没解决掉,求解决方法!!!谢谢!!
...全文
752 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2013-12-24
  • 打赏
  • 举报
回复
ADOConn 是什么?你自己封装的?
oyljerry 2013-12-24
  • 打赏
  • 举报
回复
鸿福-晴天 2013-12-24
  • 打赏
  • 举报
回复
终于找到毛病了,sql语句错了。。。。
select * from Duty_Record where 时间> \'%s\' and 交接班状态 = '接班' and 姓名 is not nul
最后应该为null,少了个l。。。。。
鸿福-晴天 2013-12-24
  • 打赏
  • 举报
回复
在线等。。。。

4,012

社区成员

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

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