您可以使用下面的代碼應用某些連接詳細信息在運行時的報告。
請在加載報告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