Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询中的VBA访问表引用_Sql_Ms Access_Vba - Fatal编程技术网

SQL查询中的VBA访问表引用

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作为我的表名?还是我只是写

当我引用某些表名时,在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]

在许多基于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