Я разработал отчет Crystal на своем локальном компьютере и могу отобразить отчет на своем локальном веб-сайте, используя .ExportToHttpResponse, но как только я переместил свой код на рабочий сервер, я получил ошибку «Ошибка входа в базу данных».Я в основном использовал файл набора данных .XML в качестве источника для локальной разработки отчета.Это был мой код:
Я вызываю метод для отображения отчета:
private void RenderCrystalReports(string rptName, string pdfReportName, DataSet dataForReport)
{
string reportPath = Server.MapPath(@"\App_Data\Reports\" + rptName);
ReportDocument report = new ReportDocument();
report.Load(reportPath, OpenReportMethod.OpenReportByTempCopy);
SetDBLogonForReport(ref report);
report.SetDataSource(dataForReport);
SetDBLogonForReport(ref report);
report.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, true, pdfReportName);
}
и для получения набора данных, который у меня есть:
private DataSet GetReportData(DateTime from, DateTime to, int userID, bool totalsOnly)
{
DataTable Job = _reportRepository.GetAccountHistoryJob(from, to, userID, totalsOnly);
Job.TableName = "Accounts";
DataSet ds = new DataSet("AccountsDS");
ds.Tables.AddRange(new DataTable[] { Job });
return ds;
}
и насколькоЯ обеспокоен тем, что метод, описанный ниже, должен помочь мне подключиться к удаленному серверу SQL:
private void SetDBLogonForReport(ref ReportDocument reportDocument)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString());
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.DatabaseName = builder.InitialCatalog;
connectionInfo.UserID = builder.UserID;
connectionInfo.Password = builder.Password;
connectionInfo.ServerName = builder.DataSource;
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
Почему это не работает?Я только что выяснил, что даже локально используется набор данных .xml, так как мне использовать полученный набор данных sql?