Mar*_*hua 4 sql ms-access access-vba ms-access-2010
在下面的代码中,我想将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
Run Code Online (Sandbox Code Playgroud)
Access永远不允许您将记录集对象用作另一个查询中的数据源.是否有ADO或DAO记录集并不重要; 你不能这样做.并且查询类型(SELECT,UPDATE,INSERT等),也无所谓; 您不能在任何查询类型中将记录集对象用作数据源.
UPDATE首先将SELECT语句保存为命名查询qryRS3,可能会使问题变得可行.然后UPDATE将INNER JOIN tblValueChain10修改为qryRS3.但我不确定Access是否会认为该查询是可更新的; 将GROUP BY可能导致访问将其视为不可更新.你必须测试才能看到.