我真的不知道我在这里做错了什么。我想通过ODBC驱动程序将VBA与FileMaker Pro 11连接。我安装了驱动程序,它的工作原理。 FileMaker ODBC能够检测我的数据库。因此,在配置名为“FM”的DSN后,我编写了以下代码:
Private Sub Form_Load()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim counter As Integer
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "DRIVER={FileMaker ODBC};Data Source=FM;Initial Catalog='test.fp7';UID=admin;PWD=admin;"
cn.CursorLocation = adUseClient
sql = "SELECT col_name FROM test.fp7 WHERE col_name='value'"
rs.Open sql, cn
For Each it In rs.Fields
Name = it.Value
ActiveSheet.Range("A1").Value = Name
Next
End Sub
这是最奇怪的事情:当我执行代码时,它建立与服务器的连接,但数据库(初始目录='test.fp7')没有设置。相反,在变量检查器中,它的名称为't',即'test.fp7'的第一个字母。我用其他名称('other_test.fp7')对此进行了测试,并再次使用第一个字母'o'。因此,记录集指令失败,运行时错误80004005.为什么只需要第一个字母?拜托,我完全震惊了!
我还配置了一个MySQL数据库来测试VBA和MySQL之间的通信,并使用类似的代码。
任何帮助都会受到好评。提前谢谢!
大卫
--------编辑--------
我在sql查询中忘记了分号...孩子失败了。没关系,用分号将错误更改为“运行时错误80040e09”。