请阅读我的问题 . 在我的工作中,我们正在寻找一种报告工具 . 到目前为止,Crystal Reports一直是您的选择 . 原因是简单快速的发展 . 我们想创建自己的应用程序,如中央报告 . 我需要知道,如果我可以创建一个分组泛型类 . 我知道Crystal Reports提供了分组选择的可能性,但是,它一次只能报告一个报告 . 我们有许多客户(平均80个),许多报告(每个客户20-30个) . 所以,是的,只有两个人很难保持1600-2400报告 .
背后的概念是:对于每个客户端,我们在数据库中都有一个文本,该文本是一个包含报告所需信息的视图 . 因此,我们可以有一个报告,显示给客户的不同信息 . 多个客户端的一个布局,这是新项目的一部分,我发现这种方式可以消除对多个布局的需求,并且能够在一个应用程序中聚合所有这些布局 .
这堂课会做什么?
它将获取文本,分析字段,并根据此分析发送一个窗口表单,显示分组的可能性 . Crystal Reports已执行此操作,但您必须手动为每个报表设置分组和公式选项 . 我们能够创建一个自动完成这项工作的类吗?
更新:
对于动态列选择我得到了这个解决方案:
if (chbCode.Checked)
{
columnNo++;
query = query.Insert(query.Length, "Codinome as Column" +
columnNo.ToString());
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "Codinome";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
if (chbFirstName.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "NomeEmpresa as Column" +
columnNo.ToString());
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "Nome da Empresa";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
所以我有这个初始形式,仅供测试 . 我知道它的丑陋; D.左侧持有复选框 . 对于每个复选框,报告上都有一个参数字段 . 这是我得到这个想法的链接:http://www.codeproject.com/Articles/20670/Dynamic-Crystal-Report-with-C?fid=466537&tid=3776908
我要感谢所有属于这个伟大的社区,最好的问候,迭戈的人 .
2 回答
我将尽力回答我理解你的问题 .
在您的帖子中,您正在寻找可以满足多个客户的报告 .
如果客户端的列相同,那么它的一个简单作业是为所有客户端编写一个带有“IF”条件的公式,并在组中使用该公式并使用客户端详细信息创建参数 . 您的公式应该是如果在参数客户端X中选择,则报告组公式将采用此输入并显示报告 . 如果您愿意,您甚至可以限制客户的详细信息 .
如果列不同,则创建具有所有客户端列的报告并为字段写入supress条件有点困难,如果选择客户端X,则应显示该客户端的列 . 按照第1点创建客户端选择 .
注意:假设数据提取来自单个数据库,则给出上述solutins .
这是解决方案,我想向Siva寻求他的建议 .
我创建一个临时字符串来接收将成为 Headers 组的列名 . 然后我用列设置公式字段文本,这样它就会知道如何分组 .