mysql - 来自 MYSQL 数据库的 MS Access 报告

标签 mysql ms-access

我正在尝试从 mysql 数据库获取一些信息到 access 中的报告中。但我不知道如何获取那里的信息,因为我在 vba 中使用 DAO 连接并且无法使用链接表。

我尝试将信息从我已经拥有信息的表单中存储到一个字符串中,通过 DAO 连接直接连接到 mysql 数据库,但没有成功。

Private Sub Command67_Click()
 DoCmd.Save
        DoCmd.GoToRecord , , acNewRec
        Me.Label39.Visible = True

        Dim strWhere As String

        strWhere = "[ID] = " & Me.[Id]

        DoCmd.OpenReport "MyReport", acViewPreview, , strWhere
End Sub

我在该代码中使用预览来查看一些结果,但我想做的是直接打印到打印机,因为这是客户转收据,我需要那些快速打印。

我再次无法使用链接表。

最佳答案

在调查了您之前的问题(有些问题应该与该问题相关)后,我发现了问题所在。您没有链接 MySQL 表,这会让事情变得更容易。

但是您仍然可以使用查询!只需将您的连接字符串(可能是前面问题中的 Globales.ConnString)放入查询设计->属性中的查询ODBC 连接字符串中即可。这使得查询成为直接传递到 MySQL 服务器的直通查询,而不是使用 MDAC。

只需将报告RecordSource设置为查询的名称即可。

您还可以在 VBA 中构建查询,但不能使用临时 QueryDef(""),因为您无法设置 Reports-Recordset,因此请使用非临时查询。

示例(假设有一个名为 QueryForReport 的 QueryDef):

Sub EditQueryDefPassthrough()

With CurrentDb.QueryDefs("QueryForReport")
    .Connect = "ODBC;Driver={MySQL ODBC 5.3 ANSI Driver};" _
        & "Server=YourServerName;" _
        & "Database=YourDatabaseName;" _
        & "User=YourMysqlUserName;" _
        & "Password=MysqlPwdForUser;" _
        & "Option=3;" ' adapt this to your MySQL ODBC Driver Version and server settings

    .SQL = "SELECT `Field` FROM `TABLE` LIMIT 1,1;" 'put SQL here (MySQL SQL Dialect, not MS-Access!). You can't use Access functions here (like Replace(), ...,  but those of MySQL like Concat().
End With

End Sub

QueryDef 需要在 Report_Load 事件之前设置,但在 Report_Open 中应该足够了(例如,如果您想使用 OpenArgs 来构建 SQL 字符串)

关于mysql - 来自 MYSQL 数据库的 MS Access 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56453035/

相关文章:

javascript - 在 CSS/JS 中排列多个 div?

java - Jackcess 获取排序表或其中最大索引

sql - Access 在 SQL View 中给出错误,但查询运行正确

mysql - PHP MySQL 库与 MySQL 服务器不同

mysql - 玛丽亚数据库 (MySQL) :Query slow when using sub query

MySQL 触发器 : print a warning message when an inserted entry is greater than a value

ms-access - 获取给定日期的周数

mysql - SQL 计算具有多个Where 可能性的表中的不同值

php - 在php中将马拉地语数据从excelsheet导入到mysql

c# - Access 等同于 C# List<T> 的 VBA