【问题标题】:Display current record in MS-Access form在 MS-Access 表单中显示当前记录
【发布时间】:2021-06-29 14:25:22
【问题描述】:

我现在有一个代码可以转到下一条记录,但在表单中它不会显示下一条记录,只显示 0。您可以在表格中看到代码正在运行并转到下一条记录数量下降了。另一个问题是,当切换到下一条记录并且该记录为 0 时,我的 .Update 上会出现一个突出显示的错误,当我需要它转到下一个时。它没有说错误,我只是假设当它被突出显示时,问题就来自于此。它基本上就像代码没有重新启动一样。这是我现在的代码:

Private Sub ItemCode_Dirty(Cancel As Integer)
Dim Db As DAO.Database
Dim rs As DAO.Recordset

Set Db = CurrentDb

Set rs = Db.OpenRecordset("Select WrkordNum, ToGo from WorkOrders where ItemCode =" & Me.ItemCode)

With rs
    If Not .EOF Then
        If !ToGo <= 0 Then
            .MoveNext
        End If
        .Edit
        !ToGo = !ToGo - 1
        .Update

    End If
End With

End Sub

如何让下一条记录显示在我的表单中,而不仅仅是显示 0?我可以在我的代码中添加什么让它重新开始,这样我就可以处理表格而不仅仅是一条记录?

【问题讨论】:

  • 此处不要使用! 运算符。你无法控制它解析到什么。相反,请使用完全限定的参考。
  • 在您的问题中包含错误编号和描述。

标签: vba forms ms-access record


【解决方案1】:

您打开了一个新记录集。这与您当前的形式完全没有关系。您可以从表单外部执行此操作。您甚至可以在 Excel 中执行此操作。

如果你想与表单交互,你必须使用表单方法。

如果您只想转到下一条记录,您可以使用如下代码:

If Me.CurrentRecord < Me.Recordset.RecordCount Then
    DoCmd.GoToRecord , , acMoveNext
End If

如果您想将表单移动到与新记录集相同的记录,您可以这样做:

Private Sub ItemCode_Dirty(Cancel As Integer)

    Dim Db As DAO.Database
    Dim rs As DAO.Recordset
    
    Set Db = CurrentDb
    
    Set rs = Db.OpenRecordset("Select WrkordNum, ToGo from WorkOrders where ItemCode =" & Me.ItemCode)
    
    With rs
        If Not .EOF Then
            If !ToGo <= 0 Then
                .MoveNext
            End If

            .Edit
            !ToGo = !ToGo - 1
            .Update

            Me.CurrentRecord = rs.AbsolutePosition
        End If
    End With
End Sub

最后,如果您想使用当前记录集而不是打开新记录集:

Private Sub ItemCode_Dirty(Cancel As Integer)
    With Me.Recordset
        If Not .EOF Then
            If .ToGo <= 0 Then
                .MoveNext
            End If

            .Edit
            .ToGo = .ToGo - 1
            .Update
        End If
    End With
End Sub

【讨论】:

  • 我将第一个放在第二个“If 语句”所在的位置,它的计数为 0,但当它变为 0 时,vba 代码会突出显示“.Update”。
  • rs.CurrentRecord 的第二个不起作用。这不是 rs 的选择。
  • 第三个没有减去ToGo的金额。
  • 这是三个不同的选项。你不应该使用所有 3。我给了你选择,因为你的问题不清楚你在做什么。请更新您的问题以更具体。
  • 是的,我知道,我没有一次性使用它们。我分别尝试了每一个来解决这个问题。他们都没有工作。
猜你喜欢
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 2021-01-02
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
相关资源
最近更新 更多