绑定到表的列表框在重新查询

时间:2017-10-16 15:19:03

标签: forms ms-access access-vba ms-access-2013

我有一个表单,提供用于过滤数据表上记录的图形界面。我添加了一组控件,允许用户保存过滤器配置,以便以后可以调用它们。保存的过滤器存储在表格中;每条记录都有一个昵称(主键)和一个实际SQL语句的字段。主窗体将有一个列表框,按昵称显示所有已保存的过滤器(见下文)。此列表框的RowSource绑定到“已保存的过滤器”表

Saved Filter List

我想允许用户更改已保存过滤器的昵称和/或SQL语句。要实现此目的,“编辑”按钮将打开一个子窗体,其中包含两个文本框,这些文本框中填充了所选记录中的字段。当子窗体关闭时,它会询问用户是否要将更改保存到记录中(因此,子窗体及其控件未绑定到“已保存的过滤器”表)。

据我所知,填充子和更新记录的功能可以顺利运行。但是,保存的过滤器昵称列表框有问题。编辑记录的昵称时,更改将传播到表和列表框。如果用户然后立即再次尝试编辑已保存的过滤器,则会遇到问题,因为列表框的.Value属性仍会返回旧名称。如果用户改为选择其他一些昵称,然后返回第一个选择并尝试编辑它,则子表单将正确打开。

我试图在查找控件之前重新查询列表框,但这并没有解决问题。我试图取消选择列表框中的项目并重新查询,但这也不起作用。当用户更改已保存的过滤器时,如何确保列表框控制更新?

这是我的代码:

(家长表格)

'Function that is bound to the OnClick event of the Edit button
Private Function sfEdit()

    Dim sfLabel As String
    sfLabel = Me.List_Saved.Value

    If epuModule.OpenEditor(sfLabel) = False Then
        MsgBox "Unable to locate record with name " & Chr(34) & sfLabel & Chr(34), vbCritical
    End If

    Debug.Print Me.List_Saved.Value
    Me.List_Saved.Requery

End Function

([Form_SQL编辑器]又名编辑弹出窗口)

Private Sub Form_Close()
    If PromptSave = True Then
        Select Case MsgBox("Do you want to save your changes?", vbYesNo)
            Case vbYes
                sfModule.Edit RecordLabel, Me.tbTerms.Value, NewLabel
            Case vbNo

        End Select
        PromptSave = False
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

Me.List_Saved.Requery之后移动Form_Close(将全局标识符替换为“我”)到sfModule.Edit RecordLabel, Me.tbTerms.Value, NewLabel。除非您的编辑表单是模态的,否则它将在任何编辑实际完成/保存之前运行。