使用文本框过滤子表单

时间:2017-05-30 09:26:26

标签: ms-access ms-access-2013

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

我有一个查询来显示子表单中的表记录,我有筛选表的条件,但是当我键入文本框来过滤子表单时,它只显示一个具有该名称的记录。我需要它来告诉我所有的名字。

我的查询标准如下。

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

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

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

当我在表格本身中使用过滤器选项(字段标题上的下拉框)并从那里选择过滤器时,它的效果很好。但我需要将其输入文本框。

附上的图片会显示我的意思,我在文本框中输入了“EQ”,但是当它们在桌面上被称为“EQ”时它只返回了1条记录。 Example

2 个答案:

答案 0 :(得分:1)

首先在Like参数:

周围添加单引号
Like "'*" & [Forms]![frmPlanningForecast]![FETextbox] & "*'" 

和第二个 - Access有一个旧的错误:如果你像查询一样在查询中引用表单字段,它没有更新值,在Requery期间用于标准,你总是会收到相同的结果。解决方法 - 通过全局函数替换对字段的引用,该函数返回文本框值或使用动态生成子窗体的RecordSource。

全球职能范例:

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

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

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

答案 1 :(得分:0)

我发现了一种更简单的方法,只是想让别人知道。

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

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