Adobe ColdFusion Reports(5)

  作为应用程序的一个很大组成部分,报表其实很少以单独形式存在,因此我们需要将报表作为模板应用到程序中。前面的几篇随笔简单介绍了报表的基本制作和样式控制等。其中的查询内容信息直接放在报表中。通过Query Builder生成的query可以通过Query Builder的Advanced模式进行查看。如图1. 

图 1

  下面笔者通过一个示例,更改报表中的查询数据来动态显示不同的结果。使用者可以通过不同的用户名登录信息,查看当前登录的艺术家的作品信息。

  首先新建一个简单的登录窗体,代码如下。

<h3>Artist Login Form</h3>
<p>Please enter your last name and password.</p>
<cfform name="loginform" action="artSalesReport.cfm" method="post">
	<table>
		<tr>
			<td>Last Name: </td>
			<td>
				<cfinput type="text" name="username" 
					required="true" message="A username is required. ">
			</td>
		</tr>
		<tr>
			<td>Password: </td>
			<td>
				<cfinput type="password" name="password" 
					required="true" message="A password is required. ">
			</td>
		</tr>
	</table>
	<br/>
	<cfinput type="submit" name="submit" value="Submit">
</cfform>

  然后新建一个应用页面,注意这里主要新建了一个查询变量,并将这个变量赋给cfreport标签的query属性,而将原来的报表文件赋给template属性,查看格式为HTML, 代码如下。

<cfquery name="artsales" datasource="cfartgallery">
	SELECT 
		*
	FROM
		APP.ART,
		APP.ARTISTS
	WHERE
		APP.ART.ARTISTID = APP.ARTISTS.ARTISTID
		AND
		APP.ARTISTS.LASTNAME = <cfqueryparam value="#FORM.username#">
	ORDER BY
		APP.ARTISTS.LASTNAME
</cfquery>

<cfreport query="artsales" template="ArtSalesReport1.cfr" format="HTML">

  在浏览器中运行程序,效果如图2, 图3. 

图 2

图 3

  这里值得注意的是新建的查询中必须全部包括报表中的字段,当然可以增加新的字段。

posted @ 2010-03-03 15:28  spoony  阅读(511)  评论(0编辑  收藏  举报