【问题标题】:MS Access filtering for date causes Error 3075日期的 MS Access 过滤导致错误 3075
【发布时间】:2018-12-05 12:41:04
【问题描述】:

我有一个名为 DateSelector 的文本字段,格式为 短日期,还有一个包含条目列表的子表单,其中一个名为 ControlDate 的列包含格式为 短日期。

我想要什么:
如果您更改DateSelector 的值,则应该将ControlDate 列过滤到现在和DateSelector 的值之间,或者至少低于DateSelector 的值。

这是我的代码:

Private Sub DateSelector_AfterUpdate()
On Error GoTo Proc_Error

If Me.DateSelector.Value = "" Then
   Me.ListView.Form.filter = ""
   Me.ListView.Form.FilterOn = False

Else
    MsgBox (Me.DateSelector.Value)
'This is a Check, if the Value is correct.
    Me.ListView.Form.filter = "ControlDate >=" & Me.DateSelector.Value
    Me.ListView.Form.FilterOn = True
End If
Proc_Exit:
   Exit Sub
Proc_Error:
   MsgBox "Error " & Err.Number & " when creating Filter:" & vbCrLf & Err.Description
   Resume Proc_Exit
End Sub

抛出的错误是3075: Syntax ErrorMsgBox 显示正确的日期,其中错误消息显示日期缺少最后一位(例如:05.12.2018 --> 05.12.201),我完全不知道为什么。

感谢您的回答,感谢您的阅读,

_忍者

【问题讨论】:

  • Me.ListView.Form.filter = "ControlDate >=" & format(Me.DateSelector.Value,"dd mmm yyyy") 可能值得一试
  • 我还会检查 .filter 命令是否需要将日期包含在哈希字符中 (#1/1/18#)。 VBA 需要散列之间的日期。由于您得到无效的运算符,这似乎是最有可能的原因 imo

标签: vba ms-access ms-access-2016


【解决方案1】:

你的过滤器最终会变成:

"ControlDate >= 01.12.2018"

Access 无法读取。因此,应用日期值的字符串表达式的正确格式:

"ControlDate >= #" & Format(Me!DateSelector.Value, "yyyy\/mm\/dd") & "#"

【讨论】:

  • 非常感谢,效果很好。我不知道 Access 不仅需要格式化日期的哈希值,还需要转换格式的日期。我欣赏它:)
猜你喜欢
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2019-03-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多