• .net 的水晶报表在push模式下的多表关联问题


    最近忙于用水晶报表来设计各种报表,都是采用push模式
    设计一个报表的基本情况是这样的:
    1 创建一个Dataset
    2 在该DataSet中手工创建一个或多个表结构,纯手工创建;
    3 创建一个rtp文件;
    4 通过DataBaseExpert导入刚才创建的DataSet;
    5 在报表设计的过程中使用这个数据集;

    现在我有一个报表的格式是这样的,所以我打算在DataSet中为A,B,C三相各创建一个表。
     

    参数

    A

    B

    C

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    总有功(kW)

    三个表的结构相同,都包含以下字段:
    RowName;
    MaxValue float;
    MaxValueTime DateTime;
    MinValue float;
    AvgValue float;
    ProValue float;

    在将这个数据集导入到rtp文件的过程中,expert会要求关联,第一次我把所有的这些link都删除了。虽然删除了关联,可是这些数据集还是可以添加到rpt文件中。但是在报表设计好并运行的过程中问题就出现了。
    假如现在A表的值为以下两列:
    总有功(kW), 100, 2006-11-11 22:22:22, 10, 50, 75 
    总有功(kW), 100, 2006-11-11 22:22:22, 10, 50, 75 
    B表和C表的值也相同,按照正常来说,应该显示为
      
     

    参数

    A

    B

    C

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    总有功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总无功(kVar)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100


    可是实际上却显示为,共为8行:
     

    参数

    A

    B

    C

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    总有功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总无功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

     

    总有功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总无功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总有功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总无功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总有功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总无功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100


    于是我怀疑是因为在database expert导入Dataset的过程中我删除了link的缘故,所以我决定重新导入Dataset;
    首先通过database expert删除原来导入的dataset,然后在DataSet中将Row设置为主键,然后用Database expert重新导入这个DataSet,在设置关联的时候,把其他所有的关联都删除,只剩下主键之间的关联。
    然后再运行原来的程序,就出现了预期中的结果:
     

    参数

    A

    B

    C

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    最大值

    最大值时刻

    最小值

    平均值

    95%

    率值

    总有功(kW)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    总无功(kVar)

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

    100

    2006-11-11 22:22:22 

    10 

    50 

     100

  • 相关阅读:
    WinForm RadioButton 默认不选中
    使用Devexpress时,ArcEngine 加载地图空白。
    正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
    Vue使用iframe加载本地html,并进行通信,传递参数
    找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例
    计算经纬度两点间距离
    The system clock has been set back more than 24 hours
    nmcli命令行修改网络连接名称
    linux安装mysql5.7
    <<<物品借记登记>>>
  • 原文地址:https://www.cnblogs.com/strinkbug/p/531463.html
Copyright © 2020-2023  润新知