我希望将Crystal Reports 2008集成到Windows窗体应用程序中。我想避免从我的客户端应用程序直接连接到数据库,同时向用户提供“完整”的信息。报告经验。 Crystal Reports 2008是否可以将服务器上的报表执行到客户端Windows窗体客户端控件,类似于Microsoft Reporting Services?

有帮助吗?

解决方案

我不知道它是否正是你所追求的,但我可以想到两种方法可以捏造它:

  1. 您可以设置报告,以便“数据库”是XSD文件,而不了解真正的后端。然后在运行时将数据推送到报告中。
  2. //在运行时创建适合您环境的实例 - 仅限示例:

    ReportClass rc = new ReportClass();

    rc.Load(crystalReportFileName);

    rc.SetDataSource(myIEnumerableData);

    CrystalReportViewer crv = new CrystalReportViewer();

    crv.ReportSource = rc;

    //显示水晶查看器。

    2 - 您可以在服务器上执行与1相同的操作(无论数据库方法如何),然后保存报告并将其推送到客户端。

    //某些服务器端服务/方法等

    public byte [] GetMyReport() {

    ReportClass rc = new ReportClass();

    rc.Load(crystalReportFileName);

    rc.SetDataSource(myIEnumerableData);

    rc.SaveAs(serverSideFile,True); // True对于使用报告保存数据至关重要

    return .... //将创建的文件转换为我猜想的字节数组

    }

    //客户端

    byte [] rep = Server。 GetMyReport()

    ReportClass rc = ..... //将rep转换回水晶报告

    CrystalReportViewer crv = new CrystalReportViewer();

    crv.ReportSource = rc;

scroll top