mysql - 将 ADO 记录集作为可见表打开

标签 mysql ms-access vba odbc ado

我第一次做这样的事情,似乎很难找到任何有用的信息。

我想做的事: 将选择查询传递到 MySQL 数据库并在表中显示结果。

到目前为止我已经做到了:我在表单上有一个按钮,单击时会发生以下情况

Option Compare Database

Sub RunPassThrough(strSQL As String)

Dim ConnectionString As String
Dim Server As String
Dim User As String
Dim Pwd As String
Dim DatabaseName As String
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset


' Server Hostname (or IP)
Server = "192.168.178.10"

User = "user"
Pwd = "mypass"

DatabaseName = "myDB"

ConnectionString = "Provider=MSDASQL;Driver={MYSQL ODBC 5.1 DRIVER};" & _
        "Server=" & Server & ";Database=" & DatabaseName

Set Cn = New ADODB.Connection
Cn.CursorLocation = adUseClient
Cn.Mode = adModeShareDenyNone
Cn.Open ConnectionString, User, Pwd

Set Rs = New ADODB.Recordset


Rs.Open strSQL, Cn, adOpenDynamic, adLockReadOnly
'Set Rs = Cn.Execute("select * from SurveyResults limit 10;")





End Sub

Private Sub Befehl0_Click()

Dim SQL As String

SQL = "select * from SurveyResults limit 10;"

RunPassThrough (SQL)


End Sub

我知道 Rs.Open strSQL, Cn, adOpenDynamic, adLockReadOnly 返回一个 ADO 记录集,我可以使用 VBA 对其进行操作,但我想要的只是向用户显示该记录集在表中。

类似于 OpenRecordset("Rs",作为用户可以看到的表格)

有人可以指出我正确的方向吗?我快要疯了......

最佳答案

我明白了。我的问题很简单,ReturnsRecords 属性默认设置为 false。

它现在可以工作了,所以如果有人需要它,我会发布一个答案。

Sub RunPassThrough(strSQL As String)

Dim Server As String
Dim User As String
Dim Pwd As String
Dim DatabaseName As String
Dim qdfPassThrough As DAO.QueryDef, MyDB As Database
Dim strConnect As String


' Server Hostname (or IP)
Server = "192.168.178.10"

User = "user"
Pwd = "mypass"

DatabaseName = "database"



For Each qdf In CurrentDb.QueryDefs
If qdf.Name = "PassQuery" Then
    CurrentDb.QueryDefs.Delete "PassQuery"
    Exit For
End If
Next

    strConnect = "ODBC;DRIVER={MYSQL ODBC 5.1 DRIVER};SERVER=" & Server & ";DATABASE=" & DatabaseName & ";Uid=" & User & ";Pwd=" & Pwd & ";"

    Set MyDB = CurrentDb()

    Set qdfPassThrough = MyDB.CreateQueryDef("PassQuery")


    qdfPassThrough.Connect = strConnect
    qdfPassThrough.SQL = strSQL
    qdfPassThrough.Close

    Application.RefreshDatabaseWindow
    MyDB.QueryDefs("PassQuery").ReturnsRecords = True

    DoCmd.OpenQuery "PassQuery", acViewNormal, acReadOnly
    DoCmd.Maximize


End Sub

关于mysql - 将 ADO 记录集作为可见表打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742651/

相关文章:

VBA Document.Protect 未设置 wdProtectionType (Office 2007)

php - 使用php和jquery上传

php - 数据库不会更新(双重选择加入邮件列表)

r - 如何从 R 连接到 .accdb 数据库

database - 从 Windows 程序中的 mdb 数据库文件获取数据

javascript - 使用 Office-JS 链接读写

vba - 在不复制工作表的情况下引用另一个工作簿中的 Excel 工作表

mysql 按日期查找不同表中的记录数

mysql - Liquibase 在表创建过程中添加唯一约束

sql - 如果日期早于当前月份,则将日期转换为当前月份的第一天