下面的範例完整的說明如何透過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 %> |