首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MS Access VBA Addnew是否返回现有记录?

MS Access VBA Addnew是否返回现有记录?
EN

Stack Overflow用户
提问于 2013-01-10 09:12:17
回答 1查看 775关注 0票数 1

我有一个用Microsoft Access 2010编写的数据库应用程序。它们通过"OrderID“链接在一起,这是"Orders”表的主键。

数据库分为前端和后端,因此它们是链接表。

下面的代码用于想象一个全新的订单,其中包含一个链接回该订单的FrameOrder:

代码语言:javascript
运行
复制
Private Sub FramingQuoteButton_Click()
    ' Create a new Order of type Framing, then create a Framing Order linking back to it
    Dim rs As DAO.Recordset
    Dim frs As DAO.Recordset
    Dim ThisOrderID As Long
    Dim ThisFrameOrderID As Long

    Set rs = CurrentDb.OpenRecordset("Orders")
    rs.AddNew
    rs!OrderType = "FRAME"
    rs!CustomerID = DefaultCustomerID()
    rs.Update
    rs.Bookmark = rs.LastModified
    ThisOrderID = rs!OrderID
    rs.Close

    Set frs = CurrentDb.OpenRecordset("FrameOrder")
    frs.AddNew
    frs!OrderID = ThisOrderID
    frs.Update <<<< This is where the problem shows up
    frs.Bookmark = frs.LastModified
    ThisFrameOrderID = frs!FrameOrderID
    frs.Close

    DoCmd.OpenForm "FrameOrder", , , "OrderID = " & ThisOrderID, , , "NEW"

    Set rs = Nothing
    Set frs = Nothing
End Sub 

因此,首先我创建一个全新的"Orders“条目。然后,我创建了一个"FrameOrder“条目,并将"OrderID”设置为我刚刚创建的"Order“的主键。

这就是问题所在:有时当我这样做时,上面显示的Update行抛出一个键错误。当我在调试器中查看它时,似乎frs.AddNew调用生成了一个记录,该记录的关键字是现有记录的关键字,位于表的中间位置!如果我在后端执行“压缩和修复数据库”,问题就会消失。

这个问题最常出现在我完成这样的复制之后(是的,我确保在复制之前关闭了数据库)。

知道是怎么回事吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-02-22 23:51:11

我建议刷新链接表,有时如果数据结构更改,更改不会传播到前端,可能会发生这样的问题。我希望这能行得通。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14249280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档