您可以使用下面的代码应用某些连接详细信息在运行时的报告。
请在加载报告rpt文件后使用该方法,并将所需的连接详细信息传递给方法,它将从传递的连接详细信息中获取报告数据。
public static void CrystalReportLogOn(ReportDocument reportParameters,
string serverName,
string databaseName,
string userName,
string password)
{
TableLogOnInfo logOnInfo;
ReportDocument subRd;
Sections sects;
ReportObjects ros;
SubreportObject sro;
if (reportParameters == null)
{
throw new ArgumentNullException("reportParameters");
}
try
{
foreach (CrystalDecisions.CrystalReports.Engine.Table t in reportParameters.Database.Tables)
{
logOnInfo = t.LogOnInfo;
logOnInfo.ReportName = reportParameters.Name;
logOnInfo.ConnectionInfo.ServerName = serverName;
logOnInfo.ConnectionInfo.DatabaseName = databaseName;
logOnInfo.ConnectionInfo.UserID = userName;
logOnInfo.ConnectionInfo.Password = password;
logOnInfo.TableName = t.Name;
t.ApplyLogOnInfo(logOnInfo);
t.Location = t.Name;
}
}
catch
{
throw;
}
sects = reportParameters.ReportDefinition.Sections;
foreach (Section sect in sects)
{
ros = sect.ReportObjects;
foreach (ReportObject ro in ros)
{
if (ro.Kind == ReportObjectKind.SubreportObject)
{
sro = (SubreportObject)ro;
subRd = sro.OpenSubreport(sro.SubreportName);
try
{
foreach (CrystalDecisions.CrystalReports.Engine.Table t in subRd.Database.Tables)
{
logOnInfo = t.LogOnInfo;
logOnInfo.ReportName = reportParameters.Name;
logOnInfo.ConnectionInfo.ServerName = serverName;
logOnInfo.ConnectionInfo.DatabaseName = databaseName;
logOnInfo.ConnectionInfo.UserID = userName;
logOnInfo.ConnectionInfo.Password = password;
logOnInfo.TableName = t.Name;
t.ApplyLogOnInfo(logOnInfo);
}
}
catch
{
throw;
}
}
}
}
}
嗨Dusty ...感谢您的帮助。我实现了上面的代码行,我也自己做了一些研究。所以hereis我的代码: 私人无效AssignConnectionInfo(的ReportDocument文件,ConnectionInfo crConnection) { 的foreach(CrystalDecisions.CrystalReports.Engine.Table crTable在document.Database.Tables) { – suzi167 2009-09-14 19:48:47
这里是代码 - 遗憾击中门柱太早之前: 私人无效AssignConnection(的ReportDocument文件,ConnectionInfo crConnection) { 的foreach(CrystalDecisions.CrystalReports.Engine.Table crTable在document.Database.Tables) { CrystalDecisions.Shared.TableLogOnInfo tableLogonInfo = crTable.LogOnInfo; tableLogonInfo.ConnectionInfo = crConnection; crTable.ApplyLogOnInfo(tableLogonInfo); CrystalReportViewer1.ReportSource = document; CrystalReportViewer1.RefreshReport(); } crConnection在经过时具有正确的值。 – suzi167 2009-09-14 19:52:54
格式化不是很好的方式...有没有一种方法来格式化我的消息(如标签或其他东西) – suzi167 2009-09-14 19:53:57