calculate 表达式 for 条件 to 变量
其中表达式是一个函数,有如下几种:
AVG(
nExpression)
计算 nExpression 的算术平均值。只有满足 Scope 和/或 可选的 FOR 或 WHILE
条件的记录才包含到结果中。
CNT( ) 或 COUNT( )
返回表中记录的数目。只有满足 Scope 和/或 可选的 FOR 或 WHILE 条件的记录才包含到结果中。
MAX(
eExpression)
返回 eExpression的最大值或最新值。在 MAX( ) 子句中,可指定任何字符型, 日期型, 日期时间型, 数值型, 浮点型,
整型, 双精度型, 或货币型字段,或任何使用这些数据类型的表达式。只有满足 Scope 和/或 可选的 FOR 或 WHILE
条件的记录才包含到结果中。
MIN(
eExpression)
返回 eExpression 的最小值或最早值。 eExpression 中,可以包含任何字符型, 日期型, 日期时间型,
数值型, 浮点型, 整型, 双精度型, 或货币型字段,或任何使用这些数据类型的有效表达式。只有满足 Scope 和/或 可选的 FOR 或
WHILE 条件的记录才包含到结果中。
NPV( nExpression1,
nExpression2[, nExpression3])
计算一个固定周期利率下,一系列现金流转的净现值。nExpression1 指定用十进制表示的利率。 nExpression2
指定代表一系列现金流转的字段, 字段表达式, 或数值表达式。每个现金流转可正可负。当 nExpression2
是字段时,每个记录的字段值都认为是一个现金流转。 nExpression3
指定可选的初始投资。如果不包括初始投资,则假定初始投资发生在第一阶段末。这个初始投资就是第一条记录,而且是负的,代表现金流出。只有满足 Scope
和/或 可选的 FOR 或 WHILE 条件的记录才包含到结果中。
STD(
nExpression)
计算 nExpression
的标准偏差。标准偏差用来衡量字段或包含字段的表达式的值,偏离平均值的程度。标准偏差越小,这些值偏离平均值就越少。只有满足 Scope
和/或 可选的 FOR 或 WHILE 条件的记录才包含到结果中。
SUM(
nExpression)
对 nExpression 求和。只有满足 Scope 和/或 可选的 FOR 或 WHILE 条件的记录才包含到结果中。
VAR(
nExpression)
从 nExpression 的平均值中计算方差。方差是标准方差的平方。方差越小,值偏离平均值就越少。只有满足 Scope
和/或 可选的 FOR 或 WHILE 条件的记录才包含到结果中。
但是不能分类汇总, 你要计算每个学生的总成绩,请用total
total to 总成绩表 on 学号 fields 成绩
就是按学号分类汇总,计算成绩的和,保存在新建的总成绩表中
scope的的意思是范围的意思。
它有几个值,你看看就知道了。
scope=“page”
scope=“request”
scope=“session”
scope=“application”
这个属性就是问你,你从表单获取的值,是存储在什么位置上。可以使当页、请求、会话和应用中!
显示或打印一个由报表定义(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 70
开始,当你使用了 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 子句,也可以指定要打印的页范围子集(使用 ReportListenerCommandClauses 的
PrintPageCurrent,PrintRangeFrom,以及 PrintRangeTo 成员)。更多的信息,请参见 OnPreviewClose 方法。
[HEADING
cHeadingText]
指定要做为一个附加题头放置在报表每一页上的文本。如果你同时包含了 HEADING 子句和 PLAIN
关键字,PLAIN 关键字优先处理。
[SUMMARY]
禁止打印细节行,这样就会只打印合计和子合计项目。
[NORESET]
指定不重置 _PAGENO 和 _PAGETOTAL
系统内存变量。当前报表将使用这两个变量的当前值做为起始值。更多的信息,请参见 _PAGENO 系统内存变量 和 _PAGETOTAL 系统内存变量。
注意:
如果你同时使用了 NORESET 和 RANGE 关键字,你必须预先计算哪些页要打印。
[PLAIN]
禁止打印除报表开始时以外的所有页题头。
[NOCONSOLE | OFF]
在打印报表或将它发送给一个文件时,禁止在 Visual FoxPro 主窗口或一个用户定义窗口中显示它的内容。
注意:
当你使用 Visual FoxPro 90 的对象-辅助输出模式时,REPORT FORM 不会在当前输出窗口中显示你的报表内容,所以
NOCONSOLE 和 OFF 关键字对原始的行为没有影响。但是,该关键字可以在ReportListener 对象的
CommandClauses 中使用。你可以在你的报表监听器派生类中测试它们,并可选的禁止显示报表内容或其它基于这些内容的用户反馈。更多的信息,请参见 CommandClauses 属性。
[PDSETUP]
装入一个打印机驱动设备设置。可以包含 PDSETUP 为创建于 FoxPro for MS-DOS
的基于字符的报表使用一个打印机驱动程序设置。当你在 Visual FoxPro 中创建了基于图形的报表时,PDSETUP 将被忽略。
[NAME
ObjectName]
指定一个与报表的数据环境关联的对象变量名。
注意:
数据环境以及数据环境中的对象拥有属性和方法,例如像 AddObject
方法,可以在运行是设置或调用它们。对象变量用于提供对这些属性和方法的访问。
如果你省略了 NAME 子句,Visual FoxPro
使用报表文件的名字替代它,可以在相关事件的代码中引用它。
[OBJECT
oReportListener | TYPE iExpression ]
调用 Visual FoxPro
的对象-辅助输出模式。既可以使用一个基于报表监听器基本类(ReportListener)的对象引用,也可以是一个指定输出类型的数值。在一个 REPORT
FORM 命令上 OBJECT 子句指定的值优先于 SET REPORTBEHAVIOR 的设置。更多的信息,请参见 ReportListener 对象,ListenerType 属性 和 OutputType 属性(Visual
FoxPro)。
[TO OutputDestination
[NODIALOG]]
指定报表的输出目标。要禁止运行时显示的状态信息框,请包含 NODIALOG 关键字。
注意:
在对象-辅助输出模式下,NODIALOG 将在报表运行期间设置ReportListener 对象的 QuietMode 属性为
T。更多的信息,请参见 QuietMode 属性。
下面的表格描述了 OutputDestination 的可能取值。
OutputDestination
说明
[PRINTER [PROMPT] [NOPAGEEJECT] [NOEJECT]]
将报表发送到打印机。
要在开始打印前显示打印对话框,请包含 PROMPT 关键字。在对象-辅助模式下,该选项是否可用受
ReportListenerCommandClausesPrintPageCurrent 成员的值影响。
要指定 Visual FoxPro 在报表结束时不强行d出打印页并且不关闭打印工作队列,请包含 NOPAGEEJECT
关键字。下一个被打印的报表将被附加在当前已打开的打印工作队列上。
你必须确保最后被打印的报表没有使用 NOPAGEEJECT 子句,只有这样才能关闭打印工作。
NOPAGEEJECT
仅在程序执行期间有效。如果在“命令”窗口中使用则将被忽略。在此运行期间不支持改变页面方向,例如试图将页面从纵向改变为横向。
你可以使用 NOPAGEEJECT
来链接多个报表并且从一个报表转到下一个报表时页号也会连续。这种技术对于像传真报表等工作是非常有用的。
REPORT FORM 命令也允许使用一个 NOEJECT 关键字,那是 Visual FoxPro
不再支持的关键字,用于早期的 DOS 版 FoxPro 和 FoxBASE+。该关键字不会执行任何功能但也不会触发错误。
[FILE] FileName2 [[ADDITIVE] ASCII]
指定报表要发送到的文本文件名称。该文件的默认扩展名是 txt。
当你省略了 ASCII 关键字或使用 Visual FoxPro 的对象-辅助输出模式时,它会将报表内容连同 PostScript
脚本或其它打印机代码输出到这个文本文件,要使用这个报表定义文件来创建一个 ASCII 文件文件,请 SET REPORTBEHAVIOR 80
并包含 ASCII 关键字。
注意:
当你包含了 ASCII 关键字时,你可以在一台没有安装打印机驱动程序的电脑上处理这个报表。不使用 ASCII
关键字,REPORT FORM 命令在一个没有安装打印机驱动程序的电脑上执行时会产生一个错误。
一个 ASCII 文件中只能包含文本。如果报表是创建于 FoxPro for MS-DOS
下的一个基于字符的布局面板,破折号和加号可能会被包含在文件中代表线条和形状。此外,报表定义文件中任何字体或颜色设置,图形,线条,矩形,或者圆角矩形都不会出现在这个
ASCII 文本文件中。你可以使用 _ASCIICOLS 和 _ASCIIROWS
系统内存变量来指定每行可以放置的字符数以及每页可以放置的行数。这些变量的默认值对应于一个标准的纵向页面。更多的信息,请参见 _ASCIICOLS 系统内存变量 和 _ASCIIROWS 系统内存变量。
要使用附加而不是覆盖方式在一个 ASCII 文件上添加新内容,需要在 ASCII 关键字前面加上
ADDITIVE 关键字。ADDITIVE 和 ASCII
关键字必须采用这种指定的次序。
[PREVIEW [
PreviewDestination] [NOWAIT][WINDOW WindowName]]
在预览窗口中显示报表而非打印报表。默认情况下,预览窗口是模式化的但提供了一个可访问的打印预览工具栏。关键字 NOWAIT 指定
Visual FoxPro 在运行时继续执行程序而不会等待用户关闭预览窗口。
提示:
由 FoxPro MS-DOS 创建的基于字符的报表和标签由一个基于字符的特殊预览窗口。这种机制不受 SET REPORTBEHAVIOR
的影响而且不支持 OBJECT 子句或者 WINDOW-相关的子句。
如果你包含了 WINDOW
<WindowName>,预览窗口将采用你通过 WindowName
指定的这个窗口的特征,如标题,大小,等等。WindowName 可以是一个表单对象的 name 属性,或者一个使用 DEFINE
WINDOW 创建的窗口的引用变量。更多的信息,请参见 DEFINE WINDOW 命令。下面的表格描述了
PreviewDestination 可以使用的值,你可以使用单独 WINDOW 子句,也可以与
PreviewDestination 结合起来使用。
PreviewDestination
说明
[IN WINDOW WindowName]
指定一个用于预览报表的窗口。
如果你包含了 IN WINDOW <WindowName>,报表将在你指定的 WindowName
窗口中预览。
IN SCREEN
指定预览将被显示在 Visual FoxPro
主窗口内并且无法移出。
说明
当你使用 Visual FoxPro 的对象-辅助输出模式时,REPORT FORM 命令的所有子句都可以在你的报表监听器的
CommandClauses 成员对象中使用,除了指定记录选集的子句(作用域,FOR 和 WHILE)。你可以在报表运行时使用
CommandClausesRecordTotal 属性来了解有关信息,或者在报表运行前为你的 ReportListener 对象指派这些值。CommandClauses 属性 主题中为你描述了关于
CommandClauses 成员对象是如何利用每个子句的详细信息。
示例
示例 1
下面的例子显示了如何将两个报表做为一个批此报表工作来打印。Visual FoxPro 通过运行这个报表集两次来获取总页数,并将它存储在
_PAGETOTAL 系统内存变量中用于报表布局中的 Page X of Y(共 Y 页 第 X 页) 表达式。
注意:
你可以确保通过在你的报表中包含 _PAGETOTAL 表达式使报表运行两次。如果你不需要 _PAGETOTAL
但希望两次运行其它的计算式,你可以使用对象-辅助输出模式并设置报表监听器的 TwoPassProcess 属性为
T。更多的信息,请参见 TwoPassProcess 属性。
NORESET 指定在继续打印下一个报表时使用连续的页号。NOPAGEEJECT
指定第二个报表的首页继续使用第一个报表最后一页中保留(未用完)的空间继续打印。
复制代码
REPORT FORM myReport1frx TO PRINTER NOPAGEEJECT
REPORT FORM myReport2frx TO PRINTER NORESET
MESSAGEBOX("你已打印了 " + TRANSFORM(_PAGETOTAL)+ " 页")
示例 2
下面的例子演示了如何在一个报表输出到打印机之前先查看它。
复制代码
REPORT FORM myReport1frx TO PRINTER PROMPT NODIALOG PREVIEW
要使预览窗口非模式化,需要包含下面代码中的 NOWAIT 关键字:
复制代码
REPORT FORM myReport1frx PREVIEW NOWAIT
要在一个指定的窗口内预览结果,下面的代码包含了 WINDOW 子句来指定一个名为 MyWindow 的窗口,它时你以前使用
DEFINE WINDOW 命令创建的:
复制代码
REPORT FORM myReport1frx PREVIEW WINDOW MyWindow
示例 3
下面的例子演示了如何将报表发送到一个 ASCII 文件。_ASCIIROWS 和 _ASCIICOLS
系统内存变量定义了这个 ASCII 文件每页的行数以及每行的字符数。REPORT FORM 命令打印一个名为 MyReportfrx
的报表到一个名为 MyFiletxt 的 ASCII 文件中。
复制代码
SET REPORTBEHAVIOR 80
_ASCIIROWS = nLines
_ASCIICOLS = nChars
REPORT FORM MyReportfrx TO FILE MyFiletxt ASCII
REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
[, FieldName2 WITH eExpression2 [ADDITIVE]] [Scope]
[FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
[NOOPTIMIZE]
参数
FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ]
指定用表达式 eExpression1 的值来代替 FieldName1 字段中的数据;用表达式 eExpression2 的值来代替字段 FieldName2 中的数据,依此类推。
当表达式的值比数值字段的宽度长时,REPLACE 采用以下方法来处理数据:
首先,REPLACE 截短表达式的小数位然后圆整剩余部分。
如果此时字段仍然放不下表达式的值,则 REPLACE 用科学计数法在字段中保存表达式的值。
如果还不行,REPLACE 则用星号代替字段内容。
ADDITIVE
把对备注字段的替代内容追加到备注字段的后面。ADDITIVE 只对替换备注字段有用。如果省略 ADDITIVE,则用表达式的值改写备注字段原有内容。
Scope
指定要替换内容的记录范围。只替换指定范围内记录字段的内容。范围子句有:ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。有关范围子句的详细内容,请参阅 scope(作用域)子句 或 语言概述。REPLACE 的默认范围是当前记录 ( NEXT 1 )。
FOR lExpression1
只有当指定记录使表达式 lExpression1 求值结果为“真”(T) 时,它的字段才会被替换为新的内容。因此,包含 FOR 子句可以使命令有条件地更新记录,而将那些不需要更新的记录筛选掉。
当表达式 lExpression1 是可优化表达式时,Rushmore 将优化 REPLACE 命令。因此,为使系统获得最佳性能,应在 FOR 表达式中使用可优化的表达式。
详细信息, 参见SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
WHILE lExpression2
指定一个逻辑表达式 lExpression2 作为替换字段内容的条件。只要逻辑表达式 lExpression2 计算为“真”(T),就替换记录中的数据,直至遇到第一个计算结果为“假”(F) 为止。
IN nWorkArea
指定要更新记录的表所在的工作区。
IN cTableAlias
指定要更新记录的表的别名。
如果同时省略 nWorkArea 和 cTableAlias,则更新当前选定工作区中表的记录。
NOOPTIMIZE
关闭 Rushmore 优化。
详细信息, 参见SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
备注
REPLACE 命令用表达式的值替换字段中的数据。在替换未选定工作区中的字段时,字段前面必须加上表的别名。
注意 如果记录指针已在当前工作区中文件的末端,而指定的字段在另一个工作区中,则不发生任何替换。
示例
下面的示例创建了一个有 10 个记录的表。然后用 REPLACE 命令往字段中填入随机值。最后用 min( ) 和 max( ) 函数显示出表中的最大值和最小值。
CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && 添加 10 条记录,
APPEND BLANK
REPLACE cValue WITH 1 + 100 RAND() && 插入随机值
ENDFOR
CLEAR
LIST && 显示值
gnMaximum = 1 && 初始化最小值
gnMinimum = 100 && 初始化最大值
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
'最小值是: ', gnMinimum && 显示最小值
'最大值是: ', gnMaximum && 显示最大值
以上就是关于vfp数据库中calculate的用法怎样用来计算每个学生的总成绩全部的内容,包括:vfp数据库中calculate的用法怎样用来计算每个学生的总成绩、scope的属性的用途是什么、vfp中打印报表的代码怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)