下面的範例完整的說明如何透過ASP 程式傳入所有型別的參數,包括:Number、Currency、Boolean、Date、Time、DateTime、String。這些不同型別的參數都是在Crystal Report 裡面設定的,因此針對不同型別的參數就必須使用不同的方法來將值傳入。

ViewReportDiscreteParam.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
 
 	crFieldValueTypeNumberField		= 0		'Number Type 	
 	crFieldValueTypeCurrencyField	= 1		'Currency Type
 	crFieldValueTypeBooleanField	= 2		'Boolean Type
 	crFieldValueTypeDateField		= 3		'Date Type
 	crFieldValueTypeTimeField		= 4		'Time Type
 	crFieldValueTypeDateTimeField	= 5		'DateTime Type
 	crFieldValueTypeStringField		= 6		'String Type
 
 	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
 			' Create a new value object for discrete parameter values
 			Set value = createobject("CrystalReports.ParameterFieldDiscreteValue")
 			' Create a temporary parameter field
 			Set tmpParameter = CreateObject("CrystalReports.ParameterField")
 			' Switch on the type of parameter (String, Boolean, Number, Date, etc)
 			t = parameter.ValueType
 			Select case t
 				Case crFieldValueTypeNumberField
 					value.value = 500
 					tmpParameter.Name = parameter.ParameterName
 				Case crFieldValueTypeCurrencyField
 					value.value = 1000.99
 					tmpParameter.name = parameter.ParameterName
 				Case crFieldValueTypeBooleanField
 					value.value = true
 					tmpParameter.name = parameter.ParameterName
 				Case crFieldValueTypeDateField
 					value.value = cDate("Jan 1, 2004")
 					tmpParameter.name = parameter.ParameterName
 				Case crFieldValueTypeTimeField
 					value.value = cDate("12:00:00")
 					tmpParameter.name = parameter.ParameterName
 				Case crFieldValueTypeDateTimeField
 					value.value = cDate("Jan 1, 2004 12:00:00")
 					tmpParameter.name = parameter.ParameterName
 				Case crFieldValueTypeStringField
 					value.value = "Welcome to the Samples"
 					tmpParameter.name = parameter.ParameterName
 			End Select
 			' Add the value of the parameter to the temp parameter
 			tmpParameter.CurrentValues.Add value
 			' Add the temporary parameter to the fields collection
 			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.CrystalReportInteractiveViewer")
 	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:18  James Wong   阅读(460)  评论(0编辑  收藏  举报