Excel到Excel数据连接提供有限的SQL选项

Excel到Excel数据连接提供有限的SQL选项,sql,excel,connection-string,data-connections,Sql,Excel,Connection String,Data Connections,我主要是一个Excel用户,在需要的时候才涉足技术/编程方面,所以假设我对所有这些数据链接都有点新手,但是: 在Excel 2010中,我曾多次访问 数据->来自其他来源…->从SQL Server 这使我能够连接到我们的数据库表。做完这件事后,我可以去 数据->刷新所有[V]->连接属性…->定义选项卡 并将命令类型更改为SQL。然后我可以粘贴到我在MicrosoftSQLServer2012中使用的相同类型的SQL中,一切都很好。它连接到数据库,根据SQL代码提取所需信息,然后我得到

我主要是一个Excel用户,在需要的时候才涉足技术/编程方面,所以假设我对所有这些数据链接都有点新手,但是:

在Excel 2010中,我曾多次访问

  • 数据->来自其他来源…->从SQL Server
这使我能够连接到我们的数据库表。做完这件事后,我可以去

  • 数据->刷新所有[V]->连接属性…->定义选项卡
并将命令类型更改为SQL。然后我可以粘贴到我在MicrosoftSQLServer2012中使用的相同类型的SQL中,一切都很好。它连接到数据库,根据SQL代码提取所需信息,然后我得到我想要的

但是我有一个不同的连接,到一个不同的Excel工作簿。我尝试过用两种方式创建连接:

1) 数据->来自其他来源…->从Microsoft查询->Excel文件

2) 数据->来自Access->然后浏览并选择Excel文件

这两种方法都有效,并给我一个指向Excel文件的链接。但是,当我尝试编辑SQL查询时,这两个问题都是一样的:

我转到连接属性…->定义选项卡->命令类型,它显示SQL,然后我编辑下面的命令文本框中显示的SQL代码

我的问题是,SQL现在无法识别语法,而当我通过SQL Server方法进行识别时,它很乐意识别语法。例如:

  • 如果我尝试使用--or/*…*/语法错误:[Microsoft][ODBC Excel驱动程序]SQL语句无效;应为“删除”、“插入”、“过程”、“选择”或“更新”
  • 如果我试图添加一个列,说:CURRENT_TIMESTAMP AS[Refresh Date],那么我得到的[Microsoft][ODBC Excel Driver]参数太少。预期1
SQL代码目前非常简单,只是:

SELECT
[ID],
[Gift]
FROM
    [Data$]
WHERE
    [Gift] <> ''
    AND
    [Gift] <> 'Not a Gift'
    AND
    [ID] <> ''
但这并不像上面描述的那样有效

我注意到连接类型有所不同,这取决于我使用的连接方法—“数据库查询”用于Excel文件方法,“Excel文件”用于Access方法,OLE DB查询用于SQL Server方法;我不知道这是否会影响我所能使用的SQL语言。对于不同的方法,连接字符串也完全不同,但我不确定这是否与我不能使用基本SQL命令的原因有关

我的实际目标是能够在Excel中获得一个单元格,该单元格(a)输入某人执行数据->全部刷新时刷新的日期,(b)如果该表刷新失败,则不输入该日期。我认为最简单的方法就是在表中创建一个包含当前日期的列,但我想知道SQL限制是否会阻止这一点

有没有一种方法可以像我使用SQLServer链接那样,在SQL中实现更多功能?或者作为一种解决方法,是否有其他方法(可能是通过VBA)来确定表是否已成功刷新,因此如果表确实已成功刷新,我可以使用VBA将今天的日期写入其他单元格中(我已经有VBA来为我执行数据->刷新)


提前谢谢

与MS SQL的T-SQL相比,您使用的SQL更接近于访问DAO SQL。您将没有
当前\u时间戳
作为选项,但
Now()
应作为替代选项提供

SELECT
[ID],
[Gift],
Now() AS [Refresh Date]

与MS SQL的T-SQL相比,您使用的SQL更接近于Access DAO SQL。您将没有当前的\u时间戳作为选项,但您可以立即尝试()。啊哈!是的,现在()因为[刷新日期]已经生效。今天的问题解决了!用“accessdaosql”这个词组进入谷歌,我得到了更多关于它的信息,谢谢。似乎除了其中一个答案之外,我没有任何评论。谢谢,@Jeeped,请使用此论坛cookie:-)我很想知道是否有任何方法可以将其转换为更多的T-SQL内容,而不是Access内容,但我认为这是Excel连接的一个限制,除非有人知道不同的:-)如果您想进入更原生的T-SQL(分区表可能…?)然后,您将不得不使用存储过程和视图,并让MS SQL引擎来完成这项工作。
SELECT
[ID],
[Gift],
Now() AS [Refresh Date]