adoquery1.SQL.Text :='select * from ft';
  with adoquery1 do
  begin
    open;
    edit;
    append;
    sql.Text :='insert into ft(pcbid)values("'+edit1.Text+'")';
    post;
    execsql;
 报错   raised exception class EDatabaseError with message 'ADOQuery1: Dataset not in edit or insert mode'.哪位大哥帮我看看错在哪儿了,网上的资料我看了好多,为什么我这个就解决不了!

解决方案 »

  1.   

    pcbid是数字类型用:
    sql.Text := 'insert into ft(pcbid) values ('+edit1.Text+ ')'; pcbid是字符类型用:
    sql.Text := 'insert into ft(pcbid) values ('''+edit1.Text+''')'; 
      

  2.   

    楼上的大哥,pcbid 是字符型啊,我是这样写的.我看报错说的问题不在这上面,不是类型不配的问题,再帮忙看看啊..怎么没人!
      

  3.   

    你的问题在于SQL字符串表达式使用问题,用单引号,而非双引号。
    上面已经帮你解决了。
      

  4.   

    晕啊,没注意看你的代码。
        open;    //删除
        edit;    //删除
        append;  //删除
        sql.Text := 'insert into ft(pcbid)values(" '+edit1.Text+ '") ';  //这句错误,用我修正过的。
        post;     //删除:这个地方会异常,导致execsql没有执行
        execsql; 或者用:
        open;
        edit;    //删除
        append;
        FieldByName('pcbid').AsString := edit1.Text;
        post;
        execsql; //删除还是先熟悉一下ADO组件再去编码。
      

  5.   

    我没有这样写过,我常用的形式如下:
    SQL.CLEAR;
    SQL.ADD('SQL代码');
    EXECSQL;
      

  6.   

    SQL.ADD 从字面上看是追加的意思啊,SQL.TEXT := 好像是复盖重来的意思,不知道了解错了没有.