无法为更新定位行.一些值可能在最后一次读取后已更改.
这个问题怎么解决啊!程序大概意思如下:
AddSQL("SELECT * FROM DBO.USER_LINECARD WHERE USER_TELEPHONE=:telcode");
AddParam("telcode",a->Telephone);
ADOQuery1->Open();
ADOQuery1->Edit();
ADOQuery1->FieldByName("STAFF_TIME")->Value=Now();
SetField("USER_NAME",a->UserName);
SetField("USER_ADDR",a->UserAddr);
SetField("USER_NOTE",a->Note);
SetField("USER_MDF",a->VCode);
SetField("USER_PORT",a->HCode);
SetField("USER_OLDMDF",a->OldVCode);
SetField("STAFF_SITE",Staff_Site);
SetField("STAFF_NUM",Staff_Num);
ADOQuery1->Post();
ADOQuery1->Close();
Post()的时候就报错了!大家帮帮忙啊!急!
6 个解决方案
#1
报错信息是什么?
不是你字段名写错了?给定值与字段类型不符合等等?
不是你字段名写错了?给定值与字段类型不符合等等?
#2
报错信息是:
无法为更新定位行.一些值可能在最后一次读取后已更改.
字段名没有错,因为有些记录可以更新!可是有的记录就不行了,那些不能更新的记录有一个基本共同的特征,就是USER_ADDR,就是用户地址地段的值好多是已经达到了长度限制,数据库中的这个字段的长度定义是varchar2(60),是不是说可以输入30个以内的汉字?可是在用户界面上的Edit中的MaxLength定义为40,也就是说可以输入20个以内的汉字,并没有超出数据库存储长度啊!我都快晕了!谢谢"书生"!
大家帮我再想一下,有没有别的什么原因啊!
无法为更新定位行.一些值可能在最后一次读取后已更改.
字段名没有错,因为有些记录可以更新!可是有的记录就不行了,那些不能更新的记录有一个基本共同的特征,就是USER_ADDR,就是用户地址地段的值好多是已经达到了长度限制,数据库中的这个字段的长度定义是varchar2(60),是不是说可以输入30个以内的汉字?可是在用户界面上的Edit中的MaxLength定义为40,也就是说可以输入20个以内的汉字,并没有超出数据库存储长度啊!我都快晕了!谢谢"书生"!
大家帮我再想一下,有没有别的什么原因啊!
#3
会不会数据库里没有定义主键,而更新的内容涉及到太多的行。
#4
SetField("USER_ADDR",a->UserAddr->AsString.Trim());
#5
你确定找到记录了吗?
或者是否有以前更新的记录没有post()
或者是否有以前更新的记录没有post()
#6
我再看看
#1
报错信息是什么?
不是你字段名写错了?给定值与字段类型不符合等等?
不是你字段名写错了?给定值与字段类型不符合等等?
#2
报错信息是:
无法为更新定位行.一些值可能在最后一次读取后已更改.
字段名没有错,因为有些记录可以更新!可是有的记录就不行了,那些不能更新的记录有一个基本共同的特征,就是USER_ADDR,就是用户地址地段的值好多是已经达到了长度限制,数据库中的这个字段的长度定义是varchar2(60),是不是说可以输入30个以内的汉字?可是在用户界面上的Edit中的MaxLength定义为40,也就是说可以输入20个以内的汉字,并没有超出数据库存储长度啊!我都快晕了!谢谢"书生"!
大家帮我再想一下,有没有别的什么原因啊!
无法为更新定位行.一些值可能在最后一次读取后已更改.
字段名没有错,因为有些记录可以更新!可是有的记录就不行了,那些不能更新的记录有一个基本共同的特征,就是USER_ADDR,就是用户地址地段的值好多是已经达到了长度限制,数据库中的这个字段的长度定义是varchar2(60),是不是说可以输入30个以内的汉字?可是在用户界面上的Edit中的MaxLength定义为40,也就是说可以输入20个以内的汉字,并没有超出数据库存储长度啊!我都快晕了!谢谢"书生"!
大家帮我再想一下,有没有别的什么原因啊!
#3
会不会数据库里没有定义主键,而更新的内容涉及到太多的行。
#4
SetField("USER_ADDR",a->UserAddr->AsString.Trim());
#5
你确定找到记录了吗?
或者是否有以前更新的记录没有post()
或者是否有以前更新的记录没有post()
#6
我再看看