none
报表显示列的问题 RRS feed

  • 问题

  • 如果有一个销售表:
    日期 商品 数量
    1 10
    1 12
    2 20
    2 22

    已经通过查询可以实现以下查询效果

    商品 1 2
    10 20
    12 22

    现在每天(就是固定一段时间)都会以日期与商品作为类似主键,与数量作为数据插入到表,查询结果也能自动增加新插入的数据列并显示
    在报表服务中会不会因为没有绑定新列,然后显示不出来看不到? 查询的结果是生成sql语句,用exec执行的

    2013年7月20日 12:17

答案

全部回复

  • 商品 1 2
    笔 10 20
    纸 12 22


    你这个是行列转换,我想问一下你的报表输出的格式是不是就是下面的形式

    商品 1 2
    笔 10 20
    纸 12 22


    程序那边调用你的sql语句 执行行列转换然后输出,程序获取结果然后显示到报表中

    这个跟绑定没有关系,只要你每次打开报表的时候都会读取原表的数据,跟你是否对原表进行什么样形式的

    转变(例如:行列转换)没有关系


    2013年7月21日 4:47
  • 就像我们公司的报表,也是使用动态SQL 然后exec的方式来调用的,获取数据,然后在报表里显示,如果数据表有数据增加或者修改,报表也会实时显示表的当前数据的
    2013年7月21日 4:52
  • 商品 1 2
    笔 10 20
    纸 12 22


    你这个是行列转换,我想问一下你的报表输出的格式是不是就是下面的形式

    商品 1 2
    笔 10 20
    纸 12 22


    程序那边调用你的sql语句 执行行列转换然后输出,程序获取结果然后显示到报表中

    这个跟绑定没有关系,只要你每次打开报表的时候都会读取原表的数据,跟你是否对原表进行什么样形式的

    转变(例如:行列转换)没有关系


    你好,显示的效果就是上面那个
    我是用动态sql 来做到变形的,是不是有某个函数可以直接实现这个效果? 如果有这样的函数是如何用的?
    因为在报表生成器里生成数据集的时候只有两列数据,在报表页面面上那个像是.net里gridview的表格就只有两列,当时试着加了新的数据没显示出来,,,不知道那个表格是不要如何设置一个属性之类的?

    2013年7月21日 13:07
  • 商品 1 2
    笔 10 20
    纸 12 22


    你这个是行列转换,我想问一下你的报表输出的格式是不是就是下面的形式

    商品 1 2
    笔 10 20
    纸 12 22


    程序那边调用你的sql语句 执行行列转换然后输出,程序获取结果然后显示到报表中

    这个跟绑定没有关系,只要你每次打开报表的时候都会读取原表的数据,跟你是否对原表进行什么样形式的

    转变(例如:行列转换)没有关系


    你好,显示的效果就是上面那个
    我是用动态sql 来做到变形的,是不是有某个函数可以直接实现这个效果? 如果有这样的函数是如何用的?
    因为在报表生成器里生成数据集的时候只有两列数据,在报表页面面上那个像是.net里gridview的表格就只有两列,当时试着加了新的数据没显示出来,,,不知道那个表格是不要如何设置一个属性之类的?

    如果你的是sql2005或以上有pivot函数,我记得gridview有一个databind的函数重新绑定数据源的
    2013年7月21日 13:13
  • 商品 1 2
    笔 10 20
    纸 12 22


    你这个是行列转换,我想问一下你的报表输出的格式是不是就是下面的形式

    商品 1 2
    笔 10 20
    纸 12 22


    程序那边调用你的sql语句 执行行列转换然后输出,程序获取结果然后显示到报表中

    这个跟绑定没有关系,只要你每次打开报表的时候都会读取原表的数据,跟你是否对原表进行什么样形式的

    转变(例如:行列转换)没有关系


    你好,显示的效果就是上面那个
    我是用动态sql 来做到变形的,是不是有某个函数可以直接实现这个效果? 如果有这样的函数是如何用的?
    因为在报表生成器里生成数据集的时候只有两列数据,在报表页面面上那个像是.net里gridview的表格就只有两列,当时试着加了新的数据没显示出来,,,不知道那个表格是不要如何设置一个属性之类的?

    如果你的是sql2005或以上有pivot函数,我记得gridview有一个databind的函数重新绑定数据源的

    今天又研究了一下,自己的问题与这个类似吧http://social.microsoft.com/Forums/nl-NL/98df5735-cb68-4bbe-8e5c-c23711e4e35c/-
    在这上面找到了矩阵的运用,也许就是使用矩阵,能够像你说的跟绑定没有关系,程序会自动获取新增加的结果并显示
    然后还有另外一个问题,如果我想计算最后两项的差值,就一直没有办法实现,比如:
    商品 1 2 增长
    笔 10 20 10
    纸 12 22 10
    本来我是用类似http://blog.csdn.net/fanzhonglei/article/details/2968196的动态sql来显示全部数据和增长的数据,这个办法列是不固定的,ssms查询没问题用表或矩阵展示好像无法成功
    但用矩阵显示数据后没弄明白如何直接算出最近两列(因为后面数据再插入就会有3这个统计了)的结果.是用表达式还是其他方法吗?只发现矩阵里用sum算和倒是很直接..

    2013年7月22日 12:23
  • 你说的报表服务,是指Reporting Service吗?

    把日期放到列组上就可以了。


    想不想时已是想,不如不想都不想。

    2013年7月23日 11:03
    版主
  • 你说的报表服务,是指Reporting Service吗?

    把日期放到列组上就可以了。


    想不想时已是想,不如不想都不想。

    是的就是reporting service,日期放在列组上,值放在数据上就能显示,这个已经做到了
    但如果我希望计算最近两次日期数据的差值或者和要怎么做?
    计算全部日期下数据的和直接用sum一算就有了....

    2013年7月23日 12:17
  • 你画个表我看看,不是很清楚你要什么样的效果。

    想不想时已是想,不如不想都不想。

    2013年7月26日 3:33
    版主
  • 你画个表我看看,不是很清楚你要什么样的效果。

    想不想时已是想,不如不想都不想。

    比如这样的显示效果已经实现了:
    商品 1 2 3
    笔 10 20 31
    纸 12 22 33
    然后希望可以再加一列,变成这样:
    商品 1 2 3 增长
    笔 10 20 31 11
    纸 12 22 33 11
    后面每当随着时间推移,增长的那一列都能根据最近的两次时间下的值进行计算,比如差值或者其他的
    可以用表达式或者什么语句的思路去实现吗

    2013年7月28日 12:24
  • 至少你可以用报表里面引用自定义的函数来实现。搞个变量来放差值。

    表达式不一定行,你可以试一下。


    想不想时已是想,不如不想都不想。

    2013年7月28日 17:20
    版主
  • 至少你可以用报表里面引用自定义的函数来实现。搞个变量来放差值。

    表达式不一定行,你可以试一下。


    想不想时已是想,不如不想都不想。

    这个你提到的自定义函数如何调出面板进行添加或者定义呢? 

    对于表达式,实在抱歉懂得不多

    现在已经用动态sql的方法和第二个表实现了自己的要求,想学习下有没有更加方便的方法,直播用拖动,定义的办法来实现目标...

    2013年7月29日 12:27
  • 右键点击报表周围的浅黄色区域,选择报表属性|代码,写函数就可以了。

    报表中调用的时候,函数名前面加个Code.

    比如Code.ComputeGrowing


    想不想时已是想,不如不想都不想。

    2013年7月29日 12:54
    版主
  • 右键点击报表周围的浅黄色区域,选择报表属性|代码,写函数就可以了。

    报表中调用的时候,函数名前面加个Code.

    比如Code.ComputeGrowing


    想不想时已是想,不如不想都不想。

    啊,那这样也是要再编辑代码了.自定义函数的调用是在右键→表达式里调用吗?
    2013年7月29日 13:19
  • 是的。用SSRS,不写表达式可做不出来好效果哦。

    想不想时已是想,不如不想都不想。

    2013年7月29日 14:47
    版主