0

我有一个带有一些 txtboxes 和 1 个组合框的 splitform。组合框与同一表单的查询 (qryPurchase) 相关,它显示 3 列查询字段:

ID_purchase, Purchase_Type, Date_Purchase

在查询中还有其他字段,如Purchase_ItemQuantity等等,但只有 2 种 Purchase_Type 值,卖和借。不同Purchase_Item的可以有相同的ID_purchaseDate_Purchase类似的发票。

组合框列表示例:

ID_purchase, Purchase_Type, Date_Purchase
1, sell, 08/01/2020
1, sell, 09/01/2020
1, borrow, 09/01/2020
2, sell, 10/01/2020
2, borrow, 11/01/2020

当我从组合框的下拉菜单中选择一行时,我希望它必须通过组合框的行值过滤下面的拆分表单的数据表,以便获得与组合框行匹配的所有 ID_purchase 和 Purchase_Type 和 Date_Purchase 的数据表过滤列表价值观。

就像上面的列表一样,如果我选择第一行,下面的数据表会显示 2 条记录。

我试图实现这样的目标:

Private Sub fltDocCombo_AfterUpdate()

Me.Form.Filter = "[ID_purchase] =" & Me.fltDocCombo.Column(0) _
& " AND [Purchase_Type] = " & "'" & Me.fltDocCombo.Column(1) & "'" _
& " AND [Date_Purchase] = " & "#" & Me.fltDocCombo.Column(2) & "#"

Me.Form.FilterOn = True
End Sub

Private Sub Form_Close()
Me.Form.Filter = ""
Me.Form.FilterOn = False
End Sub

Private Sub Form_Open(Cancel As Integer)
Me.Form.Filter = ""
Me.Form.FilterOn = False
End Sub

这有时有效,有时无效,似乎该Me.Form.Filter值被锁定在列表的第一个 ID_purchase 上。

就像上面的例子:

ID_purchase, Purchase_Type, Date_Purchase
1, sell, 08/01/2020
1, sell, 09/01/2020
1, borrow, 09/01/2020
2, sell, 10/01/2020
2, borrow, 11/01/2020

如果我尝试选择第二行,则应用的过滤器是第一行值..但不是每次..

有时似乎过滤器Date_Purchase没有过滤任何东西..

我想像 ID_purchase 一样依次应用过滤器,第二个是 Purchase_Type,最后一个是 Date,但是当它应用第二个过滤器时,它会取消第一个过滤器,依此类推。

在这种情况下,我不知道如何向现有过滤器添加另一个过滤器..

帮助..

4

1 回答 1

0

解决了..

问题是Date_Purchase日期格式..

为我的本地语言和日期格式 (dd/mm/yyyy) 安装了 MS-ACCESS,但在 VBA 中,日期默认格式始终为 mm/dd/yyyy

所以我修改了这样的Me.Form.Filter值:

Me.Form.Filter = "[ID_turnin_temploan] =" & Me.fltDocCombo.Column(0) _
& " AND [Posizione] = " & "'" & Me.fltDocCombo.Column(1) & "'" _
& " AND [Data_turnin_temploan] = " & "#" & Format(Me.fltDocCombo.Column(2), "mm/dd/yyyy") & "#"

现在它可以工作了!

于 2020-07-10T19:24:51.720 回答