SQL查询中的VBA访问表引用
当我引用某些表名时,在VBA Access中执行SQL代码时遇到了问题 比如说,SQL查询中的VBA访问表引用,sql,ms-access,vba,Sql,Ms Access,Vba,当我引用某些表名时,在VBA Access中执行SQL代码时遇到了问题 比如说, INSERT INTO TempTable (ClientName) SELECT DISTINCT 1_1_xlsx.ClientName FROM 1_1_xlsx'<--does not work 我不知道为什么第一个查询会导致语法错误,第二个代码运行良好,即使它们引用了相同的东西。我怀疑这应该是命名惯例,但我找不到任何具体的答案 另外,是否有任何方法可以使用1_1_xlsx作为我的表名?还是我只是写
INSERT INTO TempTable (ClientName) SELECT DISTINCT 1_1_xlsx.ClientName FROM 1_1_xlsx'<--does not work
我不知道为什么第一个查询会导致语法错误,第二个代码运行良好,即使它们引用了相同的东西。我怀疑这应该是命名惯例,但我找不到任何具体的答案
另外,是否有任何方法可以使用1_1_xlsx
作为我的表名?还是我只是写错了我的问题 试试这个:
INSERT INTO TempTable (ClientName) SELECT DISTINCT [1_1_xlsx].ClientName FROM [1_1_xlsx]
在许多基于SQL的数据库中,表名或字段名不能以数字开头
我怀疑这就是你问题的根本原因。虽然Access会允许它,但我以前看到它会导致问题。问题是表名开头的数字。这是不好的——因为它混淆了解析器 这是一个错误的表名,但SQL允许您定义表别名。在这种情况下,您甚至不需要重复表名。因此,这里有两个简单的解决方案:
INSERT INTO TempTable (ClientName)
SELECT DISTINCT ClientName
FROM 1_1_xlsx;
或:
没有理由将完整的表名用作别名。这只会使查询更难编写和读取。如果您在名称方面遇到问题,请始终从将它们括起来开始(
[1\u 1\u xlsx]
),因为xslx会使SQL解析器混淆,以为这是关于某个链接Excel文件的。
INSERT INTO TempTable (ClientName)
SELECT DISTINCT ClientName
FROM 1_1_xlsx;
INSERT INTO TempTable (ClientName)
SELECT DISTINCT t.ClientName
FROM 1_1_xlsx as t