如何将多个Crystal Report放入一个Crystal Report查看器?

时间:2010-12-26 12:00:18

标签: printing crystal-reports c#-2.0

所以这就是......

我写了一个c#应用程序,为每个员工生成每月的出勤报告,并附上自己的详细信息 我希望能够为所有员工执行此操作,并查看按名称分组的报告 所以当我从水晶报告子树中选择客户名称时,我会得到他的月度出勤报告

我真的不知道如何在水晶报告中使用子树......这样的事情有可能吗?


所有这一切的目标是能够一次打印所有报告

2 个答案:

答案 0 :(得分:0)

这不是你要求的,但我会发布它,因为它可能适合你。我在类似的情况下为我做过。同样抱歉VB语法

这将允许您使用Crystal Reports引擎将报告创建为PDF。基本上,它允许您使用循环创建多个PDF,然后可以自动打印.Export PDF Sub会将文件写入磁盘,然后使用默认的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

结束班

我无法在此代码块中显示Imports,因此这里是纯文本。

Imports System.IO

导入System.Management

导入CrystalDecisions.Shared

Imports System.Runtime.InteropServices

导入CrystalDecisions.CrystalReports.Engine

答案 1 :(得分:0)

如果您在“员工姓名”字段中向报表添加GROUP,则会(默认情况下)创建您要查找的组树。

从那里开始,代码方面,它可以关闭,但如果你的报告中有任何组,你应该默认看到组树。

问题似乎是报告没有按员工姓名分组。