【问题标题】:Excel: Query SQL table with date parameter from cellExcel:使用单元格中的日期参数查询 SQL 表
【发布时间】:2016-03-23 03:13:41
【问题描述】:

我有一个 ODBC 连接,它只是查询一个 SQL 表:

 SELECT * FROM [TABLE] WHERE myDate = ?

如果我在 MS Query 中运行查询,它会提示输入日期,我可以输入 4/2/2015 并完美返回 4/2/2015 数据

我将参数设置为从单元格 (B1) 读取:

=WorkSheetName!$B$1

当我切换回 Excel 并将 4/2/2015 放入 B1 然后刷新时 - 从字符串错误转换日期和/或时间时,它给我一个转换失败。

我尝试将查询编辑为WHERE CONVERT(Varchar(10),myDate,101) = ?,但没有运气。不知道为什么我会得到这个,看起来应该很简单。

【问题讨论】:

    标签: excel excel-formula vba


    【解决方案1】:

    我很欣赏我收到的反馈 - 但结果证明这是我忽略的非常简单的事情。我保留日期的实际单元格被格式化为日期,并给出了转换错误。一旦我将其格式化为文本单元格,它就会正确返回给定日期的数据。谢谢

    【讨论】:

      【解决方案2】:

      在尝试使用Date 作为过滤器时,过滤器部分必须用# 填充。

      应该是这样的

      SELECT * FROM [TABLE] WHERE myDate = #4/2/2015# 
      

      【讨论】:

      • 感谢您的回复,但##s 应该去哪里?如果我将它们放在我的命令文本中 (SELECT * FROM TABLE WHERE myDate= #?# 我会收到大量错误 (invalid column name '#@P1#' , Statement(s) could not beprepared / the following data range failed刷新”等...
      • 嗨 Saagar 我没有 VBA 代码。我曾经尝试在 worksheets.refreshall 中放入一个表单按钮,但这没有用,所以我摆脱了它。这一切都是通过连接定义选项卡完成的
      【解决方案3】:

      将“myDate”列转换为“Smalldatetime”格式应该适合您。

      试试这个:

      SELECT * FROM [TABLE] WHERE Cast(myDate as smalldatetime) = ?
      

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        相关资源
        最近更新 更多