【问题标题】:Access 2010 subform requery not working but did in 2003?Access 2010 子表单重新查询不工作,但在 2003 年?
【发布时间】:2013-01-06 03:08:32
【问题描述】:

我试图弄清楚为什么 Requery 子表单在 2003 年工作时在 Access 2010/2007 中没有显示更改的记录(或新的或已删除的记录)?

如果我关闭/重新打开表单,这些值是否正确但直到那时才正确? 2007/2010 年有什么变化需要额外的步骤吗?

这是多个表单使用的子表单 - 我不会尝试根据主表单上发生的任何事情等来刷新/requrey。 SUBform 上有一个按钮,可以调用该按钮将记录向上移动(重新排序行);

数据库是 SQL Server 2005,如果这有什么不同,则不是本地访问。

Private Sub btnUp_Click()
On Error GoTo Error_Handler
Dim blnUpdateSwitch As Boolean
    blnUpdateSwitch = False
Dim blnRemoval As Boolean
    blnRemoval = False

' Commit any outstanding edits before moving the records.

Me.Refresh

Dim intCurrentRecord As Integer
intCurrentRecord = Me.CurrentRecord
If Me.Recordset!blnSwitch = True Then blnUpdateSwitch = True
If intCurrentRecord >= 2 Then
    Me.Recordset.Edit
    Me.Recordset!lngSequence = intCurrentRecord - 1
    Me.Recordset.Update

    Me.Recordset.MovePrevious

    Me.Recordset.Edit
    Me.Recordset!lngSequence = intCurrentRecord
    Me.Recordset.Update

    Me.Recordset.Requery
    If blnUpdateSwitch Then CalculateSwitchOrder

    Me.Recordset.AbsolutePosition = intCurrentRecord - 2

    Me.Requery

End If

Exit Sub

Error_Handler:

End Sub

【问题讨论】:

  • 您是否设置了断点并逐行遍历代码以查看发生了什么?
  • 我不确定您所说的“看看发生了什么”是什么意思?我可以单步执行,没有错误等。表单上的网格/表格“光标”移动到屏幕上的正确行,但值仍然显示旧值?在 access 2003 中,屏幕上的值已更新。在 2010 年它没有 - 所以我不确定我是否需要做一些额外的事情等等。
  • 看看这是否有帮助:stackoverflow.com/questions/1637722/…
  • 将光标放在该代码中允许的第一行:blnUpdateSwitch = False。使用 F9 设置断点 --- 您将在左侧边缘看到一个红点,并且整行也应以红色突出显示。然后返回表单并单击命令按钮。您的代码将处于中断(调试)模式。使用 F8 逐行执行代码。看看发生了什么。
  • HansUp - 我的道歉 - 我理解逐步执行代码/断点 - 我的问题是“我在寻找什么” - 这意味着代码似乎执行没有错误,控件和基础值不会刷新屏幕..

标签: ms-access ms-access-2010 subform


【解决方案1】:

尝试将Me.Requery 替换为Me.Form.Requery

此外,您可以对 Me.RefreshMe.Form.Refresh 执行相同操作

【讨论】:

    猜你喜欢
    • 2014-06-24
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多