报表打印空字段以及空格的问题(150分)

P

plzh

Unregistered / Unconfirmed
GUEST, unregistred user!
在报表打印时如何将其中的某几个字段空出来不打印,而其他几字段照常
打印.如:
-----------------------------------------
| field1 | field2 | field3 | field4 |
_________________________________________
| a | b | 空 | 空 |
-----------------------------------------
| a1 | b1 | 空 | 空 |
-----------------------------------------
| a2 | b2 | 空 | 空 |
-----------------------------------------
| | | | |<<-空格填充
----------------------------------------
| | | | |
-----------------------------------------
如果打印完成后,本页未充满, 则以空格充满.不知我应该怎样做?
请各位不惜赐教.
 
在SQL中设法加入空记录。
 
空字段:
sql使用select field1, field2, "" as field3, "" as field4 from table1
空行:
不知你使用什么报表打印构件?
 
我用的是TQuickRep.
 
我按cytown的方法。DELPHI给出如下错误提示:
Query1:type mismatch for field 'field3',
excepted: smallint ,actual:string;
我用的是paradox 表
 
try this->
select field1, field2, "" as "field3", "" as "field4" from table1
if not function try replace field3 as field3a and field4 as field4a
 
field3, field4 的类型都是smallint.
 
cytown 你能说的更详细一点吗?
 
select field1, field2, 'field3', 'field4' from table1
 
如果按这种方法:
select field1,field2,"" as "field3",""as "field4" from table1
提示的错误是:
invalid use keyword Token: ,“”;
如果这样:
select field1,field2,"field3","field" from table1
错误是:

Query1:type mismatch for field 'field3',
excepted: smallint ,actual:string;

 
啊,不可能, 是不是应当使用单引号?
否则引号间加一个空格试试.
本身语句绝对没错误!
再不行, try replace field3 as field3a and field4 as field4a!
 
第一个问题我已经解决了,我是这样做的:
在打印预览时使QRDBText3.datafield:='';
不过我又发现一个新问题,我将纸张类型设为B5,上空10.0mm下空10.0mm
可是打印、预览时不会自动换页——系统给定的一页的内容超出了实际纸张的大小。
有没有解决的办法?(我只想用Quickreport)

 
第一个问题的答案我接受了.
那第二个问题的答案呢?
 
设置printifempty=true试试
 
我的第二个问题是用空网格将剩余的页面添充满。
 
第一个问题,我个人认为在qrband.beforeprint中控制更好。直接控制qrlabel
或者qrDBText的visible不就好了?不涉及任何数据库的问题。
区区一行。
qr2.x以后,reDBText的visible属性取消了,好像是Enable了。或者狠一点
left:=200000;
第二个问题,你的想法不是很对,应该是控制QrBand,使得每页只打印你需要的
内容,你总是有分隔条件的吧?这一页要填充不就是为了下一页放在开头吗?
根据条件,自己利用qrband.forceNewPage吧。
windows和dos不一样啊!quick report的思路已经不是行式打印机的思路了。
 
那第二个问题怎么解决呢?为什么没有人回答呢?
 
用ReportBuilder Pro可不可以方便的追加网格?
 
We havedo
ne many work like you.
Our method is
1, Create one temp table
2, insert into the value from the Result of SQL
3, Calculate the record num
4, Append the space record until the last page full
5, print
If youdo
n't need print 0 instead of ''
you cando
like this:
in the temp table , uses Fields Editor
in the field event (OnGetText)
Add:
if Sender.AsInteger=40 then
Text:=''
else
Text:=IntToStr(Sender.AsInteger);
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
666
import
I
顶部