报表难题(300分)

  • 主题发起人 主题发起人 cddelphi
  • 开始时间 开始时间
C

cddelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
现在需要打印对外贸易统计报表。
报表的表头如下:
代码 品名 单位 国家 合计
数量 金额 数量 金额

报表的表尾如下:
合计 数量合计 金额合计 数量合计 金额合计

其中表头中的国家是从“报关基本信息表”中统计出来的,不是固定的。
具体生成的报表举例如下:
代码 品名 单位 印度 韩国 意大利 伊朗 合计
数量 金额 数量 金额 数量 金额 数量 金额 数量 金额
A1 A kgs 1000 2000 1500 2000 2500 1500 5000 5500
A2 B kgs 5000 1000 5000 1000
A3 C mts 2000 3000 2500 1000 4500 4000
A4 D kgs 3000 4000 5000 1000 8000 5000
A5 E mts 1000 2000 3000 2000 4000 4000
合计 4000kgs 11000 115000kgs 4000 2500kgs 1500 5500mts 3000 265000 195000
3000mts

我现在用的是report builder,请问该怎样完成呢?请大家讲详细一点,急用!非常感谢!
(不知道怎么的,我画的表格线都不见了)
 
唉,用word做的表格一拷贝过来就变样了。我只好再重复:
报表表头如下:
代码 品名 单位 国家 合计
数量 金额 数量 金额
具体生成的报表举例如下:
代码 品名 单位 印度 韩国 意大利 伊朗 合计
数量 金额 数量 金额 数量 金额 数量 金额 数量 金额
A1 A kgs 1000 2000 1500 2000 2500 1500 5000 5500
A2 B kgs 5000 1000 5000 1000
A3 C mts 2000 3000 2500 1000 4500 4000
A4 D kgs 3000 4000 5000 1000 8000 5000
A5 E mts 1000 2000 3000 2000 4000 4000
合计 4000kgs 11000 115000kgs 4000 2500kgs 1500 5500mts 3000 265000 195000
3000mts
 
若想用某一工具生成现成报表,并在需要时直接打印出来恐怕不太现实。
或许可用报表加编程来实现?
在报表的BeforePrint中,设置循环变量i代表国家数;
在ColumnHeader band 和 Detail band 中创建QRLable 和 QRDBText控件, 并设置相关属性;
此法不防一试?
 
这种自动扩展的报表我现在是用F1BOOK做。当然也是用代码控制。
 
请讲详细点,谢谢。
 
大家快来呀!
 
我不断提前,不断期待。。。。。。
 
用Ereport可以解决你的问题
 
1.用RB的CrossTab容易,但结果不大满足你的要求。
或者
2.首先组织好数据,然后动态生成报表,麻烦,但能完全达到你的要求。
 
用fastreport2.41
 
to DJ:谢谢。您可不可以发个动态生成报表的例程过来?我以前没接触过,不知道怎么下手。
to htw,fastreport:可以详细讲讲吗?最好发个相似的程序过来,好吗?
 
用Ehlib吧,它提供的DBGridEh和PrintDBGridEh结合,可以动态设计表头和表尾。功能还有...... 。
自己去看吧!
 
尝试用Formula one6吧,很不错,也很简单就可以实现你的要求,并且很灵活
如果自己编程有许多问题需要考虑,不好解决:
如国家多了,纸张的大小需要改变或者分批打印问题等
 
动态生成报表的例程---ReportBuilder的文档里有
 
to DJ;
多谢!我想在打印报表时动态生成ppLabel和ppDBText,然后给它们赋值。我查找了动态
生成控件的资料,我写了如下代码:
var gj: array of TppLabel;
//动态添加显示国家名称的TppLabel
setlength(gi,m);
for i := 0 to m-1do
begin
gj := TppLabel.Create(self);
gj.Caption :=trim(country);
//给它赋值
end;
//为动态生成的TppLabel控件指定位置
i:=0;
gj.Top :=50;
gj.Left :=100;
gj.Height :=50;
gj.Width :=50;
gj.AutoSize :=true;
gj.Visible :=true;
gj.Font.Size :=12;
gj.Font.Charset :=GB2312_CHARSET;
gj.Font.Color :=clBlack;
gj.Font.Height := -16;
gj.Font.Name :='宋体';
gj.Font.Pitch :=fpDefault;
结果打印时没有显示出来,我想可能是没有加上parent,于是我加上了:
gj.parent:=self;(或form1之类的)
但编译时提示:can not assign to a read-only property,该怎样才能让动态生成的
TppLable显示出来呢?
急用,谢谢!
 
不是指定parent而是Band.
 
to DJ:
试过了,还是不行。
 
to jasper:
用f1book 好象打印预览的什么都不太好,界面不是很好阿.
而且都是e文,上次做了一个,好像客户不太满意..hhe
 
因为很难上来,所以来晚了。为了这个问题,我给很多富翁发了信,他们给了我很多好的
建议,可惜我误删除了所有信件,不能一一感谢他们了,但他们没在论坛回帖,不知道怎
样感谢他们了。
谢谢大家,特别感谢DJ,后来我用了一个笨办法暂时解决了,我先放了几个label,然后赋值的。
这个办法只能不太好,肯定还要找更好的办法的。不过,先把分给了吧。
 
多人接受答案了。
 
后退
顶部