在做插入语句时,编译的时候提示Incompatible types:'string' and 'Tedit',请教一下问题在那里,插入语句如下
     adoquery1.SQL.Add('insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values ');
     adoquery1.SQL.Add(' ('+edid.text+','''+edmc.text+''','''+edfr.text+''','''+eddz.text+''','''+edfzr.text+''','+edcyrs.text+','''+edphone.text+''','''+cmkm.text+''','''+eddjhm+''','''+edxkqx+''','+edcs+','''+cmbnsh+''','''+edmj+''','+edyf+','+edzds+','+edczs+')');
还有在查询分析器中这个insert语句分析能通过,但是执行就提示"当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'baseinfo' 中的标识列插入显式值。",这又是为什么呀?

解决方案 »

  1.   

    应该是你的插入时,edit.text 和对应的列不匹配!的问题
      

  2.   

    '''+edmc.text+''' 都换成这个试试
      

  3.   

    以上写的看的几累呀! 不能换一种方式写吗?
    with adoquery1 do
    begin
      Close;
      sql.text := 'select * from baseinfo';
      open;
      insert;
      FieldByName('字段名').AsString := edid.text;
      .......
      post;end;或者
      

  4.   

    我一般这样写:
    var sqlstr:
      sqlstr:=''insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values('+ 
    edid.text+','+
    ''''+edmc.text+''','+
    ''''+edfr.text+''','+
    ''''+eddz.text+''','+
    ''''+edfzr.text+''','+
    ''''+edcyrs.text+''','''+
    ''''+edphone.text+''','+
    ''''+cmkm.text+''','+
    ''''+eddjhm+''','+
    ''''+edxkqx+''','+
    edcs+','+
    ''''+cmbnsh+''','+
    ''''+edmj+''','+
    edyf+','+
    edzds+','+
    edczs+')';
    adoquery1.sql.text:=sqlstr;
    adoquery1.execsql;如果ID字段是自动增加的则不用在SQL中插值
      

  5.   

    第2个问题大概是ID字段是自动增加引起的,但是前面的问题又是怎么回事呢?编译的时候光标就停在'''+eddjhm+'''后面.