VFP报表为什么会闪退

 我来答
匿名用户
2016-06-28
展开全部
显示或打印一个由报表定义(.frx)文件指定的报表。该定义文件是由CREATEREPORT或MODIFYREPORT之类的命令所创建的。REPORTFORM命令也可以识别VisualFoxPro标签春旁纤文件(lbx格式)并像报表文件一样处理。你也可以使用REPORTFORM来运行以前在FoxProforMS-DOS中创建的基于字符方式的报表文件。REPORTFORMFileName1|?[ENVIRONMENT][Scope][FORlExpression1][WHILElExpression2][NOOPTIMIZE][RANGEnStartPage[,nEndPage]][HEADINGcHeadingText][SUMMARY][NORESET][PLAIN][NOCONSOLE|OFF][PDSETUP][NAMEObjectName][OBJECToReportListener|TYPEiExpression][TOOutputDestination[NODIALOG]][PREVIEW[PreviewDestination][NOWAIT][WINDOWWindowName]]参数FileName1|?指定一个报表定义(.frx)文件的名称或者显示一个打开对话框以便你从中选择一个.frx文件。默认情况下,报表显示在当前输出窗口中。注意:报表文扒仿件的默认扩展名是.frx。如果这个.frx文件不在当前目录或文件夹下,则你必须包括它的路径名。从VisualFoxPro7.0开始,当你使用了TO子句时,FileName1会包含在状态消息框中。如果你不希望它出现,请参见对TO子句的描述。 [ENVIRONMENT]即使AutoOpenTables属性被设置成假值(.F.),它也会打开并恢复该报表的数据环境中已定义的所有表和表之间的关联。注意:ENVIRONMENT关键字是为兼容性保留的,例如,报表是从一个早期版本的FoxPro中转换过来的时候。 要恢复与一个VisualFoxPro报表关联的数据环境,请设置数据环境的AutoOpenTables属性为真(.T.)(默认值)。要确保报表运行结束时报表环境被关闭,请设置数据环境的AutoCloseTables属性为真(.T.)(默认值)。的信息,请参见AutoOpenTables属性和AutoCloseTables属性。[Scope]指定报表要启雹处理的记录范围。报表只会处理指定所用于范围内的记录。注意:当你包含了一个Scope子句时,这个作用域操作符只对当前活动工作区起作用。 下面的表格列出了可能的Scope值。作用域说明ALL包括所有记录。(默认值)NEXTnRecords包含从当前记录开始的以下nRecords条记录。RECORDnRecordNumber只包含指定的记录。REST包含从当前记录开始直到最后的一条记录。有关作用域子句的信息,请参见Scope子句。[FORlExpression1]只有当逻辑表达式lExpression1计算值为真时的那些记录将被打印。通过使用FOR子句,可以排除你不希望打印的记录。提示:如果lExpression1是一个可优化的表达式,Rushmore查询优化器会优化带FOR子句的REPORTFORM命令。为了得到最佳性能,请使用一个可优化的FOR子句。的信息,请参见SETOPTIMIZE和使用Rushmore查询优化来加速数据访问。[WHILElExpression2]只打印当逻辑表达式lExpression2计算值为真(.T.)时的数据。[NOOPTIMIZE]禁止对REPORTFORM命令使用Rushmore优化。的信息,请参见SETOPTIMIZE和使用Rushmore查询优化来加速数据访问。[RANGEnStartPage[,nEndPage]]指定要打印或其它输出方式的页号范围。nStartPage参数指定要打印的第一页,打印直到nEndPage参数指定的最后一页为止。如果省略nEndPage参数,最后一页的默认值是32,767。注意:RANGE子句选择要输出的页,作用域子句FOR,WHILE选择记录。如果你选择了打印预览,这些选择标准不会起作用,除非你通过OBJECT子句或SETREPORTBEHAVIOR90命令指定了对象-辅助模式。在对象-辅助模式下,你既可以在原始的REPORTFORM命令中使用所有的RANGE子句,也可以指定要打印的页范围子集(使用ReportListener.CommandClauses的PrintPageCurrent,PrintRangeFrom,以及PrintRangeTo成员)。的信息,请参见OnPreviewClose方法。 [HEADINGcHeadingText]指定要做为一个附加题头放置在报表每一页上的文本。如果你同时包含了HEADING子句和PLAIN关键字,PLAIN关键字优先处理。[SUMMARY]禁止打印细节行,这样就会只打印合计和子合计项目。[NORESET]指定不重置_PAGENO和_PAGETOTAL系统内存变量。当前报表将使用这两个变量的当前值做为起始值。的信息,请参见_PAGENO系统内存变量和_PAGETOTAL系统内存变量。注意:如果你同时使用了NORESET和RANGE关键字,你必须预先计算哪些页要打印。 [PLAIN]禁止打印除报表开始时以外的所有页题头。[NOCONSOLE|OFF]在打印报表或将它发送给一个文件时,禁止在VisualFoxPro主窗口或一个用户定义窗口中显示它的内容。注意:当你使用VisualFoxPro9.0的对象-辅助输出模式时,REPORTFORM不会在当前输出窗口中显示你的报表内容,所以NOCONSOLE和OFF关键字对原始的行为没有影响。但是,该关键字可以在ReportListener对象的CommandClauses中使用。你可以在你的报表监听器派生类中测试它们,并可选的禁止显示报表内容或其它基于这些内容的用户反馈。的信息,请参见CommandClauses属性。 [PDSETUP]装入一个打印机驱动设备设置。可以包含PDSETUP为创建于FoxProforMS-DOS的基于字符的报表使用一个打印机驱动程序设置。当你在VisualFoxPro中创建了基于图形的报表时,PDSETUP将被忽略。[NAMEObjectName]指定一个与报表的数据环境关联的对象变量名。注意:数据环境以及数据环境中的对象拥有属性和方法,例如像AddObject方法,可以在运行是设置或调用它们。对象变量用于提供对这些属性和方法的访问。 如果你省略了NAME子句,VisualFoxPro使用报表文件的名字替代它,可以在相关事件的代码中引用它。[OBJECToReportListener|TYPEiExpression]调用VisualFoxPro的对象-辅助输出模式。既可以使用一个基于报表监听器基本类(ReportListener)的对象引用,也可以是一个指定输出类型的数值。在一个REPORTFORM命令上OBJECT子句指定的值优先于SETREPORTBEHAVIOR的设置。的信息,请参见ReportListener对象,ListenerType属性和OutputType属性(VisualFoxPro)。[TOOutputDestination[NODIALOG]]指定报表的输出目标。要禁止运行时显示的状态信息框,请包含NODIALOG关键字。注意:在对象-辅助输出模式下,NODIALOG将在报表运行期间设置ReportListener对象的QuietMode属性为.T.。的信息,请参见QuietMode属性。 下面的表格描述了OutputDestination的可能取值。OutputDestination说明[PRINTER[PROMPT][NOPAGEEJECT][NOEJECT]]将报表发送到打印机。要在开始打印前显示打印对话框,请包含PROMPT关键字。在对象-辅助模式下,该选项是否可用受ReportListener.CommandClauses.PrintPageCurrent成员的值影响。要指定VisualFoxPro在报表结束时不强行弹出打印页并且不关闭打印工作队列,请包含NOPAGEEJECT关键字。下一个被打印的报表将被附加在当前已打开的打印工作队列上。你必须确保最后被打印的报表没有使用NOPAGEEJECT子句,只有这样才能关闭打印工作。NOPAGEEJECT仅在程序执行期间有效。如果在“命令”窗口中使用则将被忽略。在此运行期间不支持改变页面方向,例如试图将页面从纵向改变为横向。你可以使用NOPAGEEJECT来链接多个报表并且从一个报表转到下一个报表时页号也会连续。这种技术对于像传真报表等工作是非常有用的。REPORTFORM命令也允许使用一个NOEJECT关键字,那是VisualFoxPro不再支持的关键字,用于早期的DOS版FoxPro和FoxBASE+。该关键字不会执行任何功能但也不会触发错误。[FILE]FileName2[[ADDITIVE]ASCII]指定报表要发送到的文本文件名称。该文件的默认扩展名是.txt。当你省略了ASCII关键字或使用VisualFoxPro的对象-辅助输出模式时,它会将报表内容连同PostScript脚本或其它打印机代码输出到这个文本文件,要使用这个报表定义文件来创建一个ASCII文件文件,请SETREPORTBEHAVIOR80并包含ASCII关键字。注意:当你包含了ASCII关键字时,你可以在一台没有安装打印机驱动程序的电脑上处理这个报表。不使用ASCII关键字,REPORTFORM命令在一个没有安装打印机驱动程序的电脑上执行时会产生一个错误。 一个ASCII文件中只能包含文本。如果报表是创建于FoxProforMS-DOS下的一个基于字符的布局面板,破折号和加号可能会被包含在文件中代表线条和形状。此外,报表定义文件中任何字体或颜色设置,图形,线条,矩形,或者圆角矩形都不会出现在这个ASCII文本文件中。你可以使用_ASCIICOLS和_ASCIIROWS系统内存变量来指定每行可以放置的字符数以及每页可以放置的行数。这些变量的默认值对应于一个标准的纵向页面。的信息,请参见_ASCIICOLS系统内存变量和_ASCIIROWS系统内存变量。要使用附加而不是覆盖方式在一个ASCII文件上添加新内容,需要在ASCII关键字前面加上ADDITIVE关键字。ADDITIVE和ASCII关键字必须采用这种指定的次序。[PREVIEW[PreviewDestination][NOWAIT][WINDOWWindowName]]在预览窗口中显示报表而非打印报表。默认情况下,预览窗口是模式化的但提供了一个可访问的打印预览工具栏。关键字NOWAIT指定VisualFoxPro在运行时继续执行程序而不会等待用户关闭预览窗口。提示:由FoxProMS-DOS创建的基于字符的报表和标签由一个基于字符的特殊预览窗口。这种机制不受SETREPORTBEHAVIOR的影响而且不支持OBJECT子句或者WINDOW-相关的子句。 如果你包含了WINDOW,预览窗口将采用你通过WindowName指定的这个窗口的特征,如标题,大小,等等。WindowName可以是一个表单对象的name属性,或者一个使用DEFINEWINDOW创建的窗口的引用变量。的信息,请参见DEFINEWINDOW命令。下面的表格描述了PreviewDestination可以使用的值,你可以使用单独WINDOW子句,也可以与PreviewDestination结合起来使用。PreviewDestination说明[INWINDOWWindowName]指定一个用于预览报表的窗口。如果你包含了INWINDOW,报表将在你指定的WindowName窗口中预览。INSCREEN指定预览将被显示在VisualFoxPro主窗口内并且无法移出。说明当你使用VisualFoxPro的对象-辅助输出模式时,REPORTFORM命令的所有子句都可以在你的报表监听器的CommandClauses成员对象中使用,除了指定记录选集的子句(作用域,FOR和WHILE)。你可以在报表运行时使用CommandClauses.RecordTotal属性来了解有关信息,或者在报表运行前为你的ReportListener对象指派这些值。CommandClauses属性主题中为你描述了关于CommandClauses成员对象是如何利用每个子句的详细信息。示例示例1下面的例子显示了如何将两个报表做为一个批此报表工作来打印。VisualFoxPro通过运行这个报表集两次来获取总页数,并将它存储在_PAGETOTAL系统内存变量中用于报表布局中的PageXofY(共Y页第X页)表达式。注意:你可以确保通过在你的报表中包含_PAGETOTAL表达式使报表运行两次。如果你不需要_PAGETOTAL但希望两次运行其它的计算式,你可以使用对象-辅助输出模式并设置报表监听器的TwoPassProcess属性为.T.。的信息,请参见TwoPassProcess属性。 NORESET指定在继续打印下一个报表时使用连续的页号。NOPAGEEJECT指定第二个报表的首页继续使用第一个报表最后一页中保留(未用完)的空间继续打印。 复制代码REPORTFORMmyReport1.frxTOPRINTERNOPAGEEJECTREPORTFORMmyReport2.frxTOPRINTERNORESETMESSAGEBOX("你已打印了"+TRANSFORM(_PAGETOTAL)+"页.")示例2下面的例子演示了如何在一个报表输出到打印机之前先查看它。 复制代码REPORTFORMmyReport1.frxTOPRINTERPROMPTNODIALOGPREVIEW要使预览窗口非模式化,需要包含下面代码中的NOWAIT关键字: 复制代码REPORTFORMmyReport1.frxPREVIEWNOWAIT要在一个指定的窗口内预览结果,下面的代码包含了WINDOW子句来指定一个名为MyWindow的窗口,它时你以前使用DEFINEWINDOW命令创建的: 复制代码REPORTFORMmyReport1.frxPREVIEWWINDOWMyWindow示例3下面的例子演示了如何将报表发送到一个ASCII文件。_ASCIIROWS和_ASCIICOLS系统内存变量定义了这个ASCII文件每页的行数以及每行的字符数。REPORTFORM命令打印一个名为MyReport.frx的报表到一个名为MyFile.txt的ASCII文件中。 复制代码SETREPORTBEHAVIOR80_ASCIIROWS=nLines_ASCIICOLS=nCharsREPORTFORMMyReport.frxTOFILEMyFile.txtASCII
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式