谁能解决这个问题,700分相送!决不食言。(100分)

  • 主题发起人 咕咕咕
  • 开始时间

咕咕咕

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在正在用quickrep做一报表,格式如下:
类别 项目 上月库存 本月增加 本月减少 本月库存 金额 备注
IP 30
IP 50
.....
小计
165 100
165 50
.....
小计
...... .......
合计
要求:1、类别数和各类别的项目数为动态
2、小计为同一类别不同项目的累计,合计为不同类别的累计
3、本月库存=上月库存+本月销售-本月退库
本月销售从money表中读取,本月退库从backcross表中读取
4、本月减少=本月销售-本月退库
本月增加从enter表中读取
谁能解决了这个问题,700分相送,有兴趣的也可以参加这一问题的讨论,都有分相送。
 
因沒用過quickrep,所以下面的話都是從ReportBuilder角度出發分析:
從小計與合訂來看首先這個一個分組的問題,隻需設一小計的分給就可將你的小計與合計搞定
合計即統計所有的記錄,不需要分組直接Sum字段就可以了,小計隻加個Group by也沒問題了
上月库存 本月增加 本月减少 本月库存 金额 备注
這些字段在查詢語句中不成問題。
另:問一下,你的上月庫存數據從何而來,如果從上月的本月庫存中取,那麼第一次新增該
表的時候就有問題了,隻要解決了上月庫存的表取向就沒什麼
 
1、2、select 类别 ,COUNT(类别) as typeNum,sum(项目) as projectNum from youtable group by 类别
 
To bes96261:
上月库存字段在库里边是没有的,至统计开始日期所有的入库-所有的销售+所有的退库得到
这个不难解决,不过项目数是不固定的,项目这一列的内容用qrdbtext就无法显示,这个问题
怎么解决呢?
 
写错了
应该是query1。SQL。ADD('select 类别 ,count(项目) as 项目数量,sum(项目) as 小计,sum(*) as 合计 from youtable group by 类别

 
其中RecordCount就是类别数目
项目数量 就是 项目数量
 
這好像不是問題吧,我看你列出的要求對報表的字段已固定為以下幾列:
类别 项目 上月库存 本月增加 本月减少 本月库存 金额 备注
... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ...
... ... ... ...
隻是多了幾行內容罷了
另外如果你的列頭無法及數據源無法確認,你可以採用動態創建報表格式創建
 
To wjsmes:
因为是动态报表,所以小计的内容,包括‘小计’这一qrlabel都只能是动态创建,实际是不存在的。
 
To bes96261 :
不错,就是因为多了这几行我才不知道怎么办了,你能不能说的详细一点,谢谢了!
 
我知道啊,所以才把他用sum()算出来
 
To wjames:
你是算出小计的值,但是小计这一行的动态控件应该怎样创建,以及怎样确定其位置,
你能说的详细一点吗
 
你看是不是要下面这种样子
类别 项目 ....... ...... ........
1 a 13 23 5
1 a 2 1 2
-----------------------------
小计 15 24 7
-----------------------------
2 b 2 10 11
2 b 5 11 10
-----------------------------------------------------------
小计 7 21 21
------------------------------
合计 22 45 28
 
To shbjkl:
yes,yes!
 
这种问题用临时表作应该不难实现,把你要实现的格试全都插到临时表里。连“小计”这个
词都插进去。总之就是所格试都用临时表实现就可以了。你试试
 
建立一个专门用于打印的 Table
打开时动态构造这个表。
 
各位老兄,谁有这方面的例子给发一个吧,或者这方面的代码也行,我现在很急呀!
Email:zhangjinwei_52@inhe.net
 
这就没问题了
你可以只按如下方法做:
1。建立一个表 表的内容大至如下:
类别 、项目、 上月库存 本月增加 本月减少 本月库存 金额 备注
2。用sql计算出 各个列的值
3。建报表
groupheader
groupheader 按 类别
detail
footer sum()
pagefooter sum()
 
各位老兄,谁有这方面的例子给发一个吧,或者这方面的代码也行,我现在很急呀!
Email:zhangjinwei_52@inhe.net
 
這是我用ReportBuilder做的一個中的打印控制列頭的函數(我這打印時的列最多己固定,你如要動
態創建報表時,將賦值代碼改為創建代碼,然後設置數據源),打印的代碼與此原理差不多:供參考:
Procedure TdfrmProc_Mrp.SetProc_PrintBes(Gridname:TDBGrid);
//打印控制(生成打印數據,控制打印位置)
var I,J:integer;
begin
J:=0;
for I := 0 to ComponentCount - 1do
begin
IF ( Components is TppLabel ) and ((Components as TppLabel).Tag=5) then
begin
if ((J+8)<=(Gridname.Columns.Count-1)) then
(Components as TppLabel).Caption:=Gridname.Columns[J+8].Title.Caption
else
(Components as TppLabel).Caption:='';
J:=J+1;
end;
end;
end;
 
这是一个简单的2层报表
关键部分就在把各个列的值计算出来
不要偷懒哟
 
顶部