怎么显示报表程序里非数据库字段的数据?(100分)

L

liq728

Unregistered / Unconfirmed
GUEST, unregistred user!
如: 字段1, 字段2
记录1 aa , 1
记录2 bb , 2
记录3 cc , 4
报表显示的是上面这个表,但我还有另外的结构要显示,
记录1时,显示 111,
记录2时,显示 工人,
记录3时,显示 电子,
不用跟我讲用两表联接的方法,那不合用!
请问有什么方法可以做到,且这个方法在哪个控件的哪个事件中写?
 
用计算字段
 
你可以定义一个变量,eg: idx:integer
在DetailBand的beforeprint里加上代码控制
inc(idx);
case idx of
1:...(显示 111)
2:...(显示 工人)
3:...(显示 电子)
end;
 
用case when then
end
 
我晕,robinwang的方法怎么行呢,可能是我举的例子不太好吧,误导你们了,
事实上是我要显示的数据是根据字段2来的,而且有几千条记录呢要显示呢.~
对了,我还想问一下,TQRDBText的值是什么呀?
TQRDBText.Text又不存在,TQRDBText.Caption取出来的值却是跟TQRDBText.DataField
是相同的值.
 
记录1时,显示 111,
记录2时,显示 工人,
记录3时,显示 电子,
这样的对应是有限的,还是不可预知的
 
当然是不可预知的嘛`~
 
在上面放一个标签,然后在程序运行时动态的给标签赋值
 
可是你为什么不能用多表连接呢?这是最容易的解决办法了,而且效率也最高。
 
liq728,今天早点回家,到了给我电话
 
如果报表用的是Qreport的话,可以在Onneeddata事件中写入数据
我的报表一般不用Db...控件,数据全部在该事件中手动写入
 
请问ctx62,你有没有类似源代码`~
LIUYING771129,知道了`~
 
在Field.GetText事件中编写程序完成转换.
begin
if Sender.Value ='1' then
Text:='...';
if Sender.Value ='2' then
Text:='...';
if Sender.Value ='3' then
Text:='...';
end;
 
弟兄们发点源码来抢手呀`~
 
在qreport上放来Qlabel显示非数据库字段
private
idx:integer;//记录指针
onbeforeprint 事件
begin
idx:=0;
query1.first;
end;

onneeddata 事件
begin
case idx of
0: qrlabel1.caption:='111';
1:qrlabel1.caption:='工人';
2:qrlabel1.caption:='电子';
end;
inc(idx);
query1.next;
moredata:=idx<query1.recordcount;
end;

试试吧,我没调试。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
632
SUNSTONE的Delphi笔记
S
S
回复
0
查看
607
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部