关于网友提出的“ 问个简单的插入问题”问题疑问,本网通过在网上对“ 问个简单的插入问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 问个简单的插入问题描述:
在做插入语句时,编译的时候提示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:
我一般这样写:
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中插值
以上写的看的几累呀! 不能换一种方式写吗?
with adoquery1 do
begin
Close;
sql.text := 'select * from baseinfo';
open;
insert;
FieldByName('字段名').AsString := edid.text;
.......
post;
end;
或者
'''+edmc.text+''' 都换成这个试试