2

私はこのようなコードのブロックを持っています

CrystalReport2 report1 = new CrystalReport2();
                    report1.SetParameterValue("@StartDate", startDate);
                    report1.SetParameterValue("@EndDate", endDate);
                    report1.SetParameterValue("@show", 1);
                    report1.SetParameterValue("@name", name);


                    string fullFileName = //filename;
                    report1.ExportToDisk(ExportFormatType.Excel, fullFileName);
                    report1.Close();
                    report1.Dispose();

これらのレポートがいくつかありますが、コード ブロックは各レポートでほぼ同じです。それらはすべて同じパラメータ セットを使用し、同じ方法でエクスポートされます。

それらはすべて異なるデータセットを生成します(そのため、レポートがいくつかあります)。

だから一つ一つ変わるみたいに一つしか見えない

CrystalReport2 report1 = new CrystalReport2();
CrystalReport3 report2 = new CrystalReport3();

では、上記のコードを任意のレポートを取得できるメソッドにすることができますか?

4

1 に答える 1

3

次のようなヘルパーを使用できます。

    public static void MyReportsCommonTasks(
        CrystalDecisions.CrystalReports.Engine.ReportClass report,
        DateTime startDate,
        DateTime endDate,
        String name,
        String fullFileName)
    {
        report.SetParameterValue("@StartDate", startDate);
        report.SetParameterValue("@EndDate", endDate);
        report.SetParameterValue("@show", 1);
        report.SetParameterValue("@name", name);
        report.ExportToDisk(ExportFormatType.Excel, fullFileName);
        report.Close();
        report.Dispose();
    }

レポートが拡張されているため、これが可能であることに注意してくださいCrystalDecisions.CrystalReports.Engine.ReportClass

メソッド内でレポートをインスタンス化する方法の例に従ってください。

    public static void MyReportsCommonTasks<R>(
        DateTime startDate,
        DateTime endDate,
        String name,
        String fullFileName) 
        where R : CrystalDecisions.CrystalReports.Engine.ReportClass, new()
    {
        ReportClass report = new R();
        report.SetParameterValue("@StartDate", startDate);
        report.SetParameterValue("@EndDate", endDate);
        report.SetParameterValue("@show", 1);
        report.SetParameterValue("@name", name);
        report.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.Excel, fullFileName);
        report.Close();
        report.Dispose();
    }
于 2012-07-12T16:51:02.190 に答える