После изучения ваших прежних вопросов (некоторые должны быть связаны с этим вопросом), я вижу проблему.Вы не связываете таблицы MySQL, что облегчит вам задачу.
Но вы все равно можете использовать запросы!Просто вставьте строку подключения (возможно, Globales.ConnString
в предыдущих вопросах) в запросы ODBC Connection String
в запросе design-> properties.Это делает запрос промежуточным запросом, который передается MySQL-серверу напрямую, без использования MDAC.
Просто установите для отчетов RecordSource
имя запроса.
Вы также можетепостроить запрос в VBA, но вы не можете использовать временный QueryDef (""), так как вы не можете установить набор отчетов-отчетов, поэтому используйте не временный.
Пример (предполагается, что существует QueryDefпо имени QueryForReport):
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)