MS-ACCESS如何循环所有当前表单的查询记录以检查某个字段的值是否等于某些文本框的值

问题描述

我有一个拆分表链接到带有某些字段的查询,此表单有一些文本框,但我的重点是3个特定的文本框和查询字段:类型,日期和ID。

当我出于某些原因过滤数据表视图时,我想通过buttonclick事件检查所有已过滤的查询记录是否具有相同字段的值,例如我感兴趣的主窗体的文本框值。

例如:

我的主要形式是:

名称:包裹

数量:10

类型:正常

日期:2020年1月1日

id:1

在我感兴趣的3个值过滤的数据表中,我有14个记录具有相同的值:

类型:正常

日期:2020年1月1日

id:1

我怎样才能用buttonclick检查14条记录的所有相对过滤查询字段,值(类型,日期和ID)是否等于表单的txtType.value(normal)和txtDate.value(01/01/2020)和txtid.value(1)?

提前谢谢。

解决方法

找到了解决方法。

由于Form.RecordsetClone属性,我做了一个公用函数,将所有当前查询表单的记录与相对txtboxes值进行比较:

Public Function CheckFilteredRecords(frmName As String) As Boolean

Dim rs As Recordset
Set rs = Forms(frmName).RecordsetClone

If Not (rs.EOF And rs.BOF) Then
    rs.MoveFirst 'Unnecessary in this case,but still a good habit
    Do Until rs.EOF = True
        
        If Forms(frmName).txtID.Value = rs!ID.Value _
        And Forms(frmName).txtType.Value = rs!Type.Value _
        And Forms(frmName).txtDate = rs!Date.Value Then
        CheckFilteredRecords = True
        Else
        CheckFilteredRecords = False
        End If
        

        'Move to the next record. Don't ever forget to do this.
        rs.MoveNext
    Loop
End If


rs.Close 'Close the recordset
Set rs = Nothing 'Clean up
End Function

您可以像在CheckFilteredRecords(Me.Name)这样的任何地方调用此函数,如果所有记录都与其相对的txtbox.value相匹配,则该函数将返回True值。