vba sql语句错误“缺少运算符”

时间:2016-09-23 09:22:21

标签: sql vba ms-access

我无法在VBA中使用它,尽管它在访问中有效。 哪个是错误?

Private Sub Command517_Click()
Dim SQL As String

    SQL = "SELECT Tags.Tag, MacroAttività.[Nome/Descrizione], MacroAttività.ID," & _
    " MacroAttività.Descrizione, MacroAttività.[Data inizio attività], " & _
    " MacroAttività.[Data fine prevista], MacroAttività.[Data fine effettiva], " & _
    " MacroAttività.Note,operatore.Nome, Tipologia.Tipologia " & _
    " FROM Tipologia INNER JOIN (operatore INNER JOIN (MacroAttività INNER JOIN Tags ON MacroAttività.ID = Tags.[ID macro attività]) " & _
    " ON operatore.ID = MacroAttività.Leader) ON Tipologia.ID = MacroAttività.Tipologia WHERE " & _
    "(((Tags.Tag) = [Forms]![MacroAttività]![Text511]) " & _
    " UNION ALL SELECT Tags.Tag, MacroAttività.[Nome/Descrizione], " & _
    " MacroAttività.Descrizione, MacroAttività.ID, " & _
    " MacroAttività.Leader, MacroAttività.[Data inizio attività], " & _
    " MacroAttività.[Data fine prevista], MacroAttività.[Data fine effettiva], " & _
    " MacroAttività.Note, MacroAttività.Tipologia " & _
    " FROM MacroAttività INNER JOIN Tags ON MacroAttività.ID = Tags.[ID macro attività] " & _
    " WHERE (((Tags.Tag)=[Forms]![MacroAttività]![Text513])); "
DoCmd.RunSQL SQL
End Sub

1 个答案:

答案 0 :(得分:2)

必须从SQL语句外部读取表单变量,因此我的解决方案关闭SQL语句添加表单变量,然后重新打开SQL引用。我在表单变量周围添加了字符串限定符(单引号);假设它们是使用“文本”的字符串。

varSQL = "SELECT Tags.Tag, MacroAttività.[Nome/Descrizione], MacroAttività.ID," & _
" MacroAttività.Descrizione, MacroAttività.[Data inizio attività], " & _
" MacroAttività.[Data fine prevista], MacroAttività.[Data fine effettiva], " & _
" MacroAttività.Note,operatore.Nome, Tipologia.Tipologia " & _
" FROM Tipologia INNER JOIN (operatore INNER JOIN (MacroAttività INNER JOIN Tags ON MacroAttività.ID = Tags.[ID macro attività]) " & _
" ON operatore.ID = MacroAttività.Leader) ON Tipologia.ID = MacroAttività.Tipologia WHERE " & _
"(((Tags.Tag) ='" & [Forms]![MacroAttività]![Text511] & "')" & _
" UNION ALL SELECT Tags.Tag, MacroAttività.[Nome/Descrizione], " & _
" MacroAttività.Descrizione, MacroAttività.ID, " & _
" MacroAttività.Leader, MacroAttività.[Data inizio attività], " & _
" MacroAttività.[Data fine prevista], MacroAttività.[Data fine effettiva], " & _
" MacroAttività.Note, MacroAttività.Tipologia " & _
" FROM MacroAttività INNER JOIN Tags ON MacroAttività.ID = Tags.[ID macro attività] " & _
" WHERE (((Tags.Tag)='" & [Forms]![MacroAttività]![Text513] & "')); "

SQL是保留字,因此请将SQL变量名称更改为varSQL。 (更新:不是保留字)

据我所知,

currentdb.executedomcd.runSQL仅适用于操作查询。你不能使用这些方法执行选择查询。尝试以下方法:

dim rs as recordset
dim varSQL as string

varSQL = "SELECT..."

set rs=currentdb.openrecordset(varSQL,dbOpenDynaset)

me.[text1] = rs.fieldname
'send recordset values to form

rs.close