gpt4 book ai didi

c# - 在 Visual Studio 2005 中使用 Crystal Reports(C# .NET Windows 应用程序)

转载 作者:太空狗 更新时间:2023-10-29 17:44:13 25 4
gpt4 key购买 nike

我需要在 C# .NET Windows 应用程序中创建报告。我有一个 SQL Server 2005 数据库和 Visual Studio 2005,并且非常擅长创建存储过程和数据集。

有人可以为我指明创建报告的正确方向吗?我似乎无法解决。一些示例将是一个好的开始,或者是一个简单的操作指南……任何比 MSDN 文档解释得更好的东西。

我正在使用 CrystalDecisions.Windows.Forms.CrystalReportViewer 控件来显示报告,我认为这是正确的。

如果我即将踏上漫长而复杂的旅程,创建和显示还可以打印的报告的最简单方法是什么?

最佳答案

我现在已经成功完成这项工作。

简要概述

它的工作原理是有一个“数据类”,它只是一个包含变量但没有代码的常规 C# 类。然后将其实例化并填充数据,然后放置在 ArrayList 中。 ArrayList 与要加载的报表名称一起绑定(bind)到报表查看器。在报表设计器中使用“.Net 对象”,而不是与数据库通信。

解释

我创建了一个类来保存我的报告的数据。这个类是我通过手动从数据库中检索数据来手动填充的。你如何做到这一点并不重要,但这里有一个例子:

DataSet ds = GeneratePickingNoteDataSet(id);
foreach (DataRow row in ds.Tables[0].Rows) {
CPickingNoteData pickingNoteData = new CPickingNoteData();

pickingNoteData.delivery_date = (DateTime)row["delivery_date"];
pickingNoteData.cust_po = (int)row["CustomerPONumber"];
pickingNoteData.address = row["CustomerAddress"].ToString();
// ... and so on ...

rptData.Add(pickingNoteData);
}

然后将类放入 ArrayList 中。 arraylist 中的每个元素对应于完成的报告中的一个“行”。

列表中的第一个元素也可以保存报表页眉数据,列表中的最后一个元素可以保存报表页脚数据。因为这是一个 ArrayList,所以可以使用普通的 Array 访问来获取它们:

((CPickingNoteData)rptData[0]).header_date = DateTime.Now;
((CPickingNoteData)rptData[rptData.Count-1]).footer_serial = GenerateSerialNumber();

一旦你有了一个充满数据的数组列表,像这样将它绑定(bind)到你的报表查看器,其中 'rptData' 是 'ArrayList' 类型

ReportDocument reportDoc = new ReportDocument();
reportDoc.Load(reportPath);
reportDoc.SetDataSource(rptData);
crystalReportViewer.ReportSource = reportDoc;

现在您需要将数据类绑定(bind)到报表本身。您在设计器中执行此操作:

  1. 打开“字段资源管理器”选项卡(可能位于“查看”菜单下),然后右键单击“数据库字段”
  2. 点击“项目数据”
  3. 点击“.NET 对象”
  4. 向下滚动列表以找到您的数据类(如果不存在,编译你的应用程序)
  5. 按“>>”然后确定
  6. 您现在可以拖动类(class)成员到报告上并将它们排列为你想要。

关于c# - 在 Visual Studio 2005 中使用 Crystal Reports(C# .NET Windows 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com