insert into person (id,name,addr,birth,tel,memo) values ('11','11','11',#1980-12-1#,'11','11')access数据库,除一项为短日期格式,其余都是文本格式具体是这样的
m_pCmd->CommandText=_bstr_t("insert into person (id,name,addr,birth,tel,memo) values ('11','11','11',#1980-12-1#,'11','11')");
m_pCmd->Execute(NULL,NULL,adCmdText);//这儿报错,runtime error

解决方案 »

  1.   

    单引号不对吧?
    m_pCmd->CommandText=_bstr_t("insert into person (id,name,addr,birth,tel,memo) values (\'11\',\'11\',\'11\',#1980-12-1#,\'11\',\'11\')");
    试试这样,最好是把你生成的SQL字符串打印出来,直接在ACCESS中运行一下看有无错。如果没有就看你的连接代码了。
      

  2.   

    把sql语句打印一下出来,看是否正确
      

  3.   

    insert into person (id,name,addr,birth,tel,memo) values ('11','11','11',#1980-12-1#,'11','11')
    这个就是access语句
    access里哪儿可以运行?
      

  4.   

    简单的也错
    m_pConn->Open("","","",adOpenUnspecified);
    m_pCmd->put_ActiveConnection(_variant_t((IDispatch*)m_pConn));
    m_pCmd->CommandText=_bstr_t("del from person where id='"+m_sID+"'");
    m_pCmd->Execute(NULL,NULL,adCmdText);
    m_pConn->Close();
    单引号前加不加\都一样
    select查询可以
      

  5.   

    凡是修改数据的m_pCmd->Execute都会有runtime error
    查询的可以,为什么?
      

  6.   

    使用COM智能指针要用try块包起来., 运行错误只是你没有去捕获COM的_com_error 异常, 捉住异常看看返回的是什么信息? _ConnectPtr的Errors属性包含了错误的详细说明
      

  7.   

    del写错了
    insert不加字段名就对了,怪了
    update始终不对,不知道下面这句有什么错
    update person set name='11',addr='11',birth=#1980-12-25#,tel='11',memo='11' where id='11'
      

  8.   

    字段id是否自动生成,id也是文本吗?
      

  9.   

    access本身有一些关键字的,如果你用这些关键字作了你的字段名就会出现一些问题。所以,命名你的字段名的时候,最好是不要用一些简单的单词,最好用组合型的。比如name用Person_Name
    当你用的字段名是access的关键字的时候,你的Sql语句中就需要用[]来把该字段名包起来,以表示它是字段名不是关键字
      

  10.   

    TRY{
       m_pConn...
    }CATCH_ALL(e){e->ReportError();}END_CATCH_ALL
      

  11.   

    果然是name的问题
    难怪把insert里的字段去掉就对了