Sql 更新查询、嵌套iif集和联接表

Sql 更新查询、嵌套iif集和联接表,sql,ms-access,Sql,Ms Access,正在尝试使用内部联接进行更新查询,并使集合反映当前月数 需要关于更新包含月份列的联接表的语法帮助,需要更新月份(DATE())+1、+2。尝试使用下面嵌套的IIF作为“IIF(月(日期())=”1”(SET table.c=table2.c2……)完成下面的代码 结果是语法错误 样本数据 无法有条件地引用字段。查询对象中的字段必须是静态的,然后可以在IIf()中为每个字段确定要更新的值。使用VBA生成并执行操作SQL语句 CurrentDb.Execute "UPDATE dbo_M

正在尝试使用内部联接进行更新查询,并使集合反映当前月数

需要关于更新包含月份列的联接表的语法帮助,需要更新月份(DATE())+1、+2。尝试使用下面嵌套的IIF作为“IIF(月(日期())=”1”(SET table.c=table2.c2……)完成下面的代码

结果是语法错误

样本数据


无法有条件地引用字段。查询对象中的字段必须是静态的,然后可以在IIf()中为每个字段确定要更新的值。使用VBA生成并执行操作SQL语句

CurrentDb.Execute "UPDATE dbo_MasterSalesForecast_Test " & _
     "INNER JOIN MasterSalesForecastUpdate " & _
     "ON (dbo_MasterSalesForecast_Test.SubTo=MasterSalesForecastUpdate.Item) " & _
          "AND (dbo_MasterSalesForecast_Test.Planner=MasterSalesForecastUpdate.Planner) " & _
     "SET [YY:" & Month(Date()) & "] = [YY" & Format(Date(),"mmm") & "]," & _
         "[YY:" & Month(DateAdd("m",1,Date())) & "] = [YY" & Format(DateAdd("m",1,Date()),"mmm") & "]," & _
         "[YY:" & Month(DateAdd("m",2,Date())) & "] = [YY" & Format(DateAdd("m",2,Date()),"mmm") & "]"

无法有条件地引用字段。查询对象中的字段必须是静态的,然后可以在IIf()中为每个字段确定要更新的值。使用VBA生成并执行操作SQL语句

CurrentDb.Execute "UPDATE dbo_MasterSalesForecast_Test " & _
     "INNER JOIN MasterSalesForecastUpdate " & _
     "ON (dbo_MasterSalesForecast_Test.SubTo=MasterSalesForecastUpdate.Item) " & _
          "AND (dbo_MasterSalesForecast_Test.Planner=MasterSalesForecastUpdate.Planner) " & _
     "SET [YY:" & Month(Date()) & "] = [YY" & Format(Date(),"mmm") & "]," & _
         "[YY:" & Month(DateAdd("m",1,Date())) & "] = [YY" & Format(DateAdd("m",1,Date()),"mmm") & "]," & _
         "[YY:" & Month(DateAdd("m",2,Date())) & "] = [YY" & Format(DateAdd("m",2,Date()),"mmm") & "]"

编辑问题以显示示例数据和所需结果。数月的列听起来像是非规范化的数据结构。运行此操作时会发生什么情况?在VBA中可能更容易完成。添加的表剪报-由于嵌套IIF的混乱而导致语法错误。数据应作为有问题的文本表提供,而不是链接文件或图像。或者转到论坛鼓励附加文件的地方。首先,Month(Date())将返回一个数字,因此不要将条件放在引号中。
IIF(Month(Date())=1,(
。另外,不要在每个IIF()中重复设置,它应该在IIF()之外的SQL语句中只使用一次。数据在SQLServer中吗?在Access中,我将使用Choose()在这种情况下使用Switch()代替IIf。通常,Switch()比IIf()更可取。SQLServer使用CASE()。但我甚至不确定这些字段是否有条件。我必须进行实验。编辑问题以显示示例数据和所需结果。数月的列听起来像是非规范化的数据结构。运行此操作时会发生什么情况?在VBA中可能更容易完成。添加了表剪切-由于嵌套IIF的混乱而出现语法错误。数据应该是作为有问题的文本表提供,而不是链接文件或图像。或者去一个鼓励附加文件的论坛。首先,Month(Date())将返回一个数字,所以不要在引号中添加条件。
IIF(Month(Date())=1,(
。另外,不要在每个IIF()中重复设置,它应该在IIF()之外的SQL语句中只使用一次).数据在SQLServer中吗?在Access中,对于这种情况,我会使用Choose()而不是IIf。通常,Switch()比IIf()更可取。SQLServer使用CASE()。但我甚至不确定这些字段是否有条件。我必须进行实验。dbo是ODBC链接的-此代码的开头语法是什么?需要设置开头并结束此>我发现搜索的示例是was
Dim db As Database Dim qdf As QueryDef Dim updateQuery As String updateQuery=“My\u Update\u Query”“Set db=CurrentDb()设置qdf=db.CreateQueryDF qdf.SQL=updateQuery qdf.Execute DbFailOneError
是否尝试了我提供的代码,但没有其他内容?决定将其放入哪个事件,例如单击按钮。如果它不能按原样运行,则添加db和qdf变量对象设置。重点是,在VBA中生成并执行SQL语句。代码中没有其他内容运行时错误3016参数太少。应为3。此处为新手,因此添加db和qft变量对象尚不明显。将对此进行检查。信息冲突。您的SQL显示YY:01,但数据图像显示YY:1。哪一个是正确的?编辑您的问题。根据需要修改建议的代码。标头中没有0-10-4 tydbo与ODBC链接-是什么此代码开头的yntax?需要设置此代码的开头和结尾>我在搜索中发现的一个示例是
Dim db As Database Dim qdf As QueryDef Dim updateQuery As String updateQuery=“My\u Update\u Query”Set db=CurrentDb()设置qdf=db.CreateQueryDF qdf.SQL=updateQuery qdf.Execute DbFailOneError
是否尝试了我提供的代码,但没有其他内容?决定将其放入哪个事件,例如单击按钮。如果它不能按原样运行,则添加db和qdf变量对象设置。重点是,在VBA中生成并执行SQL语句。代码中没有其他内容运行时错误3016参数太少。应为3。此处为新手,因此添加db和qft变量对象尚不明显。将对此进行检查。信息冲突。您的SQL显示YY:01,但数据图像显示YY:1。哪一项正确?编辑您的问题。根据需要修改建议的代码。标题中没有0-10-4