开发者

Why do I get "Database logon failed" in Crystal Reports when using .NET object as datasource?

I am creating a simple report using a .NET object from my project as datasource, using SetDatasource() method. However, when I run the report I get "Database logon failed" error. This report is not connecting to a DB at all - have I missed something here?

Many thanks, D.

ADDED: I guess it will probably help if I include the Controller action. It's a quick and dirty test, not what the final method will look like:

public ActionResult StewardSheets(int showId, int groupId)
{
    ReportClass rptH = new ReportClass();
    rptH.FileName = DataHelper.getReportFilePath("Test.rpt",this);

    NZDSDataContext dataContext = new NZDSDataContext();
    var showDetails = (from s in dataContext.Shows
                       where s.ID == showId
                       select new StewardSheetModel
                       {
                           EventDate = s.EventDate.ToLongDateString(),
                           Region = s.Region.Name,
                           ShowTitle = s.Name
                       }).FirstOrDefault();

    List<StewardSheetModel> details = new List<StewardSheetModel>();
    details.Add(showDetails)开发者_运维知识库;

    rptH.SetDataSource(details);

    rptH.Refresh();
    Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
    return File(stream, "application/pdf");
}

FIXED: D'oh! I used ReportClass instead of ReportDocument. Changed that line, and also use Refresh() since Load() is not a valid method. Now it works just fine!


If you are using ADO.NET DataSets as your datasource, it is possible for the DataSet definition to get out of sync with the definition in the report. Selecting the Database->Verify Database option from the report designer's context menu will often fix this problem.

Also, you will get this error if your report has linked tables and you fail to set the datasource for one of the tables. The fix is either to remove the table from the report, or set it's datasource correctly.

For example, if your report has a Customers table and an Orders table linked together on some key you will need to set the datasource for both tables. If you forget and set only one, you will get a "Database logon failure" error which is fairly misleading.

// Create a new customer orders report.
CustomerOrdersReport report = new CustomerOrdersReport();

// Get the report data.
DataTable customersTable = getCustomersData();
DataTable ordersTable = getOrdersData();

// Set datasources.
report.Database.Tables["Customers"].SetDataSource(customersTable);
report.Database.Tables["Orders"].SetDataSource(ordersTable ); // Don't forget this line like I did!!


Please try, Right-Click on Report -> Database-> Verify Database.

If dialog box appears, locate your DataSet .xsd file (e.g DataSet1.xsd) and Apply.

My problem solved in this way.


I started getting the notorious "database logon failed" error on a Windows Server 2016 machine after the July 2018 windows server updates. The report ran fine in Visual Studio 2017 on my dev machine, but not in IIS on Windows Server 2016 in production.

After a day of investigation, I installed the Microsoft OLE DB Driver for SQL Server on my development machine - https://learn.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-2017. I created a report connection in the Crystal report database expert using the MSOLEDBSQL provider. I had to install the Microsoft OLE DB Driver for SQL Server on the production Windows Server 2016 machine as well.

It turns out Microsoft has decided to deprecate the Microsoft OLE DB Provider for SQL Server. This and the native client no longer seem to work with Crystal Reports.


I was struggling with this error for a couple of days. I have a .NET webforms project which uses CrystalReportViewer to load a Crystal Report. Instead of the report loading, I kept getting "Database logon failed".

I opened the RPT file in Crystal Report Designer and went to Database -> Verify Database

Why do I get "Database logon failed" in Crystal Reports when using .NET object as datasource?

This gave me a more specific error. FINALLY!!!

Why do I get "Database logon failed" in Crystal Reports when using .NET object as datasource?

I tracked down the XSD file, moved it to the right location and BOOM


I started getting this dialog popping up after I changed the name of the .NET object my reports were referring to. To get rid the dialog, I had to ensure that none of my report sections or fields referred to the old name of the .Net object which was easy to spot. The fix for me was using the rename function in the Database Expert for the report.


Fixed by using the appropriate class: ReportDocument instead of ReportClass.


One of the reason of this error is, when u pass null object to a sub report ....SetDataSource(data) , where data is null


I had to do write the below line of code to get rid of the "Database login error"

CrystalDecisions.Shared.TableLogOnInfo li;
li.ConnectionInfo.IntegratedSecurity = false;


Mine did it when I was sending in a DataSet instead of a DataTable.

ReportDocument.SetDataSource(dataset.Tables[0]);


In my case i forget to set datasource to a datatable. something like this

rpt.Database.Tables("Account").SetDataSource(CType(DataSource.Account, DataTable))


Use native client Connection Version 10.


I hade the same problem and it was due to the fact that I accidentally added anoher DataTable with the same name.

var ds = new OrderDetail();
var dt = new OrderDetail.ResultDataTable();
//fill dataset here
ds.Tables.Add(dt);

After setting that DataSet as datasource I got the login failed error when exporting the report.

I then added a line to remove the DataTable before adding the new DataTable:

ds.Tables.Remove(dt.TableName);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜