ADODB SQL语法 – 访问表内部使用Excel工作表join
我有一个项目,用户将需要填写一个Excel文件,然后将数据导出到Access数据库。 在Excel文件中收集的数据需要分三步输出:(1)导出数据集1logging;(2)查询新导入logging的主键(自动编号)的访问;(3)导出数据设置2个logging,其中包括填充为外键的主键。
我能够通过build立和打开一个ADODB连接来完成第一步。 但是,我在第二步遇到麻烦,我需要在Access表和Excel中进行内部连接。
wlodb.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\" &userSID & "\Desktop\WLO R&C Database_10-4-16.accdb" sqlFindREMPK = "Select ID " _ & "FROM [test1] a " _ & "INNER JOIN [Excel 8.0;HDR=YES;IMEX=2;DATABASE=C:\User\RED-WIP.xlsm].[REM Upload$] b " _ & "ON a.[REM_ID_Database] = b.[REM_ID_Database] " _ & "WHERE (((a.[REM_ID_Database])=""REM9811044""));" WLOrs.Open sqlFindREMPK, wlodb ActiveSheet.Range("A10").CopyFromRecordset (WLOrs)
表和工作表名称具有相同的字段名称。 问题在于SELECT子句。 如果我按原样离开,我会收到一个错误消息,说该字段可能引用FROM子句中的多个表。 如果我添加如[test1]。[ID]这样的表名,那么我会收到消息说没有给出所需的参数值。 如果我将Excel字段名称稍微更改为ID1,并将SELECT子句保留为ID,则代码运行良好。
为表提供别名后,必须在引用该表时使用该别名。 您不能再按原来的名称访问表。
sqlFindREMPK = "Select a.ID " _ & "FROM [test1] a " _ & "INNER JOIN [Excel 8.0;HDR=YES;IMEX=2;DATABASE=C:\User\RED-WIP.xlsm].[REM Upload$] b " _ & "ON a.[REM_ID_Database] = b.[REM_ID_Database] " _ & "WHERE (((a.[REM_ID_Database])=""REM9811044""));"