数据更新时出错,是ADO的错误,还是Sql Server的错误,高手救急呀
rs1.open "select id,hth,xmmc from htb where hth='11111'", cn1, adOpenStatic, adLockBatchOptimistic, adCmdText
rs1有多条记录,对其中两条的xmmc进行修改,然后更新数据(rs1.updatebatch),出现如下错误:
Row cannot be located for updating.Some values may have bee changed since
it was last read。
最后对sql server 进跟踪,发现sql server 生成的update语句为
exec sp_executesql N'UPDATE "wmdb".."htb" SET "xmmc"=@P1 WHERE "xmmc" IS NULL AND "hth"=@P2; UPDATE "wmdb".."htb" SET "xmmc"=@P3 WHERE "xmmc" IS NULL AND "hth"=@P4', N'@P1 varchar(300),@P2 varchar(20),@P3 varchar(300),@P4 varchar(20)', 'test 1111', '05HSE25E3350501', 'test 2222', '05HSE25E3350501'
其中htb表中的id为标识字段(为自增,唯一) htb 相当于是订单表中的明细数据
为什么在更新时生成的sql语句是这样的?高手们帮帮忙呀!
问题点数:0、回复次数:6Top
1 楼winternet(冬天)回复于 2005-04-02 13:07:33 得分 0
是不是紀錄在更新之前已經被其他程序刪除了?Top
2 楼chenker()回复于 2005-04-02 13:16:43 得分 0
记录在更新之前没有被修改也没有被删除,而是sql server 生成的update 语句有误Top
3 楼chenker()回复于 2005-04-02 13:20:16 得分 0
不好意思,上面的sql 语句有误,是我自已照着sql server 自动生成的语句写出来的 有一个地方没有改过来
sql server 生成的update语句为
exec sp_executesql N'UPDATE "wmdb".."htb" SET "xmmc"=@P1 WHERE "xmmc" IS NULL AND "hth"=@P2; UPDATE "wmdb".."htb" SET "xmmc"=@P3 WHERE "xmmc" IS NULL AND "hth"=@P4', N'@P1 varchar(300),@P2 varchar(20),@P3 varchar(300),@P4 varchar(20)', 'test 1111', '11111', 'test 2222', '11111'
Top
4 楼zjcxc(邹建)回复于 2005-04-02 13:48:36 得分 0
没跟踪错吧? 你是用什么程序处理的?Top
5 楼zjcxc(邹建)回复于 2005-04-02 13:50:26 得分 0
sql不会帮你生成处理语句,那个处理语句是你程序中的数据对象生成并提交给sql处理的,所以应该是你程序的问题.Top
6 楼chenker()回复于 2005-04-02 14:27:11 得分 0
我已经解决了,我在hth上使用了聚集索引,才造成这样,谢谢参与。Top




