Ms access Access 2007使用外键按表单上的文本筛选
我在MicrosoftAccess2007中创建了一个表格。表单上有一个文本框,我希望过滤表单中的项目 问题是表单中的一个字段是外键,它引用了包含公司名称的链接表 当我运行下面的代码,并在文本框中键入公司名称+点击回车键时,我只能搜索与公司名称对应的数值:Ms access Access 2007使用外键按表单上的文本筛选,ms-access,Ms Access,我在MicrosoftAccess2007中创建了一个表格。表单上有一个文本框,我希望过滤表单中的项目 问题是表单中的一个字段是外键,它引用了包含公司名称的链接表 当我运行下面的代码,并在文本框中键入公司名称+点击回车键时,我只能搜索与公司名称对应的数值: Private Sub Text22_AfterUpdate() Dim mFilter As String Dim mQuery1 As String If IsNull(Me.Text22) Then mQuery1 = ""
Private Sub Text22_AfterUpdate()
Dim mFilter As String
Dim mQuery1 As String
If IsNull(Me.Text22) Then
mQuery1 = ""
Else
mQuery1 = Me.Text22
End If
mFilter = "[ID] Like ""*" & mQuery1 & "*"""
mFilter = (mFilter + " OR ") & "[Supplier] Like ""*" & mQuery1 & "*"""
temp = MsgBox(mFilter, vbOKOnly)
Me.Filter = mFilter
Me.FilterOn = True
Me.Requery
End Sub
解决此问题的最简单方法是在链接到表格表单的查询中包含要筛选的公司名称。 比如:
SELECT Invoice.ID,
Invoice.Amount,
Invoice.SupplierID,
Supplier.CompanyName
FROM Invoice
INNER JOIN Supplier ON Supplier.ID = Invoice.SupplierID
然后,如果您不想显示字段CompanyName
,则始终可以在数据表表单中隐藏该列。我通常对报告隐藏
ID
,因为我只使用它们在数据库内部识别记录并建立外部关系,每个表的ID
从不向我的用户显示
如果您的表单连接方式不同,请使用更多信息和屏幕截图修改您的问题,以便我们能够更准确地回答您
关于您提供的代码的小评论:您应该像构建过滤器一样小心:如果用户键入一个
“
,您的过滤器查询将中断。您应该避开用户的输入并对其进行一点清理。至少执行一次
mQuery1=Replace(Text22,“,”)
类似地,如果用户以
*
开始/结束其过滤器,则查询可能无法工作