使用文本框过滤子表单 table

Filter subform table with textbox

我正在尝试使用文本框过滤子表单。

我有一个要在子表单中显示 table 记录的查询,我有过滤 table 的条件,但是当我在文本框中键入内容以过滤子表单时,它只显示我一张有那个名字的唱片。我需要它来显示所有的名字。

我的查询条件如下。

Like "*" & [Forms]![frmPlanningForecast]![FETextbox].[Text] & "*"

然后我在文本框上有一个 OnChange 事件来重新查询子表单。

如上所述,我需要它向我显示与我输入的内容匹配的所有记录,而不仅仅是一个。

当我在 table 本身(字段 header 上的下拉框)和 select 过滤器中使用过滤器选项时,效果很好。但我需要将其输入文本框。

附上的图片会告诉你我的意思,我在文本框中输入了 "EQ",但当他们在 [=31= 上调用 "EQ" 时,它只返回了 1 条记录].

首先在Like参数周围添加单引号:

Like "'*" & [Forms]![frmPlanningForecast]![FETextbox] & "*'" 

其次 - Access 有一个老错误:如果您像以前一样在查询中引用表单字段,它不会更新值,在重新查询期间用于条件,您总是会收到相同的结果。解决方法 - 用全局函数替换对字段的引用,returns 文本框值或为子表单使用 RecordSource 的动态生成。

全局函数示例:

Public Function GetFE() As Variable
    GetFE = [Forms]![frmPlanningForecast]![FETextbox]
End Function

将它放在任何标准 VBA 模块中。那么你的 Like 将如下所示:

Like "'*" & GetFE() & "*'" 

我找到了一个更简单的方法,只是想让其他人知道。

我没有使用标准,而是使用了以下 vba 代码。

DoCmd.ApplyFilter , (FETextbox = qryPlannedHours.LeadFE), SubFormPF