当表不为空时任何操作都正常.
但是当表为空时,插入操作就出错误.
具体为下:
//插入新数据
CString strSQL;
CString Tempsertnum;
Tempsertnum.Format("%04s",m_workernumstr);
strSQL.Format("insert into worker(WorkerNum,WorkerName) values ('%s','%s')",Tempsertnum,m_workernamestr);
try
{
theApp.m_pCon->Execute(_bstr_t(strSQL),NULL,adCmdText);
}
catch (_com_error &e)
{
CString str = (char *)e.Description();
::MessageBox(NULL, "工号重复,请重新输入","提示",MB_OK | MB_ICONWARNING);
return;
}
//然后是重新显示list control中的数据:
ShowData();void PWorker::ShowData()
{
//数据库操作
try
{
theApp.m_pRs_worker->Open(_variant_t("worker"), _variant_t((IDispatch *)theApp.m_pCon,true),adOpenKeyset,adLockOptimistic,adCmdTable);
}
catch (_com_error &e)
{
CString str = (char *)e.Description();
::MessageBox(NULL,"无法打开worker表。","提示", MB_OK | MB_ICONWARNING);
return;
}
...
}在增加新数据后,错误提示:"无法打开worker表。"   应该是表示表打开读取失败 为什么 请各位指点,谢谢

解决方案 »

  1.   

    theApp.m_pRs_worker是否已经打开?
      

  2.   

    close后不是theApp.m_pRs_worker->Open....就是打开了吗?
    表不空时不出错,空时才出错...
      

  3.   

    用select * from worker adCmdText
    试试看
    另外是不是那句open出错?
      

  4.   

    CString str = (char *)e.Description();
    MessageBox(str);
    即抛出异常:"对象打开时不允许操作" 请帮忙
      

  5.   

    open应该不会 因为别的操作都没问题 只有表为空时,插入新数据,再显示数据就抛出异常
      

  6.   

    try
    {
    theApp.m_pRs_worker->Open(_variant_t("worker"), _variant_t((IDispatch *)theApp.m_pCon,true),adOpenKeyset,adLockOptimistic,adCmdTable);
    }
    catch (_com_error &e)
    {
    CString str = (char *)e.Description();
    MessageBox(str);
    return;
    }
    就是打开数据库的那句抛出异常,但是初始化DLG时我也会调用这个去读取数据库中的信息来显示,然后再关闭.这次插入再显示就是再次打开了.只有空表插入再打开才抛出异常
      

  7.   

    和MS SQL一样的用法 只是这次任务中要用MYSQL 大哥 再麻烦你帮忙看一下