MS Access Filter by ComboBox selection 基于列名

MS Access Filter by ComboBox selection based on Column names

我有点卡在这里。我有以下代码:

` Private Sub Command88_Click()
Dim filterString As String
Dim startDate As String
Dim endDate As String

startDate = txtStartDate
endDate = txtEndDate
selectedfield = CboxSelectField.Value

filterString = "[HW End of Support] BETWEEN #" & Format(startDate, "MM-DD-YYYY") & "# And #" & Format(endDate, "MM-DD-YYYY") & "#"

Me.Filter = filterString
Me.FilterOn = True

End Sub`

只要要过滤的列的值保持硬编码,过滤器就可以正常运行,即 [HW End of Support] 但我有一个名为 CboxSelectField 的组合框,它有 4 个不同的列名和我需要根据从组合框中选择的列过滤数据? 如果我将 [HW End of Support] 替换为包含组合框选择值的 selectedField 变量,则代码会中断并且不会过滤。

请帮忙!

试试:

filterString = "[" & selectedfield  & "] BETWEEN #" & Format(startDate, "MM-DD-YYYY") & "# And #" & Format(endDate, "MM-DD-YYYY") & "#"

这将输出字段名称 "My Field":

[My Field] BETWEEN #04-25-2018# And #04-25-2018#

您的扩展表达式将 return:

[My Field] BETWEEN #04-25-2018# And #04-25-2018#

这个有效:

filterString = "" & "[" & selectedField & "]" & " BETWEEN #" & Format(startDate, "MM-DD-YYYY") & "# And #" & Format(endDate, "MM-DD-YYYY") & "#"

您似乎还没有定义 "selectedfield" - 您应该将其定义为 string,然后将其设置为 "[" & CboxSelectField.Value & "]" 以使其按照您的方式工作目前正在尝试。

所以你的编码应该是这样的:

Private Sub Command88_Click()
Dim startDate As String, endDate As String
Dim selectedfield As String, filterString As String

startDate = txtStartDate
endDate = txtEndDate
selectedfield = "[" & CboxSelectField.Value & "]"

filterString = selectedfield & " BETWEEN #" & _
Format(startDate, "MM-DD-YYYY") & "# And #" & _
Format(endDate, "MM-DD-YYYY") & "#"

Me.Filter = filterString
Me.FilterOn = True

End Sub