如果傳遞的參數值必須有中文的話,就必須參考下面的範例程式,在ASP 程式裡面先將編碼改為Unicode,否則報表中將會出現亂碼。

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
 %>
posted on 2005-11-10 13:21  James Wong   阅读(311)  评论(0编辑  收藏  举报