在宏中使用ApplyFilter,以便在空

时间:2017-01-25 19:51:29

标签: ms-access macros

我有一个表单,我可以记录下面的预览:

PNR ¦ Date Booking Created ¦ Name of Customer
---------------------------------------------
1   ¦ 01/03/16             ¦ Marc N
2   ¦ 04/07/16             ¦ Sam D
3   ¦ 13/02/17             ¦ Max L

其中PNR是ID字段。 在表单的顶部,我有一个搜索栏,使用一个简单的宏(连接到“点击”按钮)搜索并返回名称,比较搜索栏LIKE [客户名称]。

我还有两个相邻的搜索栏,这些日期被放入,并且使用宏(也连接到“点击”按钮)它找到WHERE [DateFrom]< [Date Booking Created]<单击[DateTo]时显示两个输入日期之间的所有结果。

但是我不确定如何创建一个宏,同时“ApplyFilter”同时使用它们。我最初使用两个按钮脚本中的“Where”代码并将它们连接到一个按钮上,当点击它时会运行一个宏,其中“ApplyFilter”两个(使用AND分隔它们)。

然而,这不起作用,好像我决定只搜索一个名字,它没有显示任何结果,因为[DateFrom]和[DateTo]搜索栏是空的,我将如何处理这种情况(最好是在即使我只搜索没有日期限制的名称,它也会返回记录吗?

1 个答案:

答案 0 :(得分:0)

您必须根据各种过滤器元素的内容编写生成过滤器的VBA代码。以下是执行此操作的VBA代码示例:

Dim Filter As String
Filter = ""
If Nz(Me.fCustomerName)<>"" Then
    Filter = Filter & "CustomerName Like '" & Me.fCustomerName & "*' AND "
  End If
If IsDate(Me.DateFrom) Then
    Filter = Filter & "DateCreated >= #" & Me.DateFrom & "# AND "
  End If
If Len(Nz(Me.DateTo, "")) Then
    Filter = Filter & "DateCreated <= #" & Me.DateTo & "# AND "
  End If
If Filter <> "" Then
    Filter = Left(Filter, Len(Filter) - 5)
    Me.Filter = Filter
    Me.FilterOn = True
  Else
    Me.FilterOn = False
  End If
Me.Requery