除非另有说明,否则 Net.Data 定义这些变量供 REPORT 和 ROW 块使用。使用这些变量 引用您的查询所返回的值。
限制:不要在 DEFINE 段定义这些变量的值。
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
由对列 n 的函数调用或查询返回的列名。Nn 在 REPORT 和 ROW 块中有效。
Net.Data 为表格中的每一列都分配变量;在变量引用中使用此变量,来指定您想要引 用的列号。
例
例 1:一个列名的变量引用
The name of column 2 is $(N2).
例 2:用 DTW_ASSIGN,保存一个列名的值,供 REPORT 块外使用
%define col1="" ... %function (DTW_SQL) myfunc() { select * from atable %report { @dtw_assign(col1, N1) %row{ %} %} %} %html(report) { @myfunc() The column name for the first column is $(col1) %}这个例子显示了如何使用 DTW_ASSIGN 在 REPORT 块之外使用此变量。有关的更多信息,请参阅DTW_ASSIGN。
例 3:Nn 在一个 HTML 表格内 部来定义列名
%REPORT{ <H2>Product directory</H2> <TABLE BORDER=1 CELLPADDING=3> <TR><TD>$(N1)</TD><TD>$(N2)</TD><TD>$(N5)</TD> %ROW{ <TR><TD>$(V1)</TD><TD>$(V2)</TD><TD>$(V3)</TD> %} </TABLE> %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
包含一张来自函数调用或者查询的结果的所有列名的列表。缺省分隔符是一个空格。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
例
例 1:带 ALIGN 设置的列名列表
%DEFINE ALIGN="YES" ... %FUNCTION (DTW_SQL) myfunc() { select * from MyTable %report{ Your query was on these columns: $(NLIST). %row { ... %} %} %}
此列名列表在列名之间使用一个空格(ALIGN 设置成 YES)。
例 2:把分隔符改成 " | " 的 %LIST 变量
%DEFINE %LIST " | " NLIST ... %FUNCTION (DTW_SQL) myfunc() { select * from MyTable %report{ Your query was on these columns: $(NLIST). %row { ... %} %} %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
Net.Data 在报表块中正在处理的表格列数;这些列由一个函数调用或查询来返回。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
例
例 1:NUM_COLUMNS 用作一个变量引用,NLIST
%REPORT{ Your query result has $(NUM_COLUMNS) columns: $(NLIST). ... %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
|
|
|
| X |
|
|
|
目的
Net.Data 正在 REPORT 块中处理的表格中的行数。行的数目受上限参数值的影响,该参数给 Net.Data 表格定义来存放数据。 例如,如果上限设置成 30,但是 SELECT 语句返回 1000 行,则 NUM_ROWS 的值是 30。另 外,如果上限设置成 30,而 SELECT 语句返回 20 行,则 NUM_ROWS 等于 20。参阅 TABLE 语句获取 TABLE 语句和上限参数的更多信息。
只要 START_ROW_NUM 不传送给语言环境,则 NUM_ROWS 不受 START_ROW_NUM 的值的影响。例如, 如果 START_ROW_NUM 设置成 5 ( 指定显示在 Web 页面上的表格应当在第 5 行开始处理),而 SELEC T 语句返回 25 行,则 NUM_ROWS 设置成 25,而不是 21 。前面的四行从表格中被舍弃,但是仍包 含在 NUM_ROWS 值中。但是,如果 START_ROW_NUM 传送给了语言环境,那么 NUM_ROWS 将只包含从 START_ROW_NUM 指定的行开始算的行数。在上面的例子中,NUM_ROWS 将设置成 21。
NUM_ROWS 在 REPORT 和 ROW 块中有效。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
例
例 1:显示 REPORT 块中正在处理的名字个数
%DEFINE DTW_SET_TOTAL_ROWS="YES" %REPORT{ <H2>E-mail directory</H2> <UL> %ROW{ <LI>Name: <a href="mailto:$(V1)">$(V2)</a><BR> Location: $(V3) %} </UL> Names displayed: $(NUM_ROWS)<BR> Names found: $(TOTAL_ROWS) %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
一个表格变量,其值在 Net.Data 表格中接受处理,Net.Data 每次增加一行。此变量作 为一个计数器,它的值是当前正在处理的行号。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
RPT_MAX_ROWS 可以影响 ROW_NUM 的值。例如,如果表格中有 100 行,并且您已把 RPT_MAX_ROWS 设置为 20,则 ROW_NUM 的最终值是 20,因为第 20 行是要处理的最后一行。
ROW_NUM 只在 ROW 块中有效。
例
例 1:通过使用 ROW_NUM 为表格中每一行标号,处理 HTML 输出中的列
%REPORT{ <TABLE BORDER=1> <TR><TD> Row Number </TD> <TD> Customer </TD> %ROW{ <TR><TD> $(ROW_NUM) </TD> <TD> $(V_custname) </TD> %} </TABLE> %}
REPORT 块产生一张象下面显示的表格。
Row Number | Customer |
---|---|
1 | Jane Smith |
2 | Jon Chiu |
3 | Frank Nguyen |
4 | Mary Nichols |
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
| X | X | X | X |
目的
一次查询返回的总行数,它与 TABLE 语言结构的upper_limit 值无关。例如,如果 RPT_MAX_ROWS 设置为最多显示 20 行,但查询返回 100 行, 则在完成 ROW 处理后,此变量设置为 100。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
操作系统区别:
必需:要使用此变量,必须把 DTW_SET_TOTAL_ROWS 设置成 YES。请参阅DTW_SET_TOTAL_ROWS以获取更多的信息。
例
例 1:显示找到的总的名字个数
%DEFINE DTW_SET_TOTAL_ROWS="YES" %REPORT{ <H2>E-mail directory</H2> <UL> %ROW{ <LI>Name: <a href="mailto:$(V1)">$(V2)</a><BR> Location: $(V3) %} </UL> Names displayed: $(NUM_ROWS)<BR> Names found: $(TOTAL_ROWS) %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
当前行的指定列名的值。对于未定义的列名,不设置此变量。如果一个查询中包含两个列名,而它们的名称相同,则可能产生不可预测的结果。 考虑在您的SQL中使用一个 AS 子句来重新命名重复的列名。 V_columnName 只在 ROW 块中有效。
通过把这个变量用作一个变量引用,替换以列的实际名称,从而指定它的值。
值
V_columnName
值 | 说明 |
---|---|
columnName | 数据库表格的当前行中的列名。 |
例
例 1: V_columnName 用作一个变量引用
You have selected $(V_destcity).
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
一张针对一个 ROW 块中正在处理的当前行的字段值的列表。VLIST 只在 ROW 块中有效 。缺省分隔符是一个空格。
此变量是一个预定义的变量,它的值不能修改。将此变量用作为变量引用。
例
例 1:使用列表标记显示查询结果
%DEFINE ALIGN="YES" %REPORT{ Here are the results of your query: <OL> %ROW{ <LI>$(VLIST) %} </OL> %}
例 2:使用列表变量把分隔符更改至 <P>
%DEFINE %LIST "<P>" VLIST %REPORT{ Here are the results of your query: %ROW{ <HR>$(VLIST) %} %}
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
目的
针对从字段 1 到 n 的函数调用或 SQL 查询返回的每行的字 段值。Vn 只在 ROW 块中可被识别。
Net.Data 为表格中的每一字段都分配变量;在变量引用中使用此变量,来指定您想要引 用的字段号。要在块外使用此变量,则把 Vn 的值分配给一个先前定义的全局变量或一个 OUT 或 INOUT 函数参数变量。
例
例 1:显示一个 HTML 表格的报表
%REPORT{ <H2>E-mail directory</H2> <TABLE BORDER=1 CELLPADDING=3> <TR><TD>Name</TD><TD>E-mail address</TD><TD>Location</TD> %ROW{ <TR><TD>$(V1)</TD> <TD><a href="mailto:$(V2)">$(V2)</a></TD> <TD>$(V3)</TD> %} </TABLE> Found $(NUM_ROWS) models matching your description. %}
第二列显示了 e-mail 地址。通过单击一个人的链接,可以给这个人发送一条消息。