求一完整的动态报表制作 (200分)

  • 主题发起人 主题发起人 hqlww
  • 开始时间 开始时间
H

hqlww

Unregistered / Unconfirmed
GUEST, unregistred user!
最近想做一个复杂一点的报表,完全动态的,现在已经在DBgrid中实现了(电脑编程技巧与维护杂志2002年12期中有)
但是如何实现到报表形式,我就不知道了。
品牌表:Brand
Brandid Brandname
11 松下
12 科健
13 西门子
14 熊猫
公司表:Branch
Branchid Branchname
101 长电
102 新潮
103 仪表
销售表:Income
Branchid Brandid number
101 11 3
101 12 5
102 12 4
101 14 15
102 13 4
102 14 7
103 11 4
103 13 8
103 14 8
制作成的报表为:
公司编号 公司名称 松下 科健 西门子 熊猫 合计
101 长电 3 5 0 15 23
102 新潮 0 4 4 7 15
103 仪表 4 0 8 8 20
总计: 7 9 12 30 58
希望展开讨论这个问题,至于能实现到什么程度,看我们讨论人员的水平。
看到了请提前。本人原来是用这个分提问的,后来自己解决了。 使用的控件不限制,只要能实现功能。
最好就是用QReport
 
问:
当发票数量与实际没有发票的数量不相等时
发票数量加给那个送货单
如:
实物入库,表形式为
送货单号 物资代码 入库数量 发票数量 无发票数量 发票状态
1 11 5 0 5 false
1 12 6 0 6 false
2 11 3 0 3 false
当发票来了以后,发票上的数据为
发票号 物资代码 发票数量
123 11 7
123 12 6
实物入库那个表变成怎样?
请细说
 
To KOKS
送货单号 物资代码 入库数量 发票数量 无发票数量 发票状态
1 11 5 5 0 true
1 12 6 6 0 true
2 11 3 2 1 false
暂时只考虑数量相等的情况
 
存储过程是否执行一次?
 
是否可以贴出你的存储过程代码?
 
斑竹不欠你的分,再用来提问其他的问题吧
 
本人利用游标已经处理好发票数量与无发票数量相等的情况,但是现在又需要将不相等的情况
发票数量大于无发票数量仓库管理是不可以的,但是发票数量小于无发票数量,正如KOKS所提到的
那样,请问这样的功能怎么实现呢?
 
CREATE TRIGGER t_i_rkmx ON [dbo].[WzRkMx]
FOR INSERT,update
AS
begin
declare @m_sl numeric(12,4),@m_wzdm char(20),@m_khdwdm char(20),@m_fpcount numeric(12,4)
declare @m_pre char(10),@wzdm char(10),@kh char(10),@fp numeric(12,4),@nofp numeric(12,4),@fps bit

DECLARE p CURSOR for select wzdm,khdwdm,fpcount FROM inserted
OPEN p
FETCH NEXT FROM p into @m_wzdm,@m_khdwdm,@m_fpcount
WHILE @@FETCH_STATUS = 0
begin
select @m_sl=sum(nofpcount) from prerkd where wzdm=@m_wzdm and khdwdm=@m_khdwdm and fpstate=0 group by wzdm
if @m_sl=@m_fpcount
update prerkd set fpcount=nofpcount ,nofpcount=0,fpstate=1 where wzdm=@m_wzdm and khdwdm=@m_khdwdm and fpstate=0
if @m_sl>@m_fpcount
begin
--已收数量不等于发票数量(先进先修改)
declare q cursor for select prerkdno,wzdm,khdwdm,fpcount,nofpcount,fpstate from prerkd where wzdm=@m_wzdm and khdwdm=@m_khdwdm and fpstate=0 order by prerkdno
open q
fetch next from q into @m_pre,@wzdm,@kh,@fp,@nofp,@fps
while @@fetch_status=0
begin

if @m_fpcount>@nofp
begin

update prerkd set fpcount=nofpcount,nofpcount=0,fpstate=1
end
else
update prerkd set fpcount=@m_fpcount,nofpcount=nofpcount-@m_fpcount
set @m_fpcount=@m_fpcount-@nofp
select @m_fpcount
if @m_fpcount<=0
break
fetch next from q into @m_pre,@wzdm,@kh,@fp,@nofp,@fps
end
close q
deallocate q
end

--select prerkdno,wzdm,khdwdm,wzcount,fpcount,nofpcount,fpstate,sl=@m_sl into #ls from prerkd order by prerkdno where wzdm=@m_wzdm and khdwdm=@m_khdwdm and fpstate=0

FETCH NEXT FROM p into @m_wzdm,@m_khdwdm,@m_fpcount
END
CLOSE p
DEALLOCATE p
end
 
请看过的富翁们留个言,是感觉太容易,还是……我已经写了两天了,但是结果总不是正确的
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部