如果傳遞的參數值必須有中文的話,就必須參考下面的範例程式,在ASP 程式裡面先將編碼改為Unicode,否則報表中將會出現亂碼。
SimpleParamReport2.asp
ViewReportDiscreteParam_2.asp
SimpleParamReport2.asp
Code: |
<%@ Language=VBScript %> <% Option Explicit %> <% Response.ContentType = "text/html" Response.CharSet = "Big5" Session.CodePage = 65001 %> <a href="ViewReportDiscreteParam_2.asp?param=<% = Server.UrlEncode("中文AAAA中文") %>"> 顯示報表 </a> |
ViewReportDiscreteParam_2.asp
Code: |
<%@ Language=VBScript %> <% Option Explicit %> <% Response.ContentType = "text/html" Response.CharSet = "UTF-8" Session.CodePage = 65001 %> <% Dim CMS Dim Username Dim Password Dim Authtype Dim ReportName 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_NAME='" + ReportName + "'") Report = Reports.Item(1).Properties("SI_ID") Dim reportParameters Dim fields Dim parameter Dim value Dim myParam myParam = request.QueryString("param") Set reportParameters = Reports.Item(1).PluginInterface("Report").ReportParameters If reportParameters.Count > 0 then 'Create a new Fields Collection Object Set fields = CreateObject("CrystalReports.Fields") Dim paramValue Dim tmpParameter For each parameter in reportParameters Set paramValue = createobject("CrystalReports.ParameterFieldDiscreteValue") Set tmpParameter = CreateObject("CrystalReports.ParameterField") paramValue.value = myParam 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 %> |