如何解决“未知数据库连接器错误”?在水晶报告ASP.NET C# [英] How do I solve "unknown database connector error" in crystal reports ASP.NET C#

查看:122
本文介绍了如何解决“未知数据库连接器错误”?在水晶报告ASP.NET C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的网络应用程序上有一个代码,用PDF格式导出报告。每当我点击我的导出按钮时,我得到未知的数据库连接器错误。下面是代码



if(drpTerm.Text ==First Term)

{

DataTable stud = getClassDetail(ClassID,SessID);

DataSet cds = new DataSet();

cds.Tables .Add(stud);



int Ccount = cds.Tables [0] .Rows.Count;

foreach(DataRow erow in cds .Tables [0] .Rows)

{

int StudentID = int.Parse(erow [StudentID]。ToString());

UpdateFirstTermClassCount(StudentID,SessID,ClassID,Ccount);

}



DataTable std = getClassDetail(ClassID,SessID);

DataTable sess = loadSess(SessID);

DataTable cls = loadClass(ClassID);

DataTable df t = getFirstTermExamScore(SessID,ClassID);

DataTable dftft = getFirstTermFirstTestScore(SessID,ClassID);

DataTable dftst = getFirstTermSecondTestScore(SessID,ClassID);

DataTable dfttt = getFirstTermThirdTestScore(SessID,ClassID);

DataTable dftt = getFirstTermTotalScore(SessID,ClassID);

DataSet dss = new DataSet();



dss.Tables.Add(dft);

dss.Tables.Add(sess);

dss.Tables .Add(cls);

dss.Tables.Add(std);

dss.Tables.Add(dftft);

dss。 Tables.Add(dftst);

dss.Tables.Add(dftt);

dss.Tables.Add(dfttt);



SchoolMgt.termreport.first reports = new SchoolMgt.termreport.first();

if (dss.Tables [0] .Rows.Count> 0)

{

ReportDocument crystalReport = new ReportDocument(); //创建水晶报表对象

crystalReport.Load(Server.MapPath(〜/ termreport / first.rpt)); //报告的路径

TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();

TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();

ConnectionInfo crConnectionInfo = new ConnectionInfo ();

表格CrTables;



//一旦我有了数据,我需要将它应用于报告的连接

ConnectionInfo crConnection = new ConnectionInfo();

crConnection.UserID =;

crConnection.ServerName =;

crConnection.DatabaseName =;

crConnection.Password =;



crystalReport.Database.Tables [FirstTermExams] .SetDataSource(dft);

crystalReport.Database.Tables [FirstTermThirdTestScore]。SetDataSource(dfttt);

crystalReport.Database.Tables [FirstTermSecondTestScore]。SetDataSource(dftst);

crystalReport.Database.Tables [FirstTermTotal]。SetDataSource(dftt);

crystalReport.Database.Tables [StudentDetail]。SetDataSource(std);

crystalReport.Database.Tables [FirstTermFirstTestScore]。SetDataSource(dftft);

crystalReport。 Database.Tables [Session] .SetDataSource(sess);

crystalReport.Database.Tables [Class] .SetDataSource(cls);



//crystalReport.SetDataSource(dss.Tables[0].DefaultView);

CrTables = crystalReport.Database.Tables;

foreach(CrystalDecisions.CrystalReports。 CrTables中的Engine.Table CrTable)

{

crtableLogoninfo = CrTable.LogOnInfo;

crtableLogoninfo.ConnectionInfo = crConnectionInfo;

CrTable.ApplyLogOnInfo(crtableLogoninfo);

}



crystalReport.SetParameterValue(paraSessID,int.Parse(Session [SessID]。ToString()));

crystalReport.SetParameterValue(paraClassID,int.Parse(Session [ ClassID]。ToString()));



CrystalReportViewer1.ReportSource = crystalReport;



crystalReport .ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,Response,true,First Term Report);

//这里我使用了[CrystalDecisions.Shared.ExportFormatType.PortableDocFormat]来导出PDF

}



这是错误消息:

未知数据库连接器ErrorFail ed从数据库中检索数据。文件中的错误5228_3548_ {5AAED871-9021-4B62-9F74-EF2D34C7A07E} .rpt:

未知数据库连接器错误



希望有人可以解决这个问题。

i运行Windows 7和我的水晶报告版本是13



什么我试过了:



i试图验证数据库并稍微修改了我的代码,但仍然是同样的错误。

i have a code on my web application that exports a report in pdf. whenever i click my export button i get "unknown database connector error. below is the code

if (drpTerm.Text == "First Term")
{
DataTable stud = getClassDetail(ClassID, SessID);
DataSet cds = new DataSet();
cds.Tables.Add(stud);

int Ccount = cds.Tables[0].Rows.Count;
foreach (DataRow erow in cds.Tables[0].Rows)
{
int StudentID = int.Parse(erow["StudentID"].ToString());
UpdateFirstTermClassCount(StudentID, SessID, ClassID, Ccount);
}

DataTable std = getClassDetail(ClassID, SessID);
DataTable sess = loadSess(SessID);
DataTable cls = loadClass(ClassID);
DataTable dft = getFirstTermExamScore(SessID, ClassID);
DataTable dftft = getFirstTermFirstTestScore(SessID, ClassID);
DataTable dftst = getFirstTermSecondTestScore(SessID, ClassID);
DataTable dfttt = getFirstTermThirdTestScore(SessID, ClassID);
DataTable dftt = getFirstTermTotalScore(SessID, ClassID);
DataSet dss = new DataSet();

dss.Tables.Add(dft);
dss.Tables.Add(sess);
dss.Tables.Add(cls);
dss.Tables.Add(std);
dss.Tables.Add(dftft);
dss.Tables.Add(dftst);
dss.Tables.Add(dftt);
dss.Tables.Add(dfttt);

SchoolMgt.termreport.first reports = new SchoolMgt.termreport.first();
if (dss.Tables[0].Rows.Count > 0)
{
ReportDocument crystalReport = new ReportDocument(); // creating object of crystal report
crystalReport.Load(Server.MapPath("~/termreport/first.rpt")); // path of report
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;

// Once I have the data I need to apply it to the connection of the report
ConnectionInfo crConnection = new ConnectionInfo();
crConnection.UserID = "";
crConnection.ServerName = "";
crConnection.DatabaseName = "";
crConnection.Password = "";

crystalReport.Database.Tables["FirstTermExams"].SetDataSource(dft);
crystalReport.Database.Tables["FirstTermThirdTestScore"].SetDataSource(dfttt);
crystalReport.Database.Tables["FirstTermSecondTestScore"].SetDataSource(dftst);
crystalReport.Database.Tables["FirstTermTotal"].SetDataSource(dftt);
crystalReport.Database.Tables["StudentDetail"].SetDataSource(std);
crystalReport.Database.Tables["FirstTermFirstTestScore"].SetDataSource(dftft);
crystalReport.Database.Tables["Session"].SetDataSource(sess);
crystalReport.Database.Tables["Class"].SetDataSource(cls);

//crystalReport.SetDataSource(dss.Tables[0].DefaultView);
CrTables = crystalReport.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}

crystalReport.SetParameterValue("paraSessID", int.Parse(Session["SessID"].ToString()));
crystalReport.SetParameterValue("paraClassID", int.Parse(Session["ClassID"].ToString()));

CrystalReportViewer1.ReportSource = crystalReport;

crystalReport.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, "First Term Report");
//here i have used [ CrystalDecisions.Shared.ExportFormatType.PortableDocFormat ] to Export in PDF
}

This is the error message:
Unknown Database Connector ErrorFailed to retrieve data from the database.Error in File first 5228_3548_{5AAED871-9021-4B62-9F74-EF2D34C7A07E}.rpt:
Unknown Database Connector Error

Hope someone can figure this out.
i run windows 7 and my crystal report version is 13

What I have tried:

i have tried to verify database and altered my code a little but still the same error.

推荐答案

您已将ConnectionInfo设置为空白。

您需要设置Server,Database,User&密码或集成安全性为true。



以下代码是我在创建ConnectionInfo时使用的代码;

You have set your ConnectionInfo to blank.
You need to set the Server, Database, User & Password or Integrated Security to true.

The following code is what I use when I create the ConnectionInfo;
ConnectionInfo crConn = new ConnectionInfo();
crConn.Servername = "myServerName";
crConn.DatabaseName = "myDbName";
crConn.IntegratedSecurity = false;
crConn.UserID = "muUserName";
crConn.Password = "myPassword";
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load("myPath");
Tables rptTables = rptDoc.Database.Tables;
for(int i = 0; i < rptTables.Count; i++)
{
    Table rptTbl = rptTables[i];
    TableLogOnInfo tblInfo = tblRpt.LogOnInfo;
    tblInfo.ConnectionInfo = crConn;
    tblInfo.ApplyLogOnInfo(tblInfo);
}



如果存在子报告,则需要对每个子报告中的每个表执行相同的操作



亲切的问候


If Sub Reports exist you need to do the same for each Table in each Sub Report

Kind Regards


这篇关于如何解决“未知数据库连接器错误”?在水晶报告ASP.NET C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆