Поделиться через


Объект Report (Access)

Объект Report ссылается на конкретный отчет Microsoft Access.

Замечания

Объект Report является членом коллекции Reports , которая представляет собой коллекцию всех открытых в настоящее время отчетов. В коллекции Отчетов отдельные отчеты индексируются с нуля. Ссылка на отдельный объект Report в коллекции Reports либо путем ссылки на отчет по имени, либо путем ссылки на его индекс в коллекции. Если имя отчета содержит пробел, имя должно быть заключено в квадратные скобки ([ ]).

Синтаксис Пример
Отчеты! reportname Отчеты! OrderReport
Отчеты! [имя отчета] Отчеты! [Отчет о заказе]
Reports("reportname") Reports("OrderReport")
Отчеты (индекс) Отчеты(0)

Примечание.

Каждый объект Report имеет коллекцию Controls , которая содержит все элементы управления в отчете. Ссылаться на элемент управления в отчете, неявно или явно ссылаясь на коллекцию Controls . Код будет выполняться быстрее, если вы сошлетесь на коллекцию Элементы управления неявно. В следующих примерах показаны два способа ссылки на элемент управления NewData в отчете с именем OrderReport.

' Implicit reference. 
Reports!OrderReport!NewData
' Explicit reference. 
Reports!OrderReport.Controls!NewData

Пример

В следующем примере показано, как использовать событие NoData отчета, чтобы предотвратить открытие отчета при отсутствии отображаемых данных.

Private Sub Report_NoData(Cancel As Integer)

    'Add code here that will be executed if no data
    'was returned by the Report's RecordSource
    MsgBox "No customers ordered this product this month. " & _
        "The report will now close."
    Cancel = True

End Sub

В следующем примере показано, как использовать событие Page для добавления водяного знака в отчет перед его печатью.

Private Sub Report_Page()
    Dim strWatermarkText As String
    Dim sizeHor As Single
    Dim sizeVer As Single

#If RUN_PAGE_EVENT = True Then
    With Me
        '// Print page border
        Me.Line (0, 0)-(.ScaleWidth - 1, .ScaleHeight - 1), vbBlack, B
    
        '// Print watermark
        strWatermarkText = "Confidential"
        
        .ScaleMode = 3
        .FontName = "Segoe UI"
        .FontSize = 48
        .ForeColor = RGB(255, 0, 0)

        '// Calculate text metrics
        sizeHor = .TextWidth(strWatermarkText)
        sizeVer = .TextHeight(strWatermarkText)
        
        '// Set the print location
        .CurrentX = (.ScaleWidth / 2) - (sizeHor / 2)
        .CurrentY = (.ScaleHeight / 2) - (sizeVer / 2)
    
        '// Print the watermark
        .Print strWatermarkText
    End With
#End If

End Sub

В следующем примере показано, как задать свойство BackColor элемента управления на основе его значения.

Private Sub SetControlFormatting()
    If (Me.AvgOfRating >= 8) Then
        Me.AvgOfRating.BackColor = vbGreen
    ElseIf (Me.AvgOfRating >= 5) Then
        Me.AvgOfRating.BackColor = vbYellow
    Else
        Me.AvgOfRating.BackColor = vbRed
    End If
End Sub

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    ' size the width of the rectangle
    Dim lngOffset As Long
    lngOffset = (Me.boxInside.Left - Me.boxOutside.Left) * 2
    Me.boxInside.Width = (Me.boxOutside.Width * (Me.AvgOfRating / 10)) - lngOffset
    
    ' do conditional formatting for the control in print preview
    SetControlFormatting
End Sub

Private Sub Detail_Paint()
    ' do conditional formatting for the control in report view
    SetControlFormatting
End Sub

В следующем примере показано, как отформатировать отчет для отображения индикаторов выполнения. В примере используется пара прямоугольных элементов управления boxInside и boxOutside для создания индикатора выполнения на основе значения AvgOfRating. Индикаторы выполнения отображаются только в том случае, если отчет открыт в режиме предварительного просмотра или печатается.

Private Sub Report_Load()
    If (Me.CurrentView = AcCurrentView.acCurViewPreview) Then
        Me.boxInside.Visible = True
        Me.boxOutside.Visible = True
    Else
        Me.boxInside.Visible = False
        Me.boxOutside.Visible = False
    End If
End Sub

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    ' size the width of the rectangle
    Dim lngOffset As Long
    lngOffset = (Me.boxInside.Left - Me.boxOutside.Left) * 2
    Me.boxInside.Width = (Me.boxOutside.Width * (Me.AvgOfRating / 10)) - lngOffset
    
    ' do conditional formatting for the control in print preview
    SetControlFormatting
End Sub

События

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.