内部连接 ​​VBA 访问

Posted

技术标签:

【中文标题】内部连接 ​​VBA 访问【英文标题】:INNER JOIN VBA Access 【发布时间】:2016-04-07 18:34:43 【问题描述】:

我正在尝试执行动态 SQL 语句,其中该命令将根据 j 的值在特定区域添加“绘制”字段。这是因为有几个实例会出现表“修订”中的“修订”字段。我在查询设计中创建了这个语句,但只是为了更新表中的特定字段,而不依赖于我的计数器 j。我收到“不支持 JOIN 表达式”。谁能帮我解决这个问题?

Select Case selection(n)
Case "A"
    j = 1
Case "B"
    j = 2
Case "0"
    j = 3
Case "1"
    j = 4
Case "2"
    j = 5
End Select

With rs
    While Not .EOF
          DoCmd.RunSQL "SELECT Area.Drawn " & _
                                 "FROM (Revision INNER JOIN RevDesc ON Revision.Rev" & j & " = RevDesc.Rev) " & _
                                 "INNER JOIN Area ON Revision.LineNumber = ArealineNmuber ;"
.MoveNext   
wend 
end with

【问题讨论】:

@David,我解决了这个问题,Area 是一个表格,而 lineNumber 是一个字段。所以我加了“。”它们之间。但是,现在我得到“一个 RunSQL 操作需要一个由 SQL 语句组成的参数” 将错误消息输入 Google 始终是一个不错的起点:***.com/a/27425050/328193 @David 有没有办法使用 SELECT 子句,就像我使用类似于 runSQL 的命令一样? 好吧,你在这里想要做什么还不是很清楚。您正在尝试执行 SELECT 而不读取结果或对它们做任何事情。如果您不打算使用该数据,为什么还要从数据库中选择数据? 您尝试运行的更新命令看起来如何? 【参考方案1】:

可能您正在寻找像OpenRecordset这样的方法... Lopping Recordset 使用结果字段生成简单的Update,您可以通过 RunSQL 方法运行。

编辑: 示例更新:

UPDATE [Revision] 
SET [Drawn] = (SELECT [Drawn] FROM [Area] WHERE [Area].[LineNumber] = [Revision].[LineNumber] )
WHERE Exists(SELECT 1 FROM [RevDesc] 
  WHERE [RevDesc].[Rev] = [Revision].[Rev]);

【讨论】:

以上是关于内部连接 ​​VBA 访问的主要内容,如果未能解决你的问题,请参考以下文章

访问VBA更新列以进行连接

如何从访问数据库中的左连接中选择excel表 - EXCEL VBA

Excel VBA SQL 错误,连接失败

比较两个 Access 数据库 VBA - 唯一连接

共享模块VBA之间的adodb连接

如何使用 MySQl 的 ODBC 连接器在 MS Access 中的 VBA 中执行和查询?