数据库管理系统中报表打印的后台实现

Author: 陕西 张一快 Date: 1995-12-15

        MSDOS6.2版本中的PRINT命令格式为:
        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命令后使用?或*统配符,就可将许多报表在后台一并输出,这时后台打印更显得十分方便快捷。
        (陕西  张一快)