【问题标题】:MS Access Date not working in VBA SQL queryMS Access Date 在 VBA SQL 查询中不起作用
【发布时间】:2015-07-17 19:20:31
【问题描述】:

MS Access 中有一个包含 3 列的表:

  1. ID(主键)
  2. 日期(日期/时间)
  3. 火车号(短文本)

我设计了一个表单,可以从组合框中选择日期,并根据选择的日期显示相应的火车。

问题是,查询在 10 以上(如 2015 年 11 月 1 日)但低于 10 日(如 2015 年 9 月 1 日)的日期工作正常,它给出错误:“没有当前记录”。记录在表格中,但不显示。

查询是:SELECT DISTINCT [Train No] FROM Issue WHERE [Date] = #" & dt & "#"

dt 是从组合框中选择的日期。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    试试这个:

    Dim DateSelected As Date
    Dim DateString   As String
    
    DateSelected = DateValue(Me!YourComboBox.Value)
    DateString = Format(DateSelected, "yyyy\/mm\/dd")
    
    SELECT DISTINCT [Train No] FROM Issue WHERE [Date] = #" & DateString & "#"
    

    【讨论】:

    • 谢谢 :) 它奏效了。你能解释一下为什么它只采用这种格式吗?
    • 在 SQL 中,日期值的字符串表达式必须格式化为 yyyy-mm-dd 或 mm-dd-yyyy(或斜杠作为分隔符)。由于 yyyy-mm-dd 也是 ADO 唯一可靠的格式,因此通常坚持 ISO 格式 yyyy-mm-ss。
    • 但是为什么它适用于 10 以上的日期(如 11/1/2015)?它对这些格式的解析是否不同?
    • 我猜如果你 Debug.Print 你的旧 SQL 字符串,那会说明原因。
    • 只是更改了日期格式。感谢您的宝贵时间。
    猜你喜欢
    • 2019-09-22
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2021-04-16
    相关资源
    最近更新 更多