• 1000 услуга «Обнаружение интерактивных служб», похоже, не помогает. (К вашему сведению: весь этот код отлично работает с вызывающим приложением, НЕ запущенным как служба)
В отчете My Access есть несколько таблиц данных (которые я вставляю в отчет - проблем нет) и следующие code:
Function RunTurnReport()
ReportPrint "Turn Report"
Application.Quit
End Function
Public Sub ReportPrint(rpt as string)
dim outfile as string
outfile = "C:\reports\" & rpt & ".rtf"
Application.DoCmd.OpenReport rpt, acViewNormal,,,acWindowNormal
Application.DoCmd.OutputTo acOutputReport, rpt, acFormatRTF, outfile
End Sub
То есть с точки зрения доступа. Сам отчет просто получает данные из простого запроса к таблице, упомянутой выше.
Внутри моего «вызывающего приложения» он использует встроенный VBA. Я пробовал 2 метода для этого:
Метод 1: Оболочка для запуска макроса, который запускает функцию RunTurnReport
Const ReportLocation = """C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE"" ""C:\Reports\Reporting.mdb"" /X macroRunTurnReport"
Private Sub RunTurnupReport_OnTrue()
Dim id As Variant
id = Shell(ReportLocation, vbMinimizedNoFocus)
End Sub
Метод 2: Автоматизация доступа
Dim MSA As New Access.Application
Private Sub RunTurnupReport_OnTrue()
MSA.OpenCurrentDatabase "C:\Reports\Reporting.mdb"
MSA.Run "RunTurnReport"
set MSA=nothing
End Sub
Кажется, что у обоих методов есть проблема, когда встроенное приложение VBA работает как служба из-за того, что Access выдает всплывающие сообщения, а затем видит «Программа, запущенная на этом компьютере, пытается отобразить сообщение»
Я просто могу ' t выяснить, как запустить эти отчеты (с вызовом приложения как службы) без этой проблемы: (