繁体   English   中英

水晶报表中的重复数据

[英]Duplicated data in crystal reports

我正在尝试从水晶报告中的 3 个表中加载数据。

在每一个中,我都有显示以下数据的存储过程:

在此处输入图片说明

代码是:

select distinct * from servicios where ID_Orden = @idordenrecibida

SELECT  distinct ID_orden, Consecutivo, Observaciones, Empleado, replace(convert(NVARCHAR, FechaEntrada, 103), ' ', '/') AS FechaEntrada, replace(convert(NVARCHAR, FechaSalida, 103), ' ', '/') AS FechaSalida, Recibe, PrecioFinal
FROM    OrdenesServicio
WHERE ID_Orden = @idordenrecibida

SELECT distinct * FROM equipos WHERE ID_Orden = @idordenrecibida

(在接下来的快照中,从 CR 发送的参数也是 '8')

我想在我的报告中显示相同的内容,但是当我从 CR 调用这些过程时,报告显示了一些重复的结果:

在此处输入图片说明

它显示了一些重复的值,与程序的实际结果不同:S

那么,表单中的代码如下:

        OrdenReport oRep = new OrdenReport();
        ParameterField Pf = new ParameterField();
        ParameterFields Pfs = new ParameterFields();
        ParameterDiscreteValue Pdv = new ParameterDiscreteValue();
        Pf.Name = "@idordenrecibida"; //nombre del parametro
        Pdv.Value = 8;
        Pf.CurrentValues.Add(Pdv);
        Pfs.Add(Pf);
        crystalReportViewer1.ParameterFieldInfo = Pfs;
        oRep.Load(@"..\..\OrdenReport.rpt");
        crystalReportViewer1.ReportSource = oRep;

这是表单的设计:

在此处输入图片说明

我跟随向导的方式:

在此处输入图片说明在此处输入图片说明在此处输入图片说明在此处输入图片说明在此处输入图片说明

如果我在设计器中选择“不重复”选项,“Equipos”显示完美,但“Servicios”仍然显示重复。 实际上,“Equipos”的总数就是“servicios”被复制的次数。 我尝试修改关系,但仍然出现重复项。 我怎么能在那个报告中获得与“exec”相同的数据而不会错误地重复相同的行? 谢谢!!

编辑:

我发现只有当我想将两个表的数据一起显示时,数据才显示重复,所以当我从设计器中删除表servicios的字段时:

在此处输入图片说明

然后,我做 control + Z,我选择另一半部分(对应于 tableequipos)并按 supr。 它显示:

在此处输入图片说明

但是,如果我想将两者一起显示,则会重复两个表之一的字段。 我尝试移动到另一部分,但只显示一个文件,而不是必须显示的 2 或 3。

我该怎么做才能在同一份报告中正确显示它们?

如图所示,检查您的数据库字段是否被 _No 重复。 使用任一字段,您的问题将得到解决。

在此处输入图片说明

您在 Crystal Reports 中获得的所有数据都基于通过将所有给定表连接或链接在一起而形成的一组行。 详细信息部分代表一行。 当您将leerEquiposleerServicios放在同一个报告中时,它们会合并到同一组行中,如下所示:

|ID_Equipo|ID_Servicio|ID_Orden|
|60       |41         |8       |
|61       |41         |8       |
|60       |42         |8       |
|61       |42         |8       |
|60       |43         |8       |
|61       |43         |8       |

你有两个equipos 和三个servicios。 由于它们交叉连接(以每种可能的组合方式组合),结果是六行。

如果您希望看到 Servicios 的列表和 Equipos 的列表彼此完全分开,您需要两个完全独立的行集(即一组两个 Equipo 行和一组三个 Servicio 行)。 通常最安全的方法是使用子报表来做到这一点。

如果 Servicios 和 Equipos 之间存在连接(当它们具有相同的 ID_Orden 时),您必须询问您希望在一行中看到哪些信息:如果您希望每个 Servicio 都有一行,则按 Servicio 对报告进行分组,然后您可以例如,在汇总字段中插入计算机数量。 如果您想要两行 - 每个 Equipo 一行,则按 Equipo 分组。

您可以在网上找到很多关于 Crystal Reports 中重复行的说明(和问题):
Crystal Reports 中的“重复记录”疑难解答
处理重复记录或“表膨胀”

尝试选项Select Distinct Records Database下的Select Distinct Records以排除重复记录。

除此之外,我建议您检查链接为什么会产生重复记录。

暂无
暂无

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

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