问题描述
我有一个拆分表链接到带有某些字段的查询,此表单有一些文本框,但我的重点是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
值。