下面的範例完整的說明如何透過ASP 程式傳入所有型別的參數,包括:Number、Currency、Boolean、Date、Time、DateTime、String。這些不同型別的參數都是在Crystal Report 裡面設定的,因此針對不同型別的參數就必須使用不同的方法來將值傳入。
ViewReportDiscreteParam.asp
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
%>
|
浙公网安备 33010602011771号