Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Crystal Reports Failed Database Login

After spending a good 3 to 4 hours on google trying to find any solution to my problem I haven't had much luck.

Basically, we use crystal reports for our .NET applications with a sql server back end, we have many clients each with their own server and so our reports need to have their connections dynamically set. Up until a week ago this worked fine. However a few days ago a client reported they were getting a database login prompt for a report (only one report, the rest worked fine). We were quite stumped but we managed to reproduce it on a netbook which didn't have visual studio or sql server installed. In the end the dev decided to reproduce the report in the hope it was just an oddity in that particular report.

Unfortunately a new client today also experienced the same problem, but this time for every crystal report they had - and also they worked on the netbook, so we are really quite lost here.

Below is a screenshot of what our clients get presented with -

Screenshot

and here is the code that I use to set the connection information in the report

                cI.ServerName = (string)builder["Data Source"];
                cI.DatabaseName = (string)builder["Initial Catalog"];
                cI.UserID = (string)builder["User ID"];
                cI.Password = (string)builder["Password"];

                foreach (IConnectionInfo info in cryRpt.DataSourceConnections)
                {
                    info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
                }

                foreach (ReportDocument sub in cryRpt.Subreports)
                {
                    foreach (IConnectionInfo info in sub.DataSourceConnections)
                    {
                        info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
                    }
                }

As always, any help much appreciated.

like image 912
Marlon Avatar asked Oct 14 '22 06:10

Marlon


2 Answers

Perhaps the issue is the way that you set the authentication information. Have you considered using the ReportDocument.SetDatabaseLogon method? Call it once for each unique DB connection in the report. It will eliminate the need to enumerate all of the tables in the report and, as I recall, the need to enumerate the subreports' tables as well.

like image 153
craig Avatar answered Nov 15 '22 04:11

craig


Solution found, it turned out the connection builder that client used to set up their system did not put the instance name in. Rather confusingly the .net app worked fine with it like that. However, with that sorted crystal reports now work flawlessly.

Thank you for your input Craig.

like image 20
Marlon Avatar answered Nov 15 '22 04:11

Marlon