数据库管理系统中报表打印的后台实现
PRINT [/d:device][/b:size][/u:valuel][/m:value2][/s:timeslice][/q:qsize][/t][d1:][path1]filename[/c][/p]
其中参数/d,/b,/q,/s,/u,/m只能在开机后第一次使用时设置,不能再设,否则出错。我们可把它在汉字系统加载完毕后一次驻留即可,然后在程序中任意调用。例如:
PRINT /d:LPT1 /b:4096 /q:32 /s:32 /u:5 /m:6
表示打印定向到LPT1,打印缓冲区为4096字节,打印队列最多可存储32个文件,打印时间片为20,等侯打印时间最长为5,打印的字符间隔最大值为6。这些参数可根据情况自行设定。关于该命令的详细用法请参考有关手册。
现以2.13H汉字系统下使用FOXBASE+为例,说明如何调用PRINT实现报表的后台打印。由于PRINT只能打印文本文件,所以首先把要打印的表格输出到一个文本文件中,FOXBASE+的SET PRINT TO<文件名>命令恰好能将数据,制表符,控制符一起输出到一个文本文件。然后用RUN命令调用PRINT打印该文本文件即可。示范如下:假如“报表1”共有两页
set talk off
set print on
set device to print
set print to bb1.txt
*将第一页存入bb1.txt文件
@1,1 say chr(27)+'ID'
@1,1 say "报表1"
@2,1 say chr(27)+'Ia'
@2,1 say " "
.生成报表1的表体
.
@30,1 say" "
@31,1 say " "
*输出一空行,次行必不可少
set print to bb101.txt
*将第二页存入bb101.txt文件
@1,1 say chr(27)+'ID'
@1,1 say "报表1 续表01"
@2,1 say chr(27)+'Ia'
@2,1 say " "
.生成报表1的续表的表体
.
@30,1 say " "
@31,1 say " "
set print off
RUN PRINT bb1.txt bb101.txt
set device to screen
RETURN
以上程序在执行后,报表1从后台开始输出,子程序立即返回。
对于换页问题或一页表格不足一张打印纸,可在生成完表体后继续往文本文件后增加适当的空行,调试准确即可。如果文本文件的文件名很规则,还可在PIRNT命令后使用?或*统配符,就可将许多报表在后台一并输出,这时后台打印更显得十分方便快捷。
(陕西 张一快)