如果是依照過去習慣傳遞報表參數,也就是使用者先在HTML網頁上輸入參數值,然後再Post到後端的ASP程式上,則可以參考下面的程式範例。

SimpleParamReport.htm
Code:
 <html>
 <head>
 <title>BO XI - Simple Parameter Report</title>
 <meta http-equiv="Content-Type" content="text/html; charset=big5">
 </head>
 
 <body bgcolor="#FFFFFF" text="#000000">
 <form name="form1" method="post" action="ViewReportDiscreteParam_1.asp">
   輸入參數 
   <input type="text" name="country" value="USA" size="20" maxlength="20">
   <input type="submit" name="Submit" value="執行">
 </form>
 </body>
 </html>
 


ViewReportDiscreteParam_1.asp
Code:
 <%
 	Dim CMS
 	Dim Username
 	Dim Password
 	Dim Authtype
 	
 	CMS = "tom"
 	Username = "administrator"
 	Password = ""  
 	Authtype = "secEnterprise"
 	ReportName = "報表名稱"
 	
 	Dim oEnterpriseSessionMgr
 	Dim ceSession
 	Dim iStore
 	
 	Set oEnterpriseSessionMgr = Server.CreateObject("CrystalEnterprise.SessionMgr")
 	
 	Set ceSession = oEnterpriseSessionMgr.Logon(Username, Password, CMS, Authtype)
 	Set iStore = ceSession.Service("","InfoStore")
 	
 	Dim Reports
 	Dim Report
 	
 	Set Reports = iStore.Query("Select * from CI_InfoObjects Where SI_ProgID = 'CrystalEnterprise.Report' and SI_NAME='" + ReportName + "'")
 	Report = Reports.Item(1).Properties("SI_ID")
 	
 	Dim reportParameters
 	Dim fields
 	Dim parameter
 	Dim value
 	Dim country
 	country = request.Form("country")
 	
 	Set reportParameters = Reports.Item(1).PluginInterface("Report").ReportParameters
 	
 	If reportParameters.Count > 0 then
 		'Create a new Fields Collection Object
 		Set fields = CreateObject("CrystalReports.Fields")
 		
 		For each parameter in reportParameters
 			Set paramValue = createobject("CrystalReports.ParameterFieldDiscreteValue")
 			Set tmpParameter = CreateObject("CrystalReports.ParameterField")
 			paramValue.value = country
 			tmpParameter.Name = parameter.ParameterName
 			tmpParameter.CurrentValues.Add paramValue
 			fields.Add tmpParameter
 		Next
 	End If
 	
 	Dim rptAppFactory
 	Dim reportDocument
 	
 	Set rptAppFactory = iStore.EnterpriseSession.Service("","PSReportFactory")
 	Set reportDocument = rptAppFactory.OpenReportSource(CInt(Report))
 	
 	Dim Viewer
 	
 	Set Viewer = CreateObject("CrystalReports.CrystalReportViewer")
 	With Viewer
 	  .reportSource = reportDocument
 	  .ParameterFields = fields
 	End With
 	
 	on error resume next
 	Viewer.ProcessHTTPRequest Request, Response, Session
 	
 	if err.number <> 0 then
 	  response.write "Failed to view report" & "</BR>"
 	  response.write "error number: " & err.number & "</BR>"
 	  response.write "error description: " & err.description
 	end if
 %>
posted on 2005-11-10 13:20  James Wong   阅读(405)  评论(1)    收藏  举报