我做了一个水晶报表柱状图,横轴显示各个企业名称,纵轴显示数据, 我把时间条件作为变量,可在.aspx页面选择;
  但是我的目的是: 每个企业两根柱子:一个显示选定时间的数据,另一个显示“去年同期”的数据, 用于对比。
问题是:在时间上我不知道怎么才能为“去年同期”那根柱子帮定另一个时间,数据取自同一表,并且同一个报表中好像不能用俩时间变量吧?
  
  今天交货,很急, 期待各位高手帮忙!                             --在线,解决问题立即给分

解决方案 »

  1.   

    可以吗?  我在  图表专家->数据->显示值 里加了一列,所以显示两个柱子,但是时间变量是控制整个报表的时间变量,有什么好的方法可以区分吗?
      

  2.   

       要不这样,我在 数据库选择专家里添加命令,在命令的SQL语句里添加一个时间参数,并以这个参数为条件查数据;
     这个参数应该和原来的参数不一样,但我不知道怎么给命令里的参数传值,如果有办法给命令里那个参数传值,问题也能解决。
      

  3.   

    使用ZedGraph控件也可以网页上作图表
      

  4.   

    时间比较紧,ZedGraph 不会用,我目前把这个问题解决就可以了。
      

  5.   

    用ZedGraph控件可以解决你现在的问题。有1.1和2。0版本的。也有WINFORM和web版本的
      

  6.   

    ZedGraph代码
     private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
        {
            GraphPane myPane = masterPane[0];
            myPane.Title.Text = "图表名称";  //设计图表的标题
            myPane.XAxis.Title.Text = "类型"; //X轴标题
            myPane.YAxis.Title.Text = "人数"; //Y轴标题
            PointPairList list = new PointPairList(); //初始化一个PointPariList对象,说白了就是一条曲线或一条柱子要生出来了        PointPairList list2 = new PointPairList();  //如果你要在一个图表城显示多条曲线或柱子你就可以增加一个PointPariList对像,相对应下面的 y2,List2也是这个List相关的东西了        PointPairList list3 = new PointPairList(); //原理同上
            for (int x = 0; x < this.GridView1.Rows.Count; x++) //循环,x的初始值为0,最终值是我数据源中的记录总数 这里主要是gdvEdulist.Rows.Count的设定,根据你的数据源来设定
            {            int careerCount = Convert.ToInt32(this.GridView1.Rows[x].Cells[1].Text.Trim());// 这个是获取所对应的每条柱子所对应的数据的文本,我是从gridvew中直接取到的            int y = careerCount;//这句就是要充的值了,将CareerCount的值都整到Y里面去了,其实你也可以直接将值赋予Y,注意,这里的Y应该代表Y轴
                Random rand = new Random();
                double y2 = rand.NextDouble() * 300;
                
                double y3 = rand.NextDouble() * 300;            list.Add(x, y); // 将XY的值整到list里面存储起来
                list2.Add(x, y2);
                list3.Add(x, y3);
            }        BarItem myCurve = myPane.AddBar("数据统计", list, Color.Green); //增加一个Bar,List里面是不是包含了(X,Y)        myCurve.Bar.Fill = new Fill(Color.Green, Color.Green, Color.Green); //将颜色直译
            BarItem myCurve2 = myPane.AddBar("续费", list2, Color.Red);
            myCurve2.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
            BarItem myCurve3 = myPane.AddBar("升级", list3, Color.Green);
            myCurve3.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green);        myPane.XAxis.MajorTic.IsBetweenLabels = true; //这个我不知道乍么解释,不好意思        string[] labels = new string[GridView1.Rows.Count];        for (int i = 0; i < this.GridView1.Rows.Count; i++)  //这个循环主要是取到里面的说明文字,用了一个数组的方法
            {
                labels[i] = this.GridView1.Rows[i].Cells[0].Text.Trim();
            }
        }
      

  7.   

    建立两个 名字不同,内容相同的视图 select d.EnterpriseName,d.data 去年同期,d1.data 本月实际,d.date,d1.date from DataView d inner join DataOldView d1
    on d.EnterpriseName=d1.EnterpriseName
    and d.BlocId = d1.BlocId
    and d.TableId = d1.Tableid
    and d.SortNo = d1.SortNo
    where d.BlocId={?BlocId}
    and d.tableId={?TableId}
    and d.SortNo={?SortNo}
    and d.Date='{?DateOld}'
                    and d1.date='{?DateNow}'