這個範例和Java 範例程式要表達的是一模一樣,透過ASP 程式在報表產生之前將資料連結的位址置換,以達成一般專案中測試環境資料與正式上線環境資料的聯結。
SimpleChangeDbase_OLEDB.asp
SimpleChangeDbase_OLEDB.asp
Code: |
<%@ Language=VBScript CodePage=65001 %> <% Dim CMS Dim Username Dim Password Dim Authtype CMS = "tom" Username = "administrator" Password = "" Authtype = "secEnterprise" 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 ReportName Dim Reports Dim Report ReportName = "報表名稱" Set Reports = iStore.Query("SELECT SI_ID, SI_NAME FROM CI_INFOOBJECTS WHERE SI_PROGID = 'CrystalEnterprise.Report' and SI_NAME='" + ReportName + "'") Report = Reports.Item(1).Properties("SI_ID") Set rptappfactory = iStore.EnterpriseSession.Service("", "RASReportFactory") Set Session("oclientDoc") = rptAppFactory.openDocument(Reports.item(1)) ' Set OLEDB connect from Northwind to Northwind-Production dataSource = "tom" initialCatalog = "Xtreme-Production" username = "xtremep" password = "xtremep" Set oDBInfo = Session("oClientDoc").DatabaseController.GetConnectionInfos().Item(0) Set pbLevel1 = oDBInfo.Attributes pbLevel1.Item("QE_ServerDescription") = dataSource Set pbLevel2 = pbLevel1.item("QE_LogonProperties") With pbLevel2 .Item("Data Source") = dataSource .Item("Initial Catalog") = initialCatalog End With pbLevel1.Item("QE_LogonProperties") = pbLevel2 oDBInfo.Attributes = pbLevel1 oDBInfo.UserName = username oDBInfo.Password = password Set Tables = Session("oClientDoc").DataDefController.Database.Tables For Each table in Tables Set newTable = Table.Clone newTable.ConnectionInfo = oDBInfo newTable.QualifiedName = Table.Name Session("oClientDoc").DatabaseController.SetTableLocation table, newTable Next Dim Viewer Set Viewer = CreateObject("CrystalReports.CrystalReportViewer") With Viewer .ReportSource = Session("oClientDoc").ReportSource .EnterpriseLogon = iStore.EnterpriseSession 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 %> |