Crystal报表对ASP.Net运行时数据源的更改
有一个脚本通过ASP.Net运行水晶报告,导出并发送到电子邮件.
如果我使用当前数据库而不应用登录一切正常但如果我在运行时更改数据源(相同的数据库结构但不同的服务器),那么下面的问题. Crystal 2008运行时
此代码可以更改身份验证,但不能更改数据源/服务器,想知道是否需要引用或导入. Imports System.Collections Imports System.Data Imports T1.Tb.Data Imports System.IO Imports System.Net Imports System.Net.Mail Imports T1.Tb Imports T1.TB.Public Imports CrystalDecisions.CrystalReports.Engine.ReportDocument Imports CrystalDecisions.ReportSource Imports System.Configuration Imports System.Data.SqlClient Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared References CrystalDecisions.CrystalReports.Engine References CrystalDecisions.Shared References System.Web.Services References System.Data References T1.Tb.dll References T1.TB.Public References T1.P1.dll References T1.P1.Public References T1.Tb.Fun public shared function Logon(cr as ReportDocument,server as string,db as string,id as string,pass as string) as Boolean 'Use this to change the database logon info for a crystal report dim ci as ConnectionInfo = new ConnectionInfo() dim subObj as SubreportObject ci.ServerName = server ci.DatabaseName = db ci.UserID = id ci.Password = pass if ApplyLogon(cr,ci) then for each obj as ReportObject in cr.ReportDefinition.ReportObjects If (obj.Kind = ReportObjectKind.SubreportObject) Then // if typeof obj.Kind.GetType() is CrystalDecisions.Shared.ReportObjectKind then subObj = ctype(obj,SubreportObject) if not ApplyLogon(cr.OpenSubreport(subObj.SubreportName),ci) then return(false) end if end if next Logon = True end if end function private shared function ApplyLogon(cr as ReportDocument,ci as ConnectionInfo ) as Boolean dim li as TableLogOnInfo dim success as Boolean for each tbl as Table in cr.Database.Tables li = tbl.LogOnInfo li.ConnectionInfo = ci tbl.ApplyLogOnInfo(li) 'check if logon was successful 'if TestConnectivity returns false,check logon credentials if tbl.TestConnectivity() then 'drop fully qualified table location if tbl.Location.IndexOf(".") > 0 then tbl.Location = tbl.Location.Substring(tbl.Location.LastIndexOf(".") + 1) else tbl.Location = tbl.Location 'THIS IS LINE LEFT OUT IN ALL SAMPLES I SAW end if else success = false exit for end if success = True next end function 解决方法
尝试首先在代码中将查询构建为字符串,然后将其结果传递给Crystal报表以获取报告并通过电子邮件发送.
脚步:1)构建一个查询字符串.2)执行该字符串并使用结果填充数据集内的数据表3)使用该数据集/数据表在水晶报告中生成报告 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – Razor查看if语句是否正确
- 如何测量Live ASP.NET MVC Web应用程序的内存使用情况?
- asp.net-mvc – Asp.net Mvc:Ninject – IPrincipal
- asp.net signalR 专题—— 第一篇 你需要好好掌握的实时通
- 如何以编程方式将触发器添加到ASP.NET UpdatePanel?
- asp.net – 具有2个不同域的mvc3路由
- .net – 在MVC应用程序之间共享视图,逻辑等
- IIS 7中的应用程序池不显示.NET Framework 3.5
- asp.net – 使用SVN和TeamCity的Web应用程序部署工作流程
- asp.net – 什么时候在普通的HTML上使用runat =“server”