其他操作都成功的,可是
strSQL.Format("insert into %s(序号) values(%d)",tableName,m_number);
m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,adCmdText);
这句话就出错:IDispatch error3092。
怎么回事

解决方案 »

  1.   

    try
    {}
    catch(_com_error e)
    {
    MessageBox(NULL,e.Description(),"error",0);}
    看看错误先
      

  2.   

    我就是catch到错误用messagebox显示出来的阿,就是那个IDispatch error3092
      

  3.   

    IDispatch error3092:  安全数据库中找不到这台计算机的帐户。 从下述语句中并不能看出问题
    strSQL.Format("insert into %s(序号) values(%d)",tableName,m_number);
    m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,adCmdText);
    但有一点要注意:如果表中不是仅有一个字段,而且插入时没有全部指定值的话,插入时要指定字段名,在SQL语句中是这样的:Insert into TableName(字段1, 字段2, 字段3) Values(xx, xx, xx)
      

  4.   

    谢谢楼上的,可是我同样的语句在对access数据库操作时运行正常,而当我把access里的表导入到sqlserver里以后就出错了,然而当我把insert改成其他操作诸如select,delete都没问题,我怀疑是不是用户不能进行insert操作,可我用的是sa账户阿
    还有一个问题:哪里有IDispatch错误的查询手册之类的东西?
      

  5.   

    连接绝对没有问题,我怀疑是insert语句的问题,我的“序号”字段在sqlserver里的类型是int,我这样写是不是有什么错误?
      

  6.   

    strSQL.Format("insert into %d(序号) values(%d)",1,m_number);
    m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,adCmdText);如果没有问题 就是你的类型不匹配
      

  7.   

    你可以用_CommandPtr的参数化查询啊
      

  8.   

    Visual Studio中有相应的工具ERRLOOK.exe,
    只要输入错误的代号,即可查得错误的原因.你可升级MDAC看一看,最新版本是2.8
      

  9.   

    你是不是在acess里面有的字段设置了自动增加,导入到sqlserver后,自动增加的字段就没用了,要重新设置才行,我以前遇到过!