我在asp.net上做了一个水晶报告。我的数据库是MS-Access 2007.我使用数据集将报告与数据库连接起来。现在,当我执行程序时,它会出现错误“数据库登录失败”。
如何解决这个问题...
请帮助..
此致 阿布舍克巴克
答案 0 :(得分:0)
我不知道你怎么能连接数据集。从您的帖子中我假设您可能正在填充数据集并使用此数据集与报告进行数据绑定。
在这种情况下,您应该在数据集中为表格提供一个名称。
数据集中表的名称必须与设计报表的表或视图完全匹配。否则Crystal报告将无法找到它。
ds.Tables[0].Name="yourTableorViewNameHere";
您还需要为报告提供登录信息。
private void myLogonInfo(CrystalDecisions.CrystalReports.Engine.ReportDocument myReport)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo();
string server = "MyServer";
string userID = "User1";
string passwd = "MyPw";
string DBNAME = "MyDB";
int i = 0;
for (i = 0; i <= myReport.Database.Tables.Count - 1; i++)
{
logOnInfo.ConnectionInfo.ServerName = server;
logOnInfo.ConnectionInfo.UserID = userID;
logOnInfo.ConnectionInfo.Password = passwd;
logOnInfo.ConnectionInfo.DatabaseName = DBNAME;
myReport.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
}
}
修改强>
以下是初始化报告的代码
private void ShowRep(dataset ds)
{
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load(Server.MapPath("MyReport.rpt"));
//either assign the dataset to the report here
rptDoc.SetDataSource(ds);
//or provide the login details
//myLogonInfo(rptDoc);
//assign record filtering here
//rptDoc.RecordSelectionFormula = "{RDNewCollections.tdate}>=" + GetCrystalDate(ffdt.Text) ;
// set some report parameters
rptDoc.SetParameterValue(0, ffdt.Text);
rptDoc.SetParameterValue(1, tdt.Text);
//finally assign the report to the reportviewer
Crv.ReportSource = rptDoc;
}
您可以从页面加载中调用它。
如果您正在使用数据集,则无需传递logonifo。如果您不使用数据集,则必须调用logoninfo。
答案 1 :(得分:-1)
使用Access打开您的db文件,然后转到选项Client。
之后它会起作用。