Как поместить более одного Crystal Report в один просмотрщик Crystal Report? - PullRequest
0 голосов
/ 26 декабря 2010

Итак, вот в чем дело ..

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

Я действительно не знаю, как использовать поддерево в Crystal Report ... Возможно ли это?как это ?


цель всего этого - иметь возможность печатать все отчеты за один клик

Ответы [ 2 ]

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

Если вы добавите GROUP в свой отчет в поле «Имя сотрудника», это (по умолчанию) создаст искомое дерево групп.

Оттуда, с помощью кода, его можно отключить., но вы должны увидеть дерево групп по умолчанию, если в вашем отчете есть какие-либо группы.

Кажется, проблема в том, что отчет не сгруппирован по имени сотрудника.

0 голосов
/ 27 декабря 2010

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

Это позволит вам создавать отчеты в формате PDF с помощью механизма Crystal Reports.По сути, это позволит вам создать несколько PDF-файлов с помощью цикла, который затем можно распечатать автоматически. Sub Export PDF запишет файл на диск, а затем откроет его с помощью программы чтения PDF-файлов по умолчанию.Функция печати PDF автоматически распечатает файлы PDF, которые были сохранены на диск.Это не идеальное решение, но я надеюсь, что оно хотя бы приблизит вас к тому, чего вы пытаетесь достичь.

Открытый класс PDFCR

Private Const SW_SHOWNORMAL As Integer = 2
<DllImport("shell32")> _
Public Shared Function ShellExecute(ByVal hWnd As IntPtr, _
                                    ByVal lpOperation As String, _
                                    ByVal lpFile As String, _
                                    ByVal lpParameters As String, _
                                    ByVal lpDirectory As String, _
                                    ByVal nShowCmd As Integer) As IntPtr
End Function

Public Shared Sub ExportPDF(ByVal crDOC As ReportDocument, ByVal FilePath As String)
    Dim CrExportOptions As ExportOptions
    Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions()
    Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions()
    CrDiskFileDestinationOptions.DiskFileName = FilePath
    CrExportOptions = crDOC.ExportOptions
    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions
    CrExportOptions.FormatOptions = CrFormatTypeOptions
    crDOC.Export()
    Process.Start(FilePath)
End Sub

Public Shared Function PrintPDF(ByVal FilePath As String) As Boolean
    If IO.File.Exists(FilePath) Then
        If ShellExecute(CType(1, IntPtr), "Print", FilePath, "", _
        Directory.GetDirectoryRoot(FilePath), SW_SHOWNORMAL).ToInt32 <= 32 Then
            Return False
        Else
            Return True
        End If
    Else
        Return False
    End If
End Function

Конечный класс

У меня возникли проблемы с отображением импорта в этом блоке кода, поэтому они представлены в виде обычного текста.

Импортирует System.IO

Импорт System.Management

Импорт CrystalDecisions.Shared

Импорт System.Runtime.InteropServices

Импорт CrystalDecisions.CrystalReports.Двигатель

...