除非另有说明,否则 Net.Data 定义这些变量供 REPORT 和 ROW 块使用。使用这些变量 引用您的查询所返回的值。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
由对列 n 的函数调用或查询返回的列名。
您可以在 REPORT 块和 ROW 块中引用 Nn。
例
例 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>$(N3)</TD>
%ROW{
<TR><TD>$(V1)</TD><TD>$(V2)</TD><TD>$(V3)</TD>
%}
</TABLE>
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
包含一张来自函数调用或者查询的结果的所有列名的列表。缺省分隔符是一个空格。
您可以在 REPORT 块和 ROW 块中引用 NLIST。
例
例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
Net.Data 在报表块中正在处理的表格列数;这些列由一个函数调用或查询来返回。
您可以在 REPORT 块和 ROW 块中引用 NUM_COLUMNS。
例
例 1:NUM_COLUMNS 用作一个变量引用,NLIST
%REPORT{
Your query result has $(NUM_COLUMNS) columns: $(NLIST).
...
%}
| AIX | HP-UX | Linux | 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。
您可以在 REPORT 块和 ROW 块中引用 NUM_ROWS。
例
例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | 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 块中引用 ROW_NUM。
例
例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | 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 found: $(TOTAL_ROWS)
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
当前行的指定列名的值。对于未定义的列名,不设置此变量。如果一个查询中包含两个列名,而它们的名称相同,则可能产生不可预测的结果。考虑在您的SQL中使用一个 AS 子句来重新命名重复的列名。
您只能在 ROW 块中引用 V_columnName。
值
V_columnName
| 值 | 说明 |
|---|---|
| columnName | 数据库表格的当前行中的列名。 |
例
例 1: V_columnName 用作一个变量引用
%FUNCTION(DTW_SQL) myQuery() {
SELECT NAME, ADDRESS from $(qtable)
%REPORT{
%ROW{
Value of NAME column in row $(ROW_NUM) is $(V_NAME).<BR>
%}
%}
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
一张针对一个 ROW 块中正在处理的当前行的字段值的列表。
您只能从 ROW 块中引用 VLIST。缺省分隔符是一个空格。
例
例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
当前行中为列号 n 指定的值。
您只能从 ROW 块中引用 Vn。
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>
%}
第二列显示了 e-mail 地址。通过单击一个人的链接,可以给这个人发送一条消息。