2

我真的希望这里有人可以帮助我解决我花了几个小时试图解决但没有结果的问题。

我正在尝试使用 Excel VBA 中的 MS 查询与 csv 文件建立数据连接。我需要通过在某个列上应用日期过滤器来将 csv 文件中的数据过滤到电子表格中。当日期固定(即在 VBA 中硬编码)时,连接工作得非常好。但是,我希望日期成为用户输入,这就是我面临问题的地方。基本上,我不确定如何将日期变量传递给连接。

当宏工作正常时,SQL 语句如下所示:

.CommandText = "SELECT * FROM " & csvName & " WHERE SECTYPE='GS' AND LAST TRADED DATE={ts '2016-01-29 00:00:00'}"

当我尝试通过变量 sValnDate 传递日期时,出现“SQL 语法错误”:

.CommandText = "SELECT * FROM " & csvName & " WHERE SECTYPE='GS' AND LAST TRADED DATE={ts " & sValnDate & "}"

我已经尝试了变量的几种配置。我试图将它作为日期传递,一个与正确命令中的字符串完全相同的字符串,一个在正确命令中按要求格式化的日期,保留和删除每种变量格式的大括号等,但没有任何效果。

为了简单起见,我刚刚在这里提出了 1 个声明。但是,如果您需要查看整个块(不超过 15-20 行),请告诉我。

提前致谢

PS:刚看了预告。不知何故,LAST TRADED DATE 前后的 `` 已在此处删除。

4

1 回答 1

0

假设这sValnDate是一个看起来像这样的字符串,2016-01-29 00:00:00那么您只是缺少刻度(又名单引号或 Chr(39))。

.CommandText = "SELECT * FROM " & csvName & _
               " WHERE [SECTYPE]='GS' AND [LAST TRADED DATE]={ts '" & sValnDate & "'}"

如果sValnDate是实际日期,则将其格式化,

.CommandText = "SELECT * FROM " & csvName & _
               " WHERE [SECTYPE]='GS' AND [LAST TRADED DATE]={ts '" & _
               Format(sValnDate, "yyyy-mm-dd hh:mm:ss" & "'}"
于 2016-02-15T16:49:16.710 回答