报表问题(不同区域对应不同的table)急!!!!!(100分)

  • 主题发起人 主题发起人 welspring
  • 开始时间 开始时间
W

welspring

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
本人现在做如下结构的报表,用的是qreport,苦于无法实现不同区域对应不同的table.请各位执教。
———————————————————————
Table1
———————————————————————
Table2 | Table1
|
———————————————————————
Table3
———————————————————————
项目急于完工,请各位大虾不吝赐教!!如果您指出使用其他的报表工具能够实现也可以。谢谢!
 
不知這几個table之間有沒有關係
 
各表之间是有关系的,其中Table2和Table3都与Table1通过两个字段连接,并且这两个字段是table1的关键字。
如:
Table1:
T1_key1 T1_key2 word1 word2 word3
Table2:
T2_key T1_key1 T1_key2 word4
Table3:
T3_key T1_key1 T1_key2 word5 word6
谢谢各位大虾的回复,在线等待您的回答!不胜感激!
 
Table2 | Table1 這個不好實現! 你怎麼做這種怪表呢?
|
 
没有办法,客户要求这样,不这样紧缩的话,A4纸就盛不下了。大家帮忙吧!
乞求ing!
 
将报表的内容全部放在Text里面,然后根据你的几个Table的内容动态创建QRLabel就可以了
 
首先谢谢各位的回复,关于hds6400的回答,我也曾经想过此方法来解决,但是我的报表中有太多的行和列,若动态的创建label,可能工作量太大,不知道您说的方法怎样实现,能否给解释一下?谢谢!
 
1。定义一个过程创建QRLable;
procedure CreateLabel(CapText:string;nTop,nLeft:Integer);
var
QRL:TQRLabel;
begin
QRL:=TQRLabel.Create(Self);
with QRLdo
begin
Font.Name := '宋体';
Font.Size := 10;
Parent := QRL_Name.Parent;
TransParent := True;
Top := nTop;
Left := nLeft;
Caption := CapText;
end;
end;
2。由于你的报表中的值都是从Table中获得,可以循环创建
Table1.First;
while not Table1.Eofdo
begin
for i:=0 to Table1.FieldCount-1do
CreateLabel(Table1.Fields.AsString,Top,left);
//这里坐标需要自己计算
Table1.Next;
end;
 
首先感谢hds6400的回答,您的解释进本满足了我的报表要求,但是在上述的一个带显示两张表时,其中带中的每行数据都是带网格线的,而且左边的Table2是横排数据,右边的Table2竖排数据。如下:
Table2 | Table1
______________________________________________________________________________
T2_key | word1 | word2 | word3 | T1_key1 | T1_word1 | 。。。|T1_word2 |。。。
------------------------------------------------------------------------------
。。。| 。。。|。。。 | 。。。| 。。。 | T1_word3 | 。。。|T1_word4 | 。。
----------------------------------------------------------------------------
。。。| 。。。|。。。 |。。。 | 。。。 | T1_word5 | 。。。。。。。。。
------------------------------------------------------------------------------
上图中基本表达了我的意思,主要是得显示网格线。如果如您所说,动态创建label,好像网格线的对应情况变得不太一致,不知道您又没有解决方法。无论如何,再次谢谢您的回答!
谢谢!
 
我的方法是把报表做成一人单独的界面, 为该界面做一个临时的数据集,然后就能很方便的处理相应的字段!
不知你用的是不是c/s
 
运用同样的方法创建QRShape,当创建竖线的时候将Shape属性设置为qrsVertLine,然后将
Width设置为5或一个更小的值,Height设置为您每一行的高度,再设置Top和Left就可以了,至于横线类似竖线,但可以每一行只创建一条.
 
各位:
这里还有一个问题是,table1 和table2之间是有关系的,如果采用将table1 和table2进行连接后得到一个大表,则这个大表的关键字变成两个标关键字的和。举实际例子;
Table1:(关键字:T1_key1 T1_key2)
T1_key1 T1_key2 T1_word1 T1_word2
---------------------------------
I69 1 k34 20cr
I71 3 x5 34si7
----------------------------------
Table2:(关键字:T2_key T1_key1 T1_key2)
T2_key T1_key1 T1_key2 T2_word1 T2_word2
------------------------------------------
01 I69 1 0.13 0.3
02 I69 1 0.24 0.8
01 I71 3 0.2 0.6
02 I71 3 0.67 0.16
--------------------------------------------
连接后的大表:Table3:(关键字:T2_key T1_key1 T1_key2)
T1_key1 T1_key2 T2_key T1_word1 T1_word2 T2_word1 T2_word2
---------------------------------------------------------
I69 1 01 k34 20cr 0.13 0.3
I69 1 02 k34 20cr 0.24 0.8
I71 3 01 x5 34si7 0.2 0.6
I71 3 02 x5 34si7 0.67 0.16
----------------------------------------------------------
在前面所示的帖子中,其实table2区域对应的数据是根据查询table1后
得到的,而且在table2区域是将对应table1的所有数据列出,而非将大
表中的数据一条一条的列出。最终的报表格式是:
---------------------------------------------
T1_key1: I69 | T1_key2 :1
--------------------------------------------
T2_key t2_word1 t2_word1 | T1_word1: k34
01 0.13 0.24 | T1_word2: 20cr
02 0.3 0.8 |
----------------------------------------------
有点像subdetail,但是subdetail一个带中有不能分成两块?
这样的问题该如何解决?感谢您的回复!
 
下载演示程序 http://zhangxzh.nease.net/down/Demo.EXE
zhxzhboy@163.com
 
zhangxzh请问您使用的是什么报表工具?
 
F1book 封装了一个类,专门制作不规则报表
 
但是不知道怎样实现您的F1book,或者说如何调用?
 
msn 加入好友 zhxzhboy@163.com 聊天
 

Similar threads

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