如果傳遞的參數值必須有中文的話,就必須參考下面的範例程式,在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
%>
|
浙公网安备 33010602011771号