首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TADOQuery在Appand的时候出现field cannot be modified的有关问题?

2012-04-14 
TADOQuery在Appand的时候出现field cannot be modified的问题??我在使用TADOQuery更新数据的时候出现了fie

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;

热点排行