背景:我有一个名为' SNR_log'的表格,我在其中查询以获取以下列表。
接下来,我设计了一个带有文本框的拆分表单。在此文本框中,SNR用于从列表中查找和过滤。要执行此操作,请应用过滤器'宏与where条件一起使用,
[SNR] Like "*" & [Forms]![SNR_History]![Text17] & "*"

问题:是否可以通过在文本框中插入SNR并获得以下结果进行过滤。
换句话说,以SNR作为输入,显示UID以及该UID下的所有SNR。
答案 0 :(得分:1)
您无法在"应用过滤器"中执行此操作。宏。你在幕后需要一些VBA。
您要做的第一件事是查询您的数据以获取UID。你会这样做:
Dim db as Database
Dim Rec as Recordset
Dim UIDx as Integer
Dim strSQL as String
Dim strSQL2 as String
Set db = CurrentDB
strSQL = "SELECT UID FROM SNR_Log " & _
"WHERE [SNR] Like ""*" & [Forms]![SNR_History]![Text17] & "*""
Set Rec = db.OpenRecordSet(strSQL)
'Now grab the UID that's returned and put it inside a variable
UIDx = Rec(0)
现在您有要查询的UID。因此,基于以下内容设置RecordSource:
strSQL2 = "SELECT * FROM SNR_Log WHERE [UID] = " & UIDx & ""
Forms!Me!frmSubFormName.RecordSource = strSQL2
Forms!Me!frmSubFormName.ReQuery
这将改变表单的记录源,并刷新表单,以便查看您刚刚设置的当前记录源。
你可能需要稍微使用strz,我不记得如何使用SQL字符串中的 Like 运算符。不过,我确定它是正确的。
答案 1 :(得分:0)
我能够以一种简单的方式解决它。我创建了一个主窗体和子窗体。子表单的记录源是输入SNR的文本框。一旦单击命令按钮并在其中执行以下事件过程,我就获得了所需的结果;
Private Sub Command4_Click()
Text0.SetFocus
Me.SNR_log_Subform.Form.RecordSource = "Select * from SNR_Log where UID in(Select UID from SNR_Log where SNR like '*" & Text0.Text & "*')"
End Sub