繁体   English   中英

根据检查表中“选定属性的数量”创建Crystal Report,我们该如何做?

[英]Crystal Report Making on the basis of Number of Selected Attributes from check list, how can we do so?

我正在C#Windows窗体中开发应用程序,我基于c#中的数据收集列表制作水晶报表,例如,我有一个包含EmpID,名称,赞助者,职务,国籍等的表。我将它们带入c#中,将其传递给Crystal报表,我可以在“数据库”字段中看到我的属性,如果我将这些字段拖放到报表上,例如“姓名”,“职务”,“国籍”,那么我可以在“详细信息”部分看到它们的列,但是问题是,我大约有25个属性,并且我在c#中制作了一个25个属性的检查清单,如果我检查了13个属性,它应该制作一个13列的报表,问题是,我们在拖动和修改的基础上在Crystal报表中制作了报表删除字段,我该如何动态地做到这一点,意味着如果在c#检查列表中选择了13个字段,则报告中应该只有13列。 请找到附件中的图像“我目前的状况”,请右键单击以放大它,然后在新窗口中打开。 在此处输入图片说明

我认为,考虑到数据类型表示和所有Crystal复杂性,解决此问题的最简单方法是使用所有25个字段的适当大小来布局报表。

然后,在运行时,您将需要重新定位报表对象,由于Crystal提供信息的方式相对非结构化,因此这可能会有些棘手。

我将采用的方法是遍历报表对象并为数据字段生成一个SortedList,为标题字段生成一个SortedList。 它们应该在其“左”位置排序,以便您可以按外观顺序对其进行处理。

找到对象的排序列表后,可以循环浏览每个对象,如果用户未选择,则将“宽度”设置为0。

在字段中移动时,将跟踪当前的左侧位置。 您处理的第一个字段将设置您的起点,即使它不可见。 然后,对于所有后续字段,如果该字段可见,则将其左侧值设置为当前左侧位置,然后为下一个字段将其宽度加上一些分隔符添加到当前左侧位置。

希望这可以帮助您解决问题。

听起来这将是交叉表报告的好地方。 在这种情况下,您需要在报表的页眉或页脚中添加一个交叉表,并将数据传递到报表中,并为每个属性描述添加一列,然后对属性描述进行分组。 详情请见下文:

Data:

RowID  ColDesc    ColValue
1      Attr1      Value1
1      Attr2      Value2
2      Attr1      Value3

然后,您可以添加交叉表,其中行字段为RowID,列字段为ColDesc,要汇总的字段为ColValue。 您可以在摘要字段中使用摘要总数的最大值,因为它有所不同。

这未经测试,但我认为其输出应为:

CrossTab:

       Attr1    Attr2
1      Value1   Value2
2      Value3 

如您所见,添加新属性后,它将在交叉表中显示为新列。 就像我之前说的那样,这是未经测试的,因此对于任何错误我深表歉意,但我希望这足以帮助您。 谢谢

给定字段列表,Crystal Reports不会自动将列和标题添加到报表中。

我的建议是使用报表应用程序服务器.NET SDK动态更改报表。 该链接包括API参考以及示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM