内部连接 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 访问的主要内容,如果未能解决你的问题,请参考以下文章