Используя Access 2003 VBA, я хочу, чтобы отчет появлялся на экране, а не распечатывался. Но это не работает - PullRequest
0 голосов
/ 20 октября 2011

Заранее благодарим за любую помощь, которую вы можете оказать.Я использую заявление случая, чтобы определить, какой отчет распечатать.Я определил, что выбрана правильная формулировка дела.Вот оператор случая:

Public Function RunAll(Vvar As Integer)

    Select Case Vvar

        Case 1
            'Case Me.frmeReports.Value = 1
            DoCmd.OpenReport "rptClientDev", acViewPreview

        Case 2
            'Case Me.frmeReports.Value = 2
            DoCmd.OpenReport "rptNetworking", , , , acViewPreview

        Case 3
            'Case Me.frmeReports.Value = 3
            DoCmd.OpenReport "rptSpeaking", , , , acViewPreview

        Case 4
            'Case Me.frmeReports.Value = 4
            DoCmd.OpenReport "rptArticle", , , , acViewPreview

    End Select

End Function

Эта функция вызывается из следующей подпрограммы:

Private Sub cmdOK_Click()

    If Me.ChkRunOne.Value = -1 Then
        strAttName = Me.cmbAttyName.Value
        vReportChoice = Me.frmeReports.Value
        RunOnce (vReportChoice)
        DoCmd.Close
        DoCmd.OpenForm ("frmMainMenu")

    Else
        vReportChoice = Me.frmeReports.Value
        RunAll (vReportChoice)
        DoCmd.Close
        DoCmd.OpenForm ("frmMainMenu")

    End If

End Sub

Отчеты печатаются правильно с правильными значениями.Проблема в том, что я не хочу, чтобы они печатались, я хочу, чтобы они появлялись на экране.Вы можете увидеть с оператором Case 1, что я пытался использовать меньше запятых между аргументами, но результат тот же.Отчет распечатывается, а затем база данных закрывается.Я совершенно запутался здесь.

-Спасибо

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Синтаксис из: http://msdn.microsoft.com/en-us/library/bb238032(v=office.12).aspx, 2003 такой же.

expression.OpenReport ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs

Итак, все эти

DoCmd.OpenReport "rptNetworking", , , , acViewPreview

неправильно, слишком много запятых.

Первый правильный.

0 голосов
/ 05 ноября 2011

Это ваша второстепенная заметка - о неожиданном закрытии базы данных:

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

Рекомендуется всегда использовать конкретную ссылку окна (например, форму) при вызове DoCmd.Close (подробнее см. на этой странице MSDN ).

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