VFP的报表打印功能解决方案

VFP的报表打印功能
以前我都是用如下指令打印
set   print   on  
set   devi   to   print
@1,0   say   文本行1
@2,0   say   文本行2
...
...
...
eject
set   print   to
set   print   off
set   deve   to   scree
其中文本行中有数据表的内容。

现在我想用报表打印实现,可选择打印机和打印纸,并可预览。请问报表打印的系列命令有哪些?

------解决方案--------------------
REPORT FORM 命令
请参阅

显示或打印一个由报表定义(.frx)文件指定的报表。该定义文件是由 CREATE REPORT 或 MODIFY REPORT 之类的命令所创建的。

REPORT FORM 命令也可以识别 Visual FoxPro 标签文件(lbx 格式)并像报表文件一样处理。你也可以使用 REPORT FORM 来运行以前在 FoxPro for MS-DOS 中创建的基于字符方式的报表文件。


REPORT FORM FileName1 | ? [ENVIRONMENT] [Scope]
[FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
[RANGE nStartPage [, nEndPage]]
[HEADING cHeadingText] [SUMMARY] [NORESET] [PLAIN]
[NOCONSOLE | OFF] [PDSETUP]
[NAME ObjectName]
[OBJECT oReportListener | TYPE iExpression]
[TO OutputDestination [NODIALOG]]
[PREVIEW [PreviewDestination] [NOWAIT] [WINDOW WindowName]]


参数
FileName1 | ?
指定一个报表定义(.frx)文件的名称或者显示一个打开对话框以便你从中选择一个 .frx 文件。默认情况下,报表显示在当前输出窗口中。 注意:
报表文件的默认扩展名是 .frx。如果这个 .frx 文件不在当前目录或文件夹下,则你必须包括它的路径名。从 Visual FoxPro 7.0 开始,当你使用了 TO 子句时,FileName1 会包含在状态消息框中。如果你不希望它出现,请参见 对 TO 子句的描述。
 

[ENVIRONMENT]
即使 AutoOpenTables 属性被设置成假值(.F.),它也会打开并恢复该报表的数据环境中已定义的所有表和表之间的关联。 注意:
ENVIRONMENT 关键字是为兼容性保留的,例如,报表是从一个早期版本的 FoxPro 中转换过来的时候。
 
要恢复与一个 Visual FoxPro 报表关联的数据环境,请设置数据环境的 AutoOpenTables 属性为真(.T.) (默认值)。要确保报表运行结束时报表环境被关闭,请设置数据环境的 AutoCloseTables 属性为真(.T.) (默认值)。更多的信息,请参见 AutoOpenTables 属性 和 AutoCloseTables 属性。
[Scope]
指定报表要处理的记录范围。报表只会处理指定所用于范围内的记录。 注意:
当你包含了一个 Scope 子句时,这个作用域操作符只对当前活动工作区起作用。
 
下面的表格列出了可能的 Scope 值。 作用域 说明
ALL
包括所有记录。(默认值)

NEXT nRecords
包含从当前记录开始的以下 nRecords 条记录。

RECORD nRecordNumber
只包含指定的记录。

REST
包含从当前记录开始直到最后的一条记录。

有关作用域子句的更多信息,请参见Scope 子句。
[FOR lExpression1]
只有当逻辑表达式 lExpression1 计算值为真时的那些记录将被打印。通过使用 FOR 子句,可以排除你不希望打印的记录。 提示:
如果 lExpression1 是一个可优化的表达式,Rushmore 查询优化器会优化带 FOR 子句的 REPORT FORM 命令。为了得到最佳性能,请使用一个可优化的 FOR 子句。更多的信息,请参见 SET OPTIMIZE 和 使用 Rushmore 查询优化来加速数据访问。

[WHILE lExpression2]
只打印当逻辑表达式 lExpression2 计算值为真(.T.)时的数据。
[NOOPTIMIZE]
禁止对 REPORT FORM 命令使用 Rushmore 优化。更多的信息,请参见 SET OPTIMIZE 和 使用 Rushmore 查询优化来加速数据访问。
[RANGE nStartPage [, nEndPage]]
指定要打印或其它输出方式的页号范围。nStartPage 参数指定要打印的第一页,打印直到 nEndPage 参数指定的最后一页为止。如果省略 nEndPage 参数, 最后一页的默认值是 32,767。 注意:
RANGE 子句选择要输出的页,作用域子句 FOR,WHILE 选择记录。如果你选择了打印预览,这些选择标准不会起作用,除非你 通过 OBJECT 子句或 SET REPORTBEHAVIOR 90 命令指定了对象-辅助模式。在对象-辅助模式下,你既可以在原始的 REPORT FORM 命令中使用所有的 RANGE 子句,也可以指定要打印的页范围子集(使用 ReportListener.CommandClauses 的 PrintPageCurrent,PrintRangeFrom,以及 PrintRangeTo 成员)。更多的信息,请参见 OnPreviewClose 方法。
 

[HEADING cHeadingText]
指定要做为一个附加题头放置在报表每一页上的文本。如果你同时包含了 HEADING 子句和 PLAIN 关键字,PLAIN 关键字优先处理。
[SUMMARY]
禁止打印细节行,这样就会只打印合计和子合计项目。
[NORESET]
指定不重置 _PAGENO 和 _PAGETOTAL 系统内存变量。当前报表将使用这两个变量的当前值做为起始值。更多的信息,请参见 _PAGENO 系统内存变量 和 _PAGETOTAL 系统内存变量。 注意:
如果你同时使用了 NORESET 和 RANGE 关键字,你必须预先计算哪些页要打印。
 

[PLAIN]
禁止打印除报表开始时以外的所有页题头。
[NOCONSOLE | OFF]
在打印报表或将它发送给一个文件时,禁止在 Visual FoxPro 主窗口或一个用户定义窗口中显示它的内容。 注意:
当你使用 Visual FoxPro 9.0 的对象-辅助输出模式时,REPORT FORM 不会在当前输出窗口中显示你的报表内容,所以 NOCONSOLE 和 OFF 关键字对原始的行为没有影响。但是,该关键字可以在ReportListener 对象的 CommandClauses 中使用。你可以在你的报表监听器派生类中测试它们,并可选的禁止显示报表内容或其它基于这些内容的用户反馈。更多的信息,请参见 CommandClauses 属性。
 

[PDSETUP]
装入一个打印机驱动设备设置。可以包含 PDSETUP 为创建于 FoxPro for MS-DOS 的基于字符的报表使用一个打印机驱动程序设置。当你在 Visual FoxPro 中创建了基于图形的报表时,PDSETUP 将被忽略。