1

我有一个“Filename.accdb”(2010)文件,我与 Excel 的 VBA 建立了连接。

假设在文件中我有一个 TableA:

Column1 Column2 Worker
------- ------- -------
Text1   Text2   15
Text3   Text4   4
...
Text5   Text6   20

和一个表B:

ID      Name
------- -------
1       Name1
4       Name4
15      Name15
...
20      Name20

我能够将这些表导入工作表,但我想要实现的是:

所需的查询结果(我不想要整个 TableA):

Column1 Worker
------- -------
Text1   Name15
Text3   Name4
...
Text5   Name20

目前,我分别导入两个表,然后将“名称”列的值写入“工人”列。我通过 for 循环和函数 Vlookup(...) 实现了这一点。它速度快而且效果很好,所以我的问题是什么?

好吧,它会生成大量代码,我相信它一定可以通过 sql 查询来实现。另外,我想我会从中学到很多东西,因为我对 sql 还是很陌生。

到目前为止,这是我的字符串...

sql = "SELECT TableA.Column1, TableA.Worker, TableB.Name " & _
      "FROM TableA " & _
      "LEFT JOIN TableB " & _
      "ON TableB.ID = TableA.Worker"

它不起作用并抛出“......无法在多个字段上执行连接错误......”我在互联网上找不到适合我的解决方案。

有没有人看到问题?我究竟做错了什么?

预先感谢 干杯

4

1 回答 1

0

TableB.ID 是一个数字列,您想要从描述中获得的列是名称:

sql = "SELECT TableA.Column1, TableA.Worker, TableB.Name " & _
      "FROM TableA " & _
      "LEFT JOIN TableB " & _
      "ON TableB.Name = TableA.Worker"

请注意,名称不是列名的好选择。在 MS Access 中测试您的查询总是明智的,查询设计窗口是一个很好的起点。

于 2013-03-12T14:57:27.940 回答