社区
图表区
帖子详情
海波大哥在吗?一个水晶报表的难题,会得也可以来帮我,高分阿
liulangxin
2004-12-18 10:47:26
一个折线图,每天绘制一个点(已经解决),但是横坐标有很多日期,排的密密麻麻,看也看不清,想实现如下效果:每七天显示一个日期,但是搞了半天,只是3天显示一个日期
到底怎么样作阿
...全文
367
38
打赏
收藏
海波大哥在吗?一个水晶报表的难题,会得也可以来帮我,高分阿
一个折线图,每天绘制一个点(已经解决),但是横坐标有很多日期,排的密密麻麻,看也看不清,想实现如下效果:每七天显示一个日期,但是搞了半天,只是3天显示一个日期 到底怎么样作阿
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TT008
2005-06-09
打赏
举报
回复
study
ET2004
2005-01-18
打赏
举报
回复
方法二:在水晶报表创建一个日期型的参数字段,{?StartDate}。(应该在程序中显示水晶报表之前,把数据集的第一个日期作为参数传入水晶报表。)
设置 sDate 列的抑制显示公式为:
({数据集名.sDate} - {?StartDate}) Mod 7 <> 0
ET2004
2005-01-18
打赏
举报
回复
其实楼主的问题很简单,只是被搞得复杂了。
方法一:在你的强类型 DataSet 上添加一个允许为空的列 Show,Boolean 类型。前面的流程不变,只是在 Merge 完数据之后,做下面这个循环(假设数据集实例是 ds,表名是 Table):
int rows = ds.Table.Rows.Count;
for(int index=0; index<rows; index++)
{
if ((index % 7) ==0)
{
ds.Table.Rows[index]["Show"] = true;
}
}
在水晶报表中,设置 sDate 列的条件深化公式为:{ 表名.Show } == false;
ET2004
2005-01-18
打赏
举报
回复
说些题外话,首先是楼主的程序逻辑。
假设强类型的 DataSet 类名为 myDataSet,是否可以这样理解你的程序逻辑:
myDataSet ds = new (myDataSet);
// 填充一些数据...
DataTable table = getWholeTable(ds.Table, StartDate, EndDate);
ds.Merge(table);
在 getWholeTable 中,循环 StartDate 开始到 EndDate 结束,
如果传入的 DataTable 中某一天有数据,就把数据放到新表中,没有就把 0 放到新表中,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
最后返回这个新表。然后再 Merge 到强类型的数据集中。
注意加了“^^^^”符号的这一行,我觉得程序逻辑就有点问题,既然那一天已经有数据了,为什么还要复制到一个新表中,到最后了又把这个表 Merge 回来?不如只填充没有数据的日期,再 Merge 到原数据集中,完全相同的记录 Merge 有意义吗?
强类型 DataSet -> getWholeTable -> 强类型 DataSet.Merge(返回的 DataTable)
另外:“没有习惯”?除非你是做兼职或者自己当老板 -.- 不过这样你的产品永远都不用维护,因为每次维护都等于重新把软件写一遍。
liulangxin
2005-01-18
打赏
举报
回复
受教,楼上的给我很大的震撼,的确,我的程序有这些问题,平时不太注意
先谢一下
我试一下
liulangxin
2005-01-17
打赏
举报
回复
不好意思,没有习惯~
我自己明白的
其实这是一个datatable,只是后来合并到强类型的dataset,用merge,太急,没有说明白
这个表就是取一个开始日期,一个结束日期,然后根据select的结果(有可能某天没有数据)
现在在表中强行补上,(2004-05-08,0)的结果形式~
ET2004
2005-01-17
打赏
举报
回复
你从服务器资源直接托一个表放到表单上就明白是怎么回事了。
另外,你的方法实在看不太明白,怎么一个字的注释都没有的?以后维护怎么办啊?
ET2004
2005-01-17
打赏
举报
回复
-.-" 你这个不是强类型的 DataSet 吧,都直接使用 DataSet 和 DataTable 了。
强类型的 DataSet 会自动生成类文件的,可以用这个类直接创建对象,这个对象才是强类型的 DataSet 实例。而不是像你的方法一样,直接使用 DataSet 和 DataTable。
还有,字段不是包含在 DataSet 里面的,而是包含在 DataTable 里面,DataTable 属于 DataSet。
liulangxin
2005-01-12
打赏
举报
回复
汗,鄙人实在愚笨,先谢一下
其实我的目的很明确:
通过一个强类型的dataset将数据传到水晶报表
这个dataset包含两个字段: date 和数量
处理这个dataset的函数:(写的不好不要扁我)
public DataTable getWholeTable(DataTable dt,DateTime StartDate,DateTime EndDate)
{
DataTable fillDt=new DataTable("dateandnum");
fillDt.Columns.Add(new DataColumn("sDate",System.Type.GetType("System.DateTime")));
fillDt.Columns.Add(new DataColumn("sNumber",System.Type.GetType("System.Int32")));
DateTime nDate=StartDate;
int sCount=0;
while(true)
{
if(DateTime.Compare(nDate,EndDate)>0)
break;
DataRow dr=fillDt.NewRow();
dr["sDate"]=nDate;
if(dt.Rows.Count>0 && nDate.Equals((DateTime)dt.Rows[sCount][0]))
{
dr["sNumber"]=dt.Rows[sCount][1];
if(sCount<dt.Rows.Count-1)
sCount=sCount+1;
}
else
{
dr["sNumber"]=0;
}
fillDt.Rows.Add(dr);
nDate=nDate.AddDays(1);
}
return fillDt;
}
这张报表其实很简单,就是一个日期和一个数量,横坐标为日期,纵坐标为数量
但是有可能就是某些日子的测量的数量可能为0,但是也要求在图上画一个点
这样日期就有好多(比如,from09-09to10/08有31个日子),在横坐标上的日期有这样一个要求
,以一个礼拜为间隔显示一个日期,比如2004-05-05,下一个要显示的日期就是2004-05-12,但是中间
是有七个点的,
ET2004(ET2004) 说的,如果单纯显示数据的话,可以办到,但是现在问题是日期是横坐标上的值
我曾经试过编辑公式,但是好像不行,可能我水平不够,汗就一个字
诸位,帮帮我把
海峰
2005-01-12
打赏
举报
回复
楼主怎么就不会变通呢,你的日期型字段是不允许为空吗?我只是让你在ds中修改又没有要你修改到数据库,你怎么就不明的呢?????猴急!猴急!猴急!猴急!
在水晶报表中没有的数据就不会显示,按照日期分类与报表显示你就不可以分开处理吗?!!!!!
海峰
2005-01-11
打赏
举报
回复
用一段代码,把你不要显示的日期清空,这你应该会做吧!你只是在ds中操作不返回到数据库,对你的数据是不会有影响的!
海峰
2005-01-11
打赏
举报
回复
有一个简单的方法,在你为报表提供数值的ds中,把不要显示的日期删除掉!
ET2004
2005-01-11
打赏
举报
回复
既然楼主不会举一反三,so...no way...
liulangxin
2005-01-11
打赏
举报
回复
不行,首先日期型字段允许为空,
其次我的横坐标是按照日期分类的,如果没有日期的话,我想不出来会出现什么情况
liulangxin
2005-01-11
打赏
举报
回复
谢谢诸位,我试一下
zouzoujianjian
2005-01-10
打赏
举报
回复
只显示日,不显示年月。就直接在数据集里头设置好了,不就可以了
liulangxin
2005-01-10
打赏
举报
回复
看来没有希望了
ET2004
2005-01-07
打赏
举报
回复
深化公式:RecordNumber Mod 7 <> 1
liulangxin
2005-01-07
打赏
举报
回复
再顶一下,谁来帮帮我啊
ET2004
2005-01-07
打赏
举报
回复
我也只是提供一个思路。首先,我假设你的报表起始日期是通过日期类型的参数传递进来的,而具体的报表日期及数据是从数据库中读取的,那么,将每一天的日期与传递进来的日期参数相减,得到一个差值。用这个差值对7求模,就能得到一个周期性的值。举例如下:
起始日期:2005-1-1
日期........差值..结论
2005-1-1....0.....显示
2005-1-2....1.....不显示
2005-1-3....2.....不显示
2005-1-4....3.....不显示
2005-1-5....4.....不显示
2005-1-6....5.....不显示
2005-1-7....6.....不显示
2005-1-8....7.....显示
结论就是对7取模为 0 的才显示日期,而取模不为0的日期全部抑制显示。
所以文本对象的抑制显示公式是 offset Mod 7 <> 0 (上面用的是记录号,不太好用)
其中,offset 要自己对日期进行相减。
加载更多回复(18)
海波
龙Hyperion HFM 产品 PPT教程.pptx
海波
龙Hyperion HFM 产品 PPT教程.pptx
海波
龙(Hyperion)8.5安装说明
Hyperion 8.5 是
一个
商业智能应用程序,可以对数据进行分析和报表生成。此文档旨在指导用户安装 Hyperion 8.5,并以 Oracle 9i 作为配置库,Tomcat 作为应用服务器。 安装步骤 1. 安装 JDK 1.4.2:Hyperion 8.5 ...
海波
龙planning关系表
它是
一个
关键的表,因为
海波
龙Planning使用数据源来访问和管理底层的数据库。 每个表都可能包含索引字段,这些字段用于提高查询效率。索引可以是Primary Key、Unique Index或者是普通的Index,用于对表中的数据列...
海波
龙产品简介(商务智能,目前归属oracle)
整个
海波
龙产品体系旨在构建
一个
全面的数据管理、分析和决策支持环境,
帮
助企业从海量数据中提炼有价值的信息,推动业务发展。每个产品都有其特定的角色和功能,共同构成了高效的数据智能解决方案。通过理解这些产品...
海波
龙预算培训资料ppt
Hyperion Financial Management是
一个
全面的财务管理和报表解决方案,提供多维分析功能,使企业能集中管理财务信息,缩短业务周期,提高决策质量和灵活性,最大化企业利润。 Hyperion Performance Scorecard则是一...
图表区
4,818
社区成员
14,134
社区内容
发帖
与我相关
我的任务
图表区
.NET技术 图表区
复制链接
扫一扫
分享
社区描述
.NET技术 图表区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章