我有这个要求,我必须根据其他字段中给出的数据检查数据。我有'N'字段的表。我应该允许用户从表中选择4个字段。然后我应该获取该特定记录的所有其他字段并将其显示给用户,以便他可以验证他输入表中的数据是否正确。请帮忙。
由于
答案 0 :(得分:0)
我现在对你的要求有了更清楚的了解 - 希望这就是你所需要的:
假设您有一个名为“电话”的表
电话表有三个主要字段:制造商,操作系统和运营商 除了这些主要字段之外,还有辅助“规范”字段。目前我们有三个:ScreenSize,Frequencies和Price。
我创建了一个包含三个组合框的表单:ManufacturerFilter,OperatingSystemFilter和CarrierFilter。
每个组合框的行源类似于:
SELECT Carrier FROM Phones GROUP BY Carrier ORDER BY Carrier;
运营商分别由制造商和[操作系统]取代。
然后我添加所有辅助字段,每个字段都绑定到各自的字段。
您还可以添加名为“检索”的按钮,现在将点击代码留空。
此时您有几个选择。我将重点介绍两个,但两个选项都需要以下步骤:
Private Function FilterStr() As String
Dim myFilterStr As String
' Include each filter if they are entered
If Nz(Me.ManufacturerFilter, "") <> "" Then myFilterStr = myFilterStr & "[Manufacturer]='" & Me.ManufacturerFilter.Value & "' AND"
If Nz(Me.OperatingSystemFilter, "") <> "" Then myFilterStr = myFilterStr & "[Operating System]='" & Me.OperatingSystemFilter.Value & "' AND"
If Nz(Me.CarrierFilter, "") <> "" Then myFilterStr = myFilterStr & "[Carrier]='" & Me.CarrierFilter.Value & "' AND"
' Remove the last AND statement
If myFilterStr <> "" Then myFilterStr = Mid(myFilterStr, 1, Len(myFilterStr) - 4)
FilterStr = myFilterStr
End Function
此函数根据所选的组合框选项返回一个过滤字符串。
选项#1:过滤记录集 我们想要发生的是,当选择主要字段值时,过滤记录以仅显示与条件匹配的记录。将以下代码添加到Retrieve按钮的OnClick事件:
Private Sub RetreiveButton_Click()
Dim myFilterStr As String
myFilterStr = FilterStr
If myFilterStr <> "" Then
Me.Filter = myFilterStr
Me.FilterOn = True
Else
Me.Filter = ""
Me.FilterOn = False
End If
End Sub
因此,单击按钮时会发生什么,是根据所选值创建过滤器字符串,然后将过滤器应用于表单。如果在组合框中未选择任何值,则清除并关闭过滤器。
选项#2:根据值查找记录 我们想要的是选择组合框中的值,然后移动到符合条件的记录。
将以下代码添加到检索按钮的onClick事件中。
Private Sub RetreiveButton_Click()
Dim rst As DAO.Recordset
Dim myFilterStr As String
myFilterStr = FilterStr()
If myFilterStr = "" Then
MsgBox "No Filter Selected", vbOKOnly, "Error"
Exit Sub
End If
Set rst = Me.RecordsetClone
rst.FindFirst myFilterStr
If rst.NoMatch Then
MsgBox "No Matching Records were found", vbOKOnly, "No Data"
Else
Me.Bookmark = rst.Bookmark
End If
Set rst = Nothing
End Sub
这使用相同的FilterStr()函数返回搜索字符串,但使用记录集的FindFirst方法来查找记录。如果找到,它将移动到记录。
希望能回答你的问题。正如我所指出的,确切的行为会有所不同,但基本原则保持不变。