【发布时间】:2015-01-16 05:07:31
【问题描述】:
在以下代码中,我想将 ADODB 记录集 'rs3' 加入表 'tblValueChain10' 并根据从 ADODB 记录集 'rs3' 中提取的值更新 3 个不同的列。目前,更新查询没有返回任何内容。
Dim st_Sql3 As String
Dim rs3 As ADODB.Recordset
Set rs3 = New ADODB.Recordset
Dim Max3 As Integer
rs3.Open "SELECT tblRisk05Holding.IDMacroProcesso01, tblRisk05Holding.Level01Risk, Max(tblRisk05Holding.ManualityStatus) AS MaxDiManualityStatus, Max(tblRisk05Holding.RiskProbabilityStatus) AS MaxDiRiskProbabilityStatus, Max(tblRisk05Holding.RiskExposureStatus) AS MaxDiRiskExposureStatus FROM tblRisk05Holding GROUP BY tblRisk05Holding.IDMacroProcesso01, tblRisk05Holding.Level01Risk", CurrentProject.Connection
st_Sql3 = "UPDATE tblValueChain10 INNER JOIN rs3 ON (tblValueChain10.IDMacroProcesso01 = tblRisk05Holding.IDMacroProcesso01) SET L1RiskManuality = " & rs3.Fields(2) & ", L1RiskProbability = " & rs3.Fields(3) & ", L1RiskGravity = " & rs3.Fields(4) & ""
Application.DoCmd.RunSQL (st_Sql2)
rs3.Close
Set rs3 = Nothing
【问题讨论】:
-
虽然这与答案不同,但我想解释一下,根据我的经验,这种情况最好通过使用
Do...Loop结构来处理记录集的每一行来解决。与纯 SQL 相比,它是惰性的,但它允许控制并使故障排除更加容易。
标签: sql ms-access vba ms-access-2010