TADOQuery在Appand的时候出现field cannot be modified的问题??
我在使用TADOQuery更新数据的时候出现了field cannot be modified的问题,问题如下:
我用的是sql数据库,数据库表中有自增字段
首先将SET IDENTITY_INSERT [tablename]设置为 ON,允许设置自增字段的值
然后
adoL.Append;
将另一个数据库相同表的内容拷贝到这个数据库表中
.......
For iLoop := 0 to adoL.FieldCount -1 do
adoL.Fields[iLoop].Value := adoR.FieldByName(adoL.Fields[iLoop].FieldName).Value;
出现field cannot be modified的问题
我跟踪发现adoL.Fields[iLoop].CanModify为false,但是CanModify为只读属性,不能修改,请问如何解决
[解决办法]
虽然你设置了SET IDENTITY_INSERT [tablename] ON
但是这个栏位仍然不可编辑,除非你使用"Insert"语句、ADOQuery.ExecSql方法进行插入。
[解决办法]
如果是自增字段,则记录克隆时,该字段不赋值,假定自增字段为 ID。
adoL.Append;
...
For iLoop := 0 to adoL.FieldCount -1 do
if LowerCase(adoL.Fields[iLoop].FieldName)<>'id' then
adoL.Fields[iLoop].Value := adoR.FieldByName(adoL.Fields[iLoop].FieldName).Value;