每次在crystal上加载报告时,我都会遇到一个问题。总是要求数据库登录,但当我输入密码(这是我连接的密码)时,它总是说登录失败。
这是我的代码:
Dim _ReportLogonInfos As New TableLogOnInfos
Dim _ReportLogonInfo As New TableLogOnInfo
Dim _ReportConInfo As New ConnectionInfo
Dim _Tables As Tables
Dim _Table As Table
With _ReportConInfo
.ServerName = "localhost"
.DatabaseName = "database"
.UserID = "root"
.Password = "Qwerty123"
End With
Dim _Report As New rptPrntIss
_Tables = _Report.Database.Tables
For Each _Table In _Tables
_ReportLogonInfo = _Table.LogOnInfo
_ReportLogonInfo.ConnectionInfo = _ReportConInfo
_Table.ApplyLogOnInfo(_ReportLogonInfo)
Next
CrystalReportViewer1.ReportSource = _Report
除了你设置的内容,我还设置了以下内容(很抱歉,这是在C#中,而不是VB.NET中-希望你能翻译):
1
//SET DATASOURCE FOR EACH SUBREPORT IN REPORT
foreach (CrystalDecisions.CrystalReports.Engine.Section section in CrystalReportSource2.ReportDocument.ReportDefinition.Sections)
{
// In each section we need to loop through all the reporting objects
foreach (CrystalDecisions.CrystalReports.Engine.ReportObject reportObject in section.ReportObjects)
{
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
SubreportObject subReport = (SubreportObject)reportObject;
ReportDocument subDocument = subReport.OpenSubreport(subReport.SubreportName);
foreach (CrystalDecisions.CrystalReports.Engine.Table table in subDocument.Database.Tables)
{
// Cache the logon info block
TableLogOnInfo logOnInfo = table.LogOnInfo;
// Set the connection
logOnInfo.ConnectionInfo = crConnectionInfo;
// Apply the connection to the table!
table.ApplyLogOnInfo(logOnInfo);
}
}
}
}
2
if (CrystalReportSource2.ReportDocument.DataSourceConnections.Count > 0)
CrystalReportSource2.ReportDocument.DataSourceConnections[0].SetConnection(server, db, crystalUser, pwd);
3
CrystalReportSource2.ReportDocument.SetDatabaseLogon(crystalUser, pwd, server, db);