Symptom
- While opening the report in custom .NET web application error is thrown.
- Error: Failed to open the connection. Details: [Database Vendor Code: 17]
Environment
- Windows 7
- Visual Studio 2010
- Crystal Reports for Visual Studio 2010
- SQL Server 2008 R2
- Web application using .NET Framework 4.0
Cause
- Error code 17 refers to SQL Server does not exist or access denied.
- Code was missing the setting for tables connectivity due to which it was not able to connect to the database.
Resolution
- Set the TableLogOnInfo object for a tables using following code:
In VB.NET
Private Sub ConfigureCrystalReports()
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")
myCrystalReportViewer.ReportSource = reportPath
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
SetDBLogonForReport(myConnectionInfo)
myConnectionInfo.ServerName = "localhost"
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "1234"
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
ConfigureCrystalReports()
End Sub
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)
Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer.LogOnInfo
For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos
myTableLogOnInfo.ConnectionInfo = myConnectionInfo
Next
End Sub
In C#
private void ConfigureCrystalReports()
{
string reportPath = Server.MapPath("NorthwindCustomers.rpt");
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "localhost";
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "1234";
crystalReportViewer.ReportSource = reportPath;
SetDBLogonForReport(connectionInfo);
}
private void Page_Init(object sender, EventArgs e)
{
ConfigureCrystalReports();
}
private void SetDBLogonForReport(ConnectionInfo connectionInfo)
{
TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;
foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
{
tableLogOnInfo.ConnectionInfo = connectionInfo;
}
}
Keywords
KBA , BI-DEV-NET , BI Software Development Kits (SDKs) - .NET or Other , Problem
Product
SAP Crystal Reports, developer version for Microsoft Visual Studio