【问题标题】:Filtering a MS Access Listbox on a Form Upon Opening/Loading在打开/加载时过滤表单上的 MS Access 列表框
【发布时间】:2020-03-25 07:15:53
【问题描述】:

我的 MSAccess 数据库中有两个表:MainT 和通过一对多连接链接到 MainT 的 SubT。

我在表单 (Form1) 上使用列表框 (Listbox1),双击时会打开一个新表单 (Form2)。在第二个表单 (Form2) 上还有第二个列表框 (Listbox2)。

我遇到的问题是 Form2 显示 MainT 中的正确记录,如从 Form1 上的 Listbox1 中选择的那样 - 但 Form2 上的 Listbox2 应该只显示 SubT 中与 MainT 中的记录匹配的记录。

相反,Lisbox2 显示 SubT 中的所有记录,而不是根据 SubT 中与 MainT 中显示在表单 (Form2) 中的记录匹配的那些记录进行过滤

Listbox1中双击命令打开Form2:

 DoCmd.OpenForm "Form2", , , "TrackerPTID =" & Me.ListBox1, , acDialog

所以我的问题是如何从 Form1/Listbox1 中获取值,使 Form2 打开正确的记录并将其传递给 Listbox2,以便它使用相同的值将 Listbox2 过滤到 SubT 上匹配的记录在 MainT 上记录

提前致谢!

R

【问题讨论】:

    标签: sql forms ms-access listbox


    【解决方案1】:

    如果您使用的是 Access 2007 或更高版本,我建议您使用 TempVars。

    在打开 Form2 之前在 Form1 中设置一个 Tempvar

    Tempvar("TrackerPTID") = Me.Listbox1
    DoCmd.OpenForm "Form2", , , "TrackerPTID =" & Me.ListBox1, , acDialog
    

    然后像这样定义 Listbox2.RowSource:

    Select * from SubT where TrackerPTID = [Tempvars]![TrackerPTID]
    

    【讨论】:

      【解决方案2】:

      由于您在 Form2 上有 ID,您只需过滤列表框。使用 Form2 的 OnCurrent 事件过滤 Form2 的 ID:

      Private Sub Form_Current()
      
          Me!Listbox2.RowSource = "Select * From Table2 Where ID = " & Me!ID.Value & ""
      
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 2013-12-29
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多