VB6检索最后一个自动递增的ID并再次更新记录

VB6检索最后一个自动递增的ID并再次更新记录,vb6,Vb6,我有一段代码,将新行插入表中,然后检索SerialNo,使用SerialNo更新ReferenceNo列,然后再次更新数据库 但是,在第二次更新时,我得到一个错误: 无法找到行进行更新。自上次读取后,某些值可能已更改。 代码如下所示 DataEnvironment1.rsAddNewMsg.Open With DataEnvironment1.rsAddNewMsg .Field1 ="mpla" .Field2 ="mpla" .... .Update .ReferenceNo = "

我有一段代码,将新行插入表中,然后检索SerialNo,使用SerialNo更新ReferenceNo列,然后再次更新数据库

但是,在第二次更新时,我得到一个错误: 无法找到行进行更新。自上次读取后,某些值可能已更改。

代码如下所示

DataEnvironment1.rsAddNewMsg.Open

With DataEnvironment1.rsAddNewMsg

.Field1 ="mpla"
.Field2 ="mpla"
....

.Update

.ReferenceNo = "Mpla" + SerialNo

.Update

DataEnvironment1.rsAddNewMsg.Close

错误发生在第二次更新时。

您可能需要重新打开记录集以获取更改。您还可以尝试打开一个动态类型,它可以更好地反映数据的更新。我认为默认情况下,您将打开一个仅向前的记录集


对不起,我已经很久没有使用ADO了,所以我有点生疏了

经过两天的努力,我终于发现了这个问题。 问题是为了将另一个字段(不相关)默认为“N”,我对表有一个约束。禁用此约束后,我的代码工作得非常出色!:)

youpiiii

只是为了记录,为了找到原因,我用一个小的新表模拟错误,表上有标识。在测试过程中,我注意到更新正在进行中。所以更新部分还可以。因此,我将一部分普通代码分离出来,并通过改变表中的属性进行测试,直到找到原因


谢谢你的帮助:)

哦!非常感谢你的回答,你给我指出了一个我完全不知道的方向。。。我在VB6中支持一个非常旧的系统,以前从未处理过此类问题。因此,游标位置有两个选项:“使用服务器端游标”和“使用客户端游标”。我使用的是客户端。我注意到forward-only的选项在服务器端。。。欢迎提出任何建议。谢谢