IBM Books

Net.Data 参考


Net.Data 报表变量

这些变量可以帮助您定制报表。您必须在引用之前定义这些变量:

ALIGN


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

控制和表格处理变量 NLIST 和 VLIST 一起使用的前导和尾随空格。 如果设置成 YES, ALIGN 填补空白,以对齐要显示的表格处理变量。如果想要在 HTML 链路或表格操作中嵌入查询结果 ,则使用缺省值 NO,阻止 Net.Data 在报表变量周围加前导或尾随空格。

使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。

ALIGN="YES"|"NO"

表 2. ALIGN 值
说明
YES Net.Data 给报表变量添加前导和尾随空格,以对齐显示。
NO Net.Data 不添加前导或者尾随空格。NO 是缺省。

例 1:使用 ALIGN 变量用空格分隔每一列

%DEFINE ALIGN="YES"
<P>Your query was on these columns: $(NLIST)

DTW_DEFAULT_REPORT


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
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"

表 3. DTW_DEFAULT_REPORT 值
说明
YES Net.Data 为没有 REPORT 块的函数生成缺省报表,并把结果显 示在浏览器中。YES 是缺省。
NO Net.Data 对没有 REPORT 块的函数舍弃生成缺省报表。

例 1:覆盖由 Net.Data 生成的缺省报表

%DEFINE DTW_DEFAULT_REPORT="NO"

DTW_HTML_TABLE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

把结果以 HTML 表格形式显示,而不把表格作为文本类型来显示(即, 使用 TABLE 标签,而不使用 PRE 标签)。

生成的 TABLE 标记中包括了边界和单元填充说明:

<TABLE BORDER CELLPADDING=2>

使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。

DTW_HTML_TABLE="YES"|"NO"

表 4. DTW_HTML_TABLE 值
说明
YES 使用 HTML 表格标记显示表格数据。
NO 使用 PRE 标记,以文本格式显示表格数据。NO 是缺省。

例 1:用 HTML 标记显示来自一个 SQL 函数的结果

%DEFINE DTW_HTML_TABLE="YES"
 
%FUNCTION(DTW_SQL){
SELECT NAME, ADDRESS FROM $(qTable)
%}

RPT_MAX_ROWS


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

指定行数,它们显示在由函数 REPORT 块生成的表格中。

使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定此变量的值。

OS/400、Windows NT、OS/2 和 UNIX 用户: 要使用此变量,请确保在初始化文件包含此变量,作为此数据库语言环境下 ENVIRONMENT 语句中的一个 IN 变量。参阅Net.Data 管理与程序设计指南的配置一章,进一步学习数据库语言环境语句。

RPT_MAX_ROWS="ALL"|"0"|"number"

表 5. RPT_MAX_ROWS 值
说明
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 标记中 ,以使应用程序用户设置他们希望查询返回的行数。

START_ROW_NUM


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X
X X X X

目的

指定在报表中开始显示一张 Net.Data 表格的结果的行号。将这个变量与 RPT_MAX_ROWS 一起使用,可以将具有庞大结果集合的查询分成几个小表格,然后使用“下一页”按钮来游历 生成的表格。

限制:针对性能原因,Net.Data 把 START_ROW_NUM 传送给数 据库语言环境,使得语言环境不向 Net.Data 返回整个结果集合。要自动传送此变量,则把它作为一 个 IN 变量包含在初始化文件的数据库语言环境 ENVIRONMENT 语句中。如果 ENVIRONMENT 语句中省 略了这个变量,则要检索的起始行号假定为结果集合中的第一行。

使用 DEFINE 语句或 @DTW_ASSIGN() 函数指定这个变量的值。

START_ROW_NUM="number"

表 6. START_ROW_NUM 值
说明
number 一个正整数,表示开始显示一张报表的行号。

如果初始化文 件的数据库语言环境的环境语句中指定 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>
%}


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]