首页 > 解决方案 > Excel VBA 中 SQL 更新函数的正确语法

问题描述

我正在尝试使用 Excel VBA 中的变量来使用 SQL Update、SET 和 Where 查询。我可以创建字符串来更新一个查询,但对于多个列,它被证明更加困难。请有人能指出我正确的方向吗?      

con.Execute "UPDATE [Maint_Record] SET [Completed_] ='" & strCompleted & "'" & "Where [ID] = '" & intID & "'"

上面的代码行适用于 'completed_' 列。但是当我需要更新三列并且下面的代码不起作用时!

con.Execute "UPDATE [Maint_Record] SET [Priority_] ='" & strPriority & "'," [Assigned_To] ='" & strAssignedTo & "', " [Comments_] ='" & strComments & "', " [Completed_] ='" & strCompleted & "'" & "Where [ID] = '" & intID & "';"

我收到了来自 Excel 的语句结束警告等 :-( 有人可以帮忙吗?我已经很接近让这个工作了,但还不够接近 :-)

标签: sqlexcelvba

解决方案


您的字符串有问题 - 您"在不需要的地方包含了额外的引号 ( )。请参阅下面突出显示的内容X

                 X
strPriority & "'," [Assigned_To] =

                    X
strAssignedTo & "', " [Comments_] =

                  X
strComments & "', " [Completed_] =

你需要再看一下这个字符串并纠正它的问题,给你类似的东西:

con.Execute "UPDATE [Maint_Record] SET [Priority_] ='" & strPriority & "', [Assigned_To] ='" & strAssignedTo & "', [Comments_] ='" & strComments & "', [Completed_] ='" & strCompleted & "' Where [ID] = '" & intID & "';"

你的最后WHERE陈述是:

Where [ID] = '" & intID & "';"

如果intID是数字 ( int) 那么您不需要单引号:

Where [ID] = " & intID & ";"

推荐阅读