这些变量可以帮助您定制报表。每个变量都有一个缺省值。您可以通过为变量指定一个新值来覆盖缺省值。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
控制和表格处理变量 NLIST 和 VLIST 一起使用的前导和尾随空格。
性能技巧:仅在必要是时侯才使用 ALIGN,因为它需要 Net.Data 确定 表中所有列的最大列长,从而计算出填充时所需的大小。此处理可能影响性能。
如果设置成 YES, ALIGN 填补空白,以对齐要显示的表格处理变量。如果想要在 HTML 链路或表格操作中嵌入查询结果 ,则使用缺省值 NO,阻止 Net.Data 在报表变量周围加前导或尾随空格。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
ALIGN="YES"|"NO"
| 值 | 说明 |
|---|---|
| YES | Net.Data 给报表变量添加前导和尾随空格,以对齐显示。 |
| NO | Net.Data 不添加前导或者尾随空格。NO 是缺省。 |
例
例 1:使用 ALIGN 变量用空格分隔每一列
%DEFINE ALIGN="YES" <P>Your query was on these columns: $(NLIST)
| 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 块的函数生成缺省报表。如果此变量设置为 YES, 则 Net.Data 生成缺省的报表。如果设置为 NO,则 Net.Data 关闭缺省的报表生成操作。例如,如果把函数调用的结果接收到一个表格变量中,并且想把结果传送给另一个函数来处理,则关闭缺省报表是有用的。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DTW_DEFAULT_REPORT="YES"|"NO"|"MULTIPLE"
| 值 | 说明 |
|---|---|
| YES | Net.Data 为没有 REPORT 块的函数生成缺省报表,并把结果显 示在浏览器中。YES 是缺省。 |
| NO | Net.Data 对没有 REPORT 块的函数舍弃生成缺省报表。 |
| MULTIPLE | Net.Data 为没有指定给 REPORT 块的结果集或输出表格生成缺省的 报表(在具有多个 REPORT 块的函数中) |
例
例 1:覆盖由 Net.Data 生成的缺省报表
%DEFINE DTW_DEFAULT_REPORT="NO"
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
把结果以 HTML 表格形式显示,而不把表格作为文本类型来显示(即, 使用 TABLE 标签,而不使用 PRE 标签)。
生成的 TABLE 标记中包括了边界和单元填充说明:
<TABLE BORDER CELLPADDING=2>
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
DTW_HTML_TABLE="YES"|"NO"
| 值 | 说明 |
|---|---|
| YES | 使用 HTML 表格标记显示表格数据。 |
| NO | 使用 PRE 标记,以文本格式显示表格数据。NO 是缺省。 |
例
例 1:用 HTML 标记显示来自一个 SQL 函数的结果
%DEFINE DTW_HTML_TABLE="YES"
%FUNCTION(DTW_SQL){
SELECT NAME, ADDRESS FROM $(qTable)
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定一个表格中在一个函数 REPORT 块中处理的行数,如果没有指定 REPORT 块, 则表示在缺省报表生成过程中处理的行数。
数据库语言环境使用此变量来限制返回的行数,这可以极大地提高庞大结果集的性能。将这个变量与 START_ROW_NUM 一起使用,可以将具有庞大结果集的查询分成几个小表格, 每个都在它自己的 HTML 页面上。
OS/400、Windows NT、OS/2 和 UNIX 用户: 要将此变量传递到语言环境,把它作为 IN 参数包括在 Net.Data 初始化文件中数据库语言环境 的 ENVIRONMENT 语句中。要进一步了解数据库语言环境语句,请参阅Net.Data 管理与程序 设计指南针对您的操作系统的配置一章。
OS/390 用户:当宏中定义了 RPT_MAX_ROWS 之后, 它将被隐式地传递到数据库语言环境中。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定此变量的值。
值
RPT_MAX_ROWS="ALL"|"0"|"number"
| 值 | 说明 |
|---|---|
| ALL | 表示对由函数调用生成的表格中显示的行数没有限制。将显示所 有行。 |
| 0 | 指定表格中的所有行都将显示出来。这个值和指定 ALL 是相同 的。 |
| number | 一个正整数,表示在由函数调用生成的表格中显示的最大行数。
如果 FUNCTION 块包含一个 REPORT 和 ROW 块,则这个数字指定了执行 ROW 块的次数。 |
例
例 1:在 DEFINE 语句中定义 RPT_MAX_ROWS
%DEFINE RPT_MAX_ROWS="20"
上述方法显示任何函数返回的行数为 20 行。
例 2:使用 HTML 输入定义 HTML 格式的变量
Maximum rows to return (0 for no limit): <INPUT TYPE="text" NAME="RPT_MAX_ROWS" SIZE=3>
上例中各行可以放在一个 FORM 标记中 ,以使应用程序用户设置他们希望查询返回的行数。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定一个表格中将在一个函数 REPORT 块中处理的起始行号,如果没有指定 REPORT 块, 则表示将在缺省报表生成过程中处理的起始行号。
数据库语言环境使用此变量在要开始处理的结果集中确定起始行。对于庞大的结果集,为了能够 显著地提高性能,可以将此变量与 RPT_MAX_ROWS 一起使用,从而将具有庞大结果集的查询分成若干小表格。
OS/400、Windows NT、OS/2 和 UNIX 用户: 要将此变量传递到语言环境,把它作为 IN 参数包括在 Net.Data 初始化文件中数据库语言环境 的 ENVIRONMENT 语句中。要进一步了解数据库语言环境语句,请参阅Net.Data 管理与程序 设计指南针对您的操作系统的配置一章。
OS/390 用户:当宏中定义了 START_ROW_NUM 之后, 它将被隐式地传递到数据库语言环境中。
使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。
值
START_ROW_NUM="number"
| 值 | 说明 |
|---|---|
| number | 一个正整数,表示开始显示一张报表的行号。缺省值是 1。
如果初始化文 件的数据库语言环境的环境语句中指定 START_ROW_NUM ,则此数字指定了数据库语言环境所处理的结果集 的行号。 如果 START_ROW_NUM 没有传送给语言环境,则这个数字指定用于显示一张报表的 Net.Data 表格的行号。 |
例 1:用 HTML 格式“下一页”和“前一页”按钮滚动
%define {
DTW_HTML_TABLE = "YES"
START_ROW_NUM = "1"
RPT_MAX_ROWS = "10"
totalSize = ""
includeNext = "YES"
includePrev = "YES"
includeLast = "YES"
includeFirst = "YES"
%}
%function(DTW_SQL) myQuery(){
select * from NETDATADEV.CUSTOMER
%}
%function(DTW_SQL) count(OUT size){
select count(*) from NETDATADEV.CUSTOMER
%report{
%row{
@DTW_ASSIGN(size,V1)
%}
%}
%}
%html(report) {
%{ get the total number of records if we haven't already %}
%if (totalSize == "")
@count(totalSize)
%endif
%{ set START_ROW_NUM based on the button user clicked %}
%if (totalSize <= RPT_MAX_ROWS)
%{ there's only one page of data %}
@DTW_ASSIGN(START_ROW_NUM, "1")
@DTW_ASSIGN(includeFirst, "NO")
@DTW_ASSIGN(includeLast, "NO")
@DTW_ASSIGN(includeNext, "NO")
@DTW_ASSIGN(includePrev, "NO")
%elif (submit == "First Page" || submit == "")
%{ first time through or user selected "First Page" button %}
@DTW_ASSIGN(START_ROW_NUM, "1")
@DTW_ASSIGN(includePrev, "NO")
@DTW_ASSIGN(includeFirst, "NO")
%elif (submit == "Last Page")
%{ user selected "Last Page" button %}
@DTW_SUBTRACT(totalSize, RPT_MAX_ROWS, START_ROW_NUM)
@DTW_ADD(START_ROW_NUM, "1", START_ROW_NUM)
@DTW_ASSIGN(includeLast, "NO")
@DTW_ASSIGN(includeNext, "NO")
%elif (submit == "Next")
%{ user selected "Next" button %}
@DTW_ADD(START_ROW_NUM, RPT_MAX_ROWS, START_ROW_NUM)
%if (@DTW_rADD(START_ROW_NUM, RPT_MAX_ROWS) > totalSize)
@DTW_ASSIGN(includeNext,"NO")
@DTW_ASSIGN(includeLast, "NO")
%endif
%elif (submit == "Previous")
%{ user selected "Previous" button %}
@DTW_SUBTRACT(START_ROW_NUM, RPT_MAX_ROWS, START_ROW_NUM)
%if (START_ROW_NUM <= "1" )
@DTW_ASSIGN(START_ROW_NUM,"1")
@DTW_ASSIGN(includePrev,"NO")
@DTW_ASSIGN(includeFirst,"NO")
%endif
%endif
%{ run the query to get the data %}
@myQuery()
%{ output the correct buttons at the bottom of the report %}
<center>
<form method="POST" action="report">
<input name="START_ROW_NUM" type="hidden" value="$(START_ROW_NUM)">
<input name="totalSize" type="hidden" value="$(totalSize)">
%if (includeFirst == "YES" )
<input name="submit" type="submit" value="First Page">
%endif
%if (includePrev == "YES" )
<input name="submit" type="submit" value="Previous">
%endif
%if (includeNext == "YES" )
<input name="submit" type="submit" value="Next">
%endif
%if (includeLast == "YES" )
<input name="submit" type="submit" value="Last Page">
%endif
</form>
</center>
%}