这个问题可否用fastreport解决,如不行,用什么控件可以(50分)

  • 主题发起人 ssss__0002
  • 开始时间
S

ssss__0002

Unregistered / Unconfirmed
GUEST, unregistred user!
我想试图用控件显示下列报表:
日期 收入 发出 结存
期初库存 10000
2月1日 1000 11000
2月3日 2000 9000
2月5日 3000 4000 8000
2月10日 10000 7000 11000

请问高手,如何实现!!!
 
可以做到,用一个变量就可以了呀
但最好是改你的数据库,数据库设置的好点这些就很简单实现了
 
能否说得详细一点,或举个例子
 
基础表: 包括字段:日期,收入,发出,结存
memo里连对应字段数据就可以了
只要你用表把变化情况记录下来就可以了,字段值内容你可以在程序里来完成更新计算
 
当然可以,你可以你可以如上面同志的方法建立一张表,不管他设计的是否符合数据库
原理,但是可以用来达到你的意图呀!
 
FastReport做报表是没问题的
 
FastReport是Delphi平台最好的报表工具,制作你这个,小事...
 
具体一点
 
你先说你现在所实现的报表

和你所希望的有什么不同,这样才好给你帮助
 
我想试图用控件显示下列报表:
日期 收入 发出 结存
期初库存 10000
2月1日 1000 11000
2月3日 2000 9000
2月5日 3000 4000 8000
2月10日 10000 7000 11000

请问高手,如何实现!!!

我的意思是:
“结存”这个字段是计算字段,也就是说是计算出来的,本人现在在线等待,请高手帮帮忙!!!!!!
另有加分!!!!!!!!!!!!
 
本人觉得这是一个SQL的问题,与用什么做报表没有关系。
思路:写一个存储过程。两个参数:BeginDate,EndDate,
语句分两个部分,用Union联接,第一句计算期库存,第二句计算期初到任一时间的结存。
第两句是难点。
我现在手上没有现成的例子,要的话,明天发给你。
 
请caidao发过来吧!
jiany@mail.nbptt.zj.cn
 
qr也可以,delphi自带demo有
 
sql语句如下:

select convert(datetime,'2001-2-3') as '日期',project as '工程',0 as '收支' ,Sum(Inout) as '结存'
from Test_JC
Where Dt < '2001-02-03'
group by project
union all
Select DT as '日期',Project as '工程',Sum(InOut) as '收支',
(select Sum(InOut) from Test_Jc where Dt <= a.Dt and project = a.project) as '结存'
From Test_JC a
where Dt > '2001-02-03' and Dt <= '2001-03-03'
Group by DT,Project
Order by '工程','日期'

运行结果如下:

日期 工程 收支 结存
--------------------------- ---------- ---------------------------------------- ----------------------------------------
2001-02-03 00:00:00.000 a 0 6
2001-02-04 00:00:00.000 a 3 9
2001-03-01 00:00:00.000 a 2 11
2001-03-02 00:00:00.000 a 3 14
2001-02-03 00:00:00.000 b 0 2
2001-02-05 00:00:00.000 b 1 3
2001-03-02 00:00:00.000 b -1 2


表:
if exists (select * from sysobjects where id = object_id(N'[dbo].[Test_JC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Test_JC]
GO

CREATE TABLE [dbo].[Test_JC] (
[Dt] [smalldatetime] NULL ,
[Project] [varchar] (10) NULL ,
[InOut] [numeric](18, 0) NULL
) ON [PRIMARY]
GO


数据如下:

日期 项目 收支
2001-1-1 a 2
2001-1-1 b 1
2001-2-1 a 1
2001-2-1 a 3
2001-2-2 b 1
2001-2-4 a 3
2001-2-5 b 1
2001-3-1 a -2
2001-3-1 a 4
2001-3-2 b -1
2001-3-2 a 3

 
你先说你现在所实现的报表

和你所希望的有什么不同,这样才好给你帮助
 
这种报表在财务系统和物流系统中很常见,
采用caidao的方法,当数据量很大时,速度很慢。
应配合报表控件实现,主要原理:
用变量记住当前库存,
每打印一条记录时计算结存并更新变量。
在fastreport中有一个onGetValue事件,
在QuickReport中有一个onNeedData事件,
可能能够解决你的问题,具体代码忘了。


 
请codesmall大虾给个例子或者发个邮件!
jiany@mail.nbptt.zj.cn
 
codesmall兄的话很有道理,我也就是发现速度太慢,才改为存储过程,勉强应付。
 
请codesmall大虾给个例子或者发个邮件!
jiany@mail.nbptt.zj.cn
在线等待
 
顶部