起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1255|回复: 38

【搞定】含有累计数据的报表!**

[复制链接]
发表于 2007-10-8 09:03:13 | 显示全部楼层 |阅读模式
图1

1.jpg

93.35 KB, 下载次数: 370

回复

使用道具 举报

 楼主| 发表于 2007-10-8 09:10:43 | 显示全部楼层

图二

我想和图一那样, 每次改变日期的时候,累计的条件是 年份相同,月份<=所选日期的月份。
我是这么做的,对于累计我用了一个标准数据集查询所有的字段,然后对每个字段再对应一个累计 使用了数据集的‘参数’属性定义了 “统计年‘和“统计月”参数,到时候给这两个参数赋值来过滤。对累计字段用sun()函数。累计数据集的条件是:
月份用电情况统计表.填报单位 = :月份用电情况统计表.填报单位1 and 月份用电情况统计表.统计年 = :月份用电情况统计表.统计年1 and 月份用电情况统计表.统计月 <= :月份用电情况统计表.统计月1
。但是现在看来,做出来的效果是:对日期选择后,累计不能刷新,当把鼠标每放进累计的一个字段中时候,才出现一个数据!

2.jpg

51.13 KB, 下载次数: 339

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-8 09:13:12 | 显示全部楼层
我的想法是,改变日期的时候,累计要随之改变,即使当前所选责的月份没有数据,统计的是<=所选月份的数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-8 09:23:46 | 显示全部楼层
procedure TNHJJJZBXX.filterDataSetYFYDQKLJ(tbdw,tjn,tjy:string);
// var whereStr:string;
  begin
       DataSetYFYDQKLJ.Close;
      DataSetYFYDQKLJ.Params[0].asString:=tbdw;
      DataSetYFYDQKLJ.Params[1].asString:=tjn;
      DataSetYFYDQKLJ.Params[2].asString:=tjy;
      DataSetYFYDQKLJ.Open;
      DataSetYFYDQKLJ.refresh;
  end;

procedure TNHJJJZBXX.InfoCreate(Sender: TObject);
var tbdw,tjn,tjy:string ;
var param:TBizParam;
bizURL:TBizURL;
begin
bizURL:=TBizURL.Create;
try
  bizURL.URL:='Biz:\BGZDHXT\YWCSZ1.ParamGroup';
  param:=SystemUtils.TContextUtils.GetParam(Context,bizURL,'TBDW');
  tbdw:=Variants.VarToStr(param.value);
finally
   bizURL.Free;
end;
tjn:=Business.System.SysUtils.IntToStr(DateUtils.YearOf(Business.Data.SysSrv.SysService.Time));
tjy:=Business.System.SysUtils.IntToStr(DateUtils.Monthof(Business.Data.SysSrv.SysService.Time));

filterDataSetYFYDQKLJ(tbdw,tjn,tjy);
end;//初始化参数

procedure TNHJJJZBXX.FIELD_YFYDQKTJSSJ_TJSJExit(Sender: TDataField);
var tbdw,tjn,tjy:string;
begin


       tbdw:=DataSetYFYDQKTJSSJ.FieldByName('tbdw').AsString;
       tjn:=SysUtils.IntToStr(DateUtils.YearOf(Sender.AsDateTime));

       tjy:=SysUtils.IntToStr(DateUtils.MonthOf(sender.AsDateTime));
     //if Business.System.SysUtils.SameText(Field.fieldName,'') then
     filterDataSetYFYDQKLJ(tbdw,tjn,tjy);//过滤累计

     //
      DataSetYFYDQKTJSSJ.SQLFilter:='  tbdw='''+DataSetYFYDTJGL.fieldByName('tbdw').asString + ''' and tjn='''+tjn+''' and tjy='''+tjy+'''';
      DataSetYFYDQKTJSSJ.SQLFiltered:=true;//过滤本月

end;//我在焦点退出时间后,对累计和本月数据进行过滤
回复 支持 反对

使用道具 举报

发表于 2007-10-8 10:03:05 | 显示全部楼层
呵呵,描述的还真多,但看的有点糊涂。想跟你确认一下
回复 支持 反对

使用道具 举报

发表于 2007-10-8 10:03:25 | 显示全部楼层
补充5楼
1、5楼的代码,贴出来啥意思?你设置断点跟踪了吗?按你的要求在执行吗?如果没有跟踪,请跟踪一下

2、 3楼说 “改变日期的时候,累计要随之改变,即使当前所选责的月份没有数据,统计的是<=所选月份的数据”这是5楼代码执行后的效果马?

3、那2楼呢?“  但是现在看来,做出来的效果是:对日期选择后,累计不能刷新,当把鼠标每放进累计的一个字段中时候,才出现一个数据!”也是5楼执行代码后的效果?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-8 10:14:11 | 显示全部楼层

我给你导出资源你给我看看!

我的想法是:当改变时间字段的使用 累计 和本月 都要随着改变。 并且累计的是<=所选月份。 无论是对 图a中时间的选择,还是对图B中时间的选择都要达到这个效果!

图a.jpg

4.3 KB, 下载次数: 333

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-8 10:14:53 | 显示全部楼层
图B

图B.jpg

3.85 KB, 下载次数: 326

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-8 10:15:52 | 显示全部楼层

BRP

BRP
回复 支持 反对

使用道具 举报

发表于 2007-10-8 10:19:34 | 显示全部楼层
按你的思路我做了个例子,好像没问题

11.rar

1.37 MB, 下载次数: 181

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-1 01:10 , Processed in 0.054703 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表