编译错误:VBA 中需要访问的函数或变量

Posted

技术标签:

【中文标题】编译错误:VBA 中需要访问的函数或变量【英文标题】:Compile Error: Expected function or variable in VBA for access 【发布时间】:2015-03-02 18:04:55 【问题描述】:

我对 VBA 几乎一无所知,但我正在尝试修改应用程序以连接到 mysql 数据库。

以下代码在rstProjets.Open 处产生编译错误,我似乎找不到原因。

Public mysqlConn As ADODB.Connection

Private Sub cmdUpdate_Click()
Dim rstProjets As ADODB.Recordset
ConnectMySQL
Set rstProjets = rstProjets.Open("SELECT * FROM subventions LIMIT 5", mysqlConn)
With rstProjets
    If Not .EOF And Not .BOF Then
        .MoveFirst
        Do While Not .EOF
        MsgBox "Subventions:" & rstProjets![pin], , "Subvention ajoutée"
        .MoveNext
        Loop
    Else
        MsgBox "Aucune données à mettre à jour !", , "LVMB"
    End If 
    .Close
End With
mysqlConn.Close
End Sub

Private Sub ConnectMySQL()
Set mysqlConn = New ADODB.Connection
mysqlConn.Open "DRIVER=MySQL ODBC 5.3 Unicode Driver;" & _
    "SERVER=127.0.0.1;" & _
    "DATABASE=database;" & _
    "USER=root;" & _
    "PASSWORD=;" & _
    "Option=0"
End Sub

【问题讨论】:

知道 wherewhat 编译错误会很有用:) 当我点击一个按钮时,它会触发这个子,我得到的只是这条消息:编译错误:预期的函数或变量 运行调试->从 VB 编辑器的主菜单编译。当触发编译错误时,它将突出显示代码中的某些内容。当您收到编译错误时突出显示的是什么? 编译错误应该突出显示编译器编译失败的行。你能告诉我们是哪条线吗? (很可能是ConnectMySQL(第三行代码),这是一个来自其他地方的宏,您没有包含在项目中)。 第一行突出显示:Private Sub cmdUpdate_Click()。 ConnectMySQL 已正确包含在内。如果我删除 sub 中的代码并用 MsgBox 替换它,则不会出现编译错误。 【参考方案1】:

将您的rstProjets 对象变量设置为New ADODB.Recordset,然后调用其.Open 方法。

Dim rstProjets As ADODB.Recordset
ConnectMySQL
Set rstProjets = New ADODB.Recordset
rstProjets.Open "SELECT * FROM subventions LIMIT 5", mysqlConn

【讨论】:

以上是关于编译错误:VBA 中需要访问的函数或变量的主要内容,如果未能解决你的问题,请参考以下文章

为啥在尝试读取记录集字段时未定义访问 vba 抛出子或函数?

Excel vba 编译错误 - 参数不是可选的,

VBA:私有子中的编译错误 ByRef 参数类型不匹配

分离式编译时 链接器工具错误 (一个变量被定义一次或多次)

编译代码后出现 MS ACCESS 错误

ADO 记录集打开时访问编译错误 - 可能的参考问题?