上一主题: 报表模板中的变量表达式

下一主题: 如何生成报表

示例:报表模板

以下“受影响的联系人报表”模板显示如何创建报表模板。 它产生一个报表,该报表列出具有相同受影响的联系人的打开变更单:

PAGE HEADER {
                                                     As Of: [CD> 
                                                            [CT> 
} 
PAGE FOOTER { 
                         Page: [PG> 
} 
BLOCK chg (“SELECT \ 
		chg_ref_num, description, priority, \ 
		status, category, assignee \ 
      FROM Change_Request”, 
    “WHERE #Change_Request.status = 'OP' \ 
AND #Change_Request.requestor = #ca_contact.id \ 
AND #ca_contact.last_name = ? \ 
AND #ca_contact.first_name = ? \ 
AND #ca_contact.middle_name = ? “ , $1, $2, $3) 
{ 
	BLOCK st (“SELECT sym FROM Change_Status”, 
		    “WHERE code = ? “, chg::status) {} 
	BLOCK (strlen(category)) cat (“SELECT sym FROM Change_Category”, 
					“WHERE code = ? “, chg::category) {} 
HEADER { 
		OPEN CHANGE ORDERS WITH SAME REQUESTOR/FROM CONTACT 
CHANGE ORDER Summary          Pri   Status    Category           Assignee 
} 
HEADER2 { 
CHANGE ORDER Summary          Pri   Status    Category           Assignee 
-------------------------------------------------------------------------- 
} 
	num = chg_ref_num; 
	desc = description MULTILINE; 
	pr = deref (priority); 
	stat = st::sym; 
	catgry = cat::sym; 
	asgn = deref (assignee); 
PRINT { 
[num      ] [desc            ][pr ] [stat   ] [catgry          ] [asgn ] 
} 
} 
页眉

指定要在报表每一页的顶部打印的内容。 CD 和 CT 是显示当前日期和时间的预定义变量。 它们将显示在每页顶部的页眉中。 每个字段都以尖括号结尾,允许字段向右边空白扩展。 由于“As Of:”在字段之外,并且在左大括号后面的行中,它将在报表输出中以文字文本显示。

PAGE HEADER {                                 As Of:  [CD>
                                                      [CT>
}
页脚

以“Page: ”作为文字文本包含页码。

PAGE FOOTER {
                                Page: [PG>
}

注意:由于 PAGE HEADER 和 PAGE FOOTER 语句生成全局页眉和页脚,因此它们不会包含在 BLOCK 语句中。

报告部分

为主 BLOCK 语句及其嵌套语句创建报告部分。 报告部分通常只是报表中数据的一部分,但是此报表只有一个报告部分。 此块的唯一名称是 chg。

SELECT 子句从三个表中选择要包括在报表数据中的列,但是只选择符合 WHERE 子句指定的条件的列。

WHERE 子句中的最后三个 AND 表达式包含问号。这些问号用作参数占位符,依次获取 $1、$2 和 $3 参数的值。 因此 $1 表示 ca_contact.last_name,$2 表示 ca_contact.first_name,$3 表示 ca_contact.middle_name。 $1、$2 和 $3 参数获取命令行参数的值。

BLOCK chg (“SELECT \ 
...”, 
“WHERE \ 
...\ 
AND #ca_contact.last_name = ? \ 
AND #ca_contact.first_name = ? \ 
AND #ca_contact.middle_name = ? “, $1, $2, $3)
报告部分标题

指定左括号开始 BLOCK 语句的输出程序部分:其语句告知如何处理由 SELECT 和 WHERE 子句提取的数据。 此示例嵌套仅应用于此报告部分的 HEADER 和 HEADER2 语句。 仅当报表输出在多页上时,HEADER2 才打印。

{
   ...
   HEADER {
              OPEN CHANGE ORDERS WITH SAME REQUESTOR/FROM CONTACT 
CHANGE ORDER Summary            Pri    Status  Category  Assignee
}
   HEADER2 {
CHANGE ORDER Summary            Pri    Status  Category  Assignee
--------------------------------------------------------------------
}
变量分配

指定处理 SELECT 子句指定的数据的变量表达式。 它们将变量分配给列值和表达式结果。 这些变量与下面的 PRINT 语句中的字段匹配。

desc 变量的 MULTILINE 标志使它们打印或显示在多行而不会被截断。 deref 函数用于返回引用列中包含的字符串表达式。

num = chg_ref_num;
desc = description MULTILINE;
pr = deref (priority);
stat = st::sym;
catgry = cat::sym;
asgn = deref (assignee);
打印

包含要打印的字段。 此语句可能还包括可增强报表外观效果的文字文本行。 最后的右大括号与 BLOCK 语句的输出程序部分的左大括号匹配。

PRINT {
[num ] [desc         ] [pr]  [stat] [catgry] [asgn         ]
 
}
}

详细信息:

报表命令