sql - ADODB SQL 语法 - 使用 Excel 工作表 Access 表内连接

标签 sql excel vba ms-access adodb

我有一个项目,用户需要填写 Excel 文件,然后将数据导出到 Access 数据库。 Excel文件中收集的数据需要分3步导出:(1)导出数据集1条记录,(2)查询新导入记录的主键(自动编号)Access,(3)导出数据设置 2 条记录,其中包括填充为外键的主键。

我能够通过建立和打开 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,则代码运行正常。

最佳答案

为表提供别名后,在引用该表时必须使用该别名。您无法再通过原始名称 Access 该表。

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""));"

关于sql - ADODB SQL 语法 - 使用 Excel 工作表 Access 表内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40054856/

相关文章:

sql - Rails 排序方法;名为 :order 的列

VBA: undefined variable

excel - 填写网页中的两个输入字段

按下按钮时 VBA 事件抛出错误?

excel - 在 VBA 中对变化的范围使用排序

php - 使用 PostgreSQL 以简单的方式获取所有父项

java - Android 应用程序因 SQL 查询而崩溃

java - Hibernate:如何使用 HQL 选择空对象?

excel - 是否可以在 MS Excel 中表示 0,999...(重复十进制)?如何?

python - 读取 .xlsx 并访问单元格值,但不按其位置