2013-03-12 39 views
1

我有一个“Filename.accdb”(2010)文件,我建立了与Excel的VBA连接。excel 2010 vba。 SQL查询在列'喜欢'vlookup

比方说,文件中我有一个表A:

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

而且一表B:

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

我能够把这些表导入工作表,但是想什么,我实现是这样的:

所需的查询结果(我不希望整个表A):

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" 

它不工作,并抛出了“......不能执行加入多个字段错误......” 我找不到我在互联网上的解决方案。

有没有人看到这个问题? 我在做什么错?

在此先感谢 干杯

回答

0

TableB.ID是数字列,你从你的描述要列,是名称:

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

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

+0

好的,谢谢,我会尝试一下,但我们的网络目前处于关闭状态。 – nivoe 2013-03-12 15:15:27

+0

不工作,我放弃了一段时间。甚至可能是Access无法处理这样的查询,而且我太无经验知道。 – nivoe 2013-04-15 13:56:18