【问题标题】:Can crystal reports get data from an object data source?水晶报表可以从对象数据源获取数据吗?
【发布时间】:2010-10-19 13:16:21
【问题描述】:

水晶报表能否从对象数据源而不是数据库中获取数据?我用的是vs2008自带的水晶报表。我正在用 c# 3.5 编码。

我想使用返回 List 的对象数据源。

对于未来我们迁移到ssrs的时候,ssrs 2008可以从这个对象数据源获取数据吗?

【问题讨论】:

  • 我很困惑。您是在询问 Crystal Reports 或 SQL Server 的功能吗?
  • 我们说的是哪种对象数据源?如果您的数据源可以通过 ODBC 或 XML 导出,那么可以,Crystal 可以导入它。
  • 我首先要问的是水晶。我想使用一个返回 List 的对象数据源。那么你是说如果将我的对象数据源导出到一个 xml 文件,我可以将它用作我在水晶中的输入吗?

标签: crystal-reports ssrs-2008 objectdatasource


【解决方案1】:

SetDataSource 具有除 ICollection 参数外的重载。使用它,您可以将简单的对象集合绑定到 CR。但这并不比使用数据集灵活。使用数据集,您可以绑定多个相关表并构建更复杂的报告。

服务器的迁移对 CR 没有影响,因为 SetDataSource 仅适用于数据集或对象数据源等断开连接的对象。

【讨论】:

    【解决方案2】:

    是的,你可以这样做,但你必须将对象包装在一个数组中:

    // my crystal report
    Rpt rpt = new Rpt();
    
    
    AirLine lAirLine = (AirLine)cmbAirLine.SelectedItem;
    
    // I added two objects as datasources in report designer
    
    // here aWB.AWBPieceList is List<AWBPiece> where 'AWBPiece' is some class.
    rpt.Database.Tables[0].SetDataSource( AWBPieceList.ToArray() );
    
    // the second : objects are mapped to tables by crystal report.
    rpt.Database.Tables[1].SetDataSource( new AirLine[] { lAirLine } );
    

    【讨论】:

    • +1 用于 rpt.Database.Tables。在一些在数据集中使用多个数据表的旧报表中,我能够仅用对象列表替换其中一个数据源,而无需重写整个报表。
    • 另外,没有必要将列表转换为数组 CR(至少 v13)会很乐意使用任何可枚举的。
    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多