我做了一个报表,连接数据集的。但是运行的时候老提示数据库登陆,而且填写好用户名和密码的后还登陆不上。怎么去掉登陆提示啊,我用的是oracle数据库。我从网上找的资料都试了,不好用。下面是我写的代码:
protected void Page_Load(object sender, EventArgs e)
{
DataSet dr = DB.reDs("select * from JJ_BILL");//返回数据集
TableLogOnInfo logOnInfo = new TableLogOnInfo();
ReportDocument oRpt = new ReportDocument();
string path1;
path1 = Server.MapPath("CrystalReport.rpt");
oRpt.Load(path1);
oRpt.SetDataSource(dr);
for (int i = 0; i == oRpt.Database.Tables.Count - 1; i++)
{
logOnInfo.ConnectionInfo.ServerName = "ORCL_wang.";
logOnInfo.ConnectionInfo.DatabaseName = "";
logOnInfo.ConnectionInfo.UserID = "GX_RLGL";
logOnInfo.ConnectionInfo.Password = "ok";
oRpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);
}
CrystalReportViewer1.ReportSource = oRpt;
}
还有就是预览的时候怎么传参数啊。
DataSet dr = DB.reDs("select * from JJ_BILL");
你这里已经返回数据集了,为啥后面还要设置连接信息?
第一个问题:
报表提示登录信息有个巧的办法就是 把数据集 也就是你的 dr.Tables[0].TableName="你查询的表的名字" 。 这样就不会提示登录信息了。
第二个问题:
传参可以通过下面的代码来:
ParameterFields pfs = new ParameterFields();
var paramField = new ParameterField();var discreteVal = new ParameterDiscreteValue();把你的代码改成:
paramField.ParameterFieldName = "报表参数名";
discreteVal.Value = "参数值";
paramField.CurrentValues.Add(discreteVal);
this.pfs.Add(paramField);
重复加多个参数
最后设置参数信息:
CrystalReportViewer1.ParameterFieldInfo = pfs;
DataSet dr = DB.reDs("select * from JJ_BILL");//返回数据集
TableLogOnInfo logOnInfo = new TableLogOnInfo();
ReportDocument oRpt = new ReportDocument();
string path1;
path1 = Server.MapPath("CrystalReport.rpt");
oRpt.Load(path1);
dr.Tables[0].TableName="T_Demo";
oRpt.SetDataSource(dr);
for (int i = 0; i == oRpt.Database.Tables.Count - 1; i++)
{
logOnInfo.ConnectionInfo.ServerName = "ORCL_wang.";
logOnInfo.ConnectionInfo.DatabaseName = "";
logOnInfo.ConnectionInfo.UserID = "GX_RLGL";
logOnInfo.ConnectionInfo.Password = "ok";
oRpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);}
CrystalReportViewer1.ReportSource = oRpt;CrystalReportViewer1.ParameterFieldInfo = pfs;
楼主想要传参预览,至少page_load时要带个参数过来撒。
其实很简单,连接字符串的问题。看看里面有没有 password=你的密码 ,没有的话加上就好了
水晶报表经常报错,我用得实在受不了,就换finereport了