Отчет MS Access из базы данных MYSQL - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь получить некоторую информацию из базы данных MySQL для отчета в доступе.Но я не могу понять, как получить информацию там, так как я использую соединения DAO в vba и не могу использовать связанные таблицы.

Я попытался сохранить информацию в строку из формы, в которой у меня уже есть информация через соединение DAO напрямую к mysql db, но безуспешно.

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

Я использую предварительный просмотр в этом коде, чтобы увидеть какой-то результат, но я хотел бы напечатать непосредственно на принтере, так как это квитанция об обращении клиента, мне нужны для быстрой печати.

Опять не могу использовать связанные таблицы.

1 Ответ

0 голосов
/ 15 июня 2019

После изучения ваших прежних вопросов (некоторые должны быть связаны с этим вопросом), я вижу проблему.Вы не связываете таблицы 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...