2014-09-02 62 views
0

我想在Access中运行VB中的更新查询,并且在Update语句中出现语法错误。任何人都可以帮忙吗?错误VB DoCmd.RunSQL更新

Sub Update_Project() 
Dim ProjectID, ProjectName, ProjectManager, sql_text as string 

ProjectID = Wkbk.Sheets(1).Range("C5").Value 

ProjectName = Wkbk.Sheets(1).Range("D5").Value 
ProjectManager = Wkbk.Sheets(1).Range("E5").Value 

sql_text = "UPDATE Projects (set ProjName, ProjManager) = '" & ProjectName & "," & ProjectManager & "' where ProgrammeID = " & ProjectID 
DoCmd.RunSQL(sql_text) 
End Sub 

我觉得他错误可能是在更新字段的串联,但我不能解决它。

谢谢!

+1

您首先需要调试您的更新语句,以使其在VBA之外工作。提示:'UPDATE

SET = , = '。之后,您需要在'ProjectName'和'ProjectManager'周围获得''''撇号。第三:最好使用查询参数。 – MP24 2014-09-02 09:32:04

+0

谢谢你。这基本上是PaulFrancis在下面为我做的,以便相应地读出撇号和双引号。 – Darius 2014-09-02 13:24:18

回答

1

你有UPDATE语句的语法混乱。你也需要显式声明变量,这将为你节省很多麻烦。以下是你需要的。

Sub Update_Project() 
    Dim ProjectID As Long, ProjectName As String, ProjectManager As String, sql_text As String 

    ProjectID = Wkbk.Sheets(1).Range("C5").Value 

    ProjectName = Wkbk.Sheets(1).Range("D5").Value 
    ProjectManager = Wkbk.Sheets(1).Range("E5").Value 

    sql_text = "UPDATE Projects SET ProjName = '" & ProjectName & "', ProjManager = '" & ProjectManager & _ 
       "' WHERE ProgrammeID = " & ProjectID 
    DoCmd.RunSQL sql_text 
End Sub 
+0

PaulFrancis。明智的答案。它工作完美。我已将您的答案标记为已接受的答案。 – Darius 2014-09-02 13:26:20