解决VS2005水晶报表多表关联去除数据库登录框
www.diybl.com 时间 : 2007-12-22 作者:佚名 编辑:本站 点击: 511 [ 评论 ]
-
-
VS2005自带水晶报表,新建CrystalReport1.rpt,然后跟着向导,选择报表样式,建立数据库连接,选择要显示的段,然后完成就好了,然后绑定crystalReportViewer等等,这些就不细说了,
单个表报表没什么问题,但是开发时怎么可能都是单个表吧,这概率也太小了,还是数据库设计的不合理,
但多表关联进来,显示报表时会提示一个数据库登录,
解决问题很简单,
选看下面的代码 ,
DataSet ds=new DataSet();
SqlDataAdapter da1=new SqlDataAdapter("select * from table1",myconn);
SqlDataAdapter da2=new SqlDataAdapter("select * from table2",myconn);
da1.Fill(ds,"table1");
da2.Fill(ds,"table2");
CrystalReport1 rpt=new CrystalReport1();
rpt.SetDataSource(ds);
这样,把在报表向导中的两个表在程序中都添加进来,就不会出现数据库登录的窗口了,
但是这样也许与你要查询的结果不一样,会出现数据交叉,
再看下面的,
TableLogOnInfo LInfo = new TableLogOnInfo();
LInfo.ConnectionInfo.ServerName = Application.StartupPath + "eastmap.esp";//
LInfo.ConnectionInfo.DatabaseName = "eastmap";
LInfo.ConnectionInfo.UserID = "";
LInfo.ConnectionInfo.Password = "user1";
for (int i = 0; i < cr.Database.Tables.Count; i++)
{
cr.Database.Tables[i].ApplyLogOnInfo(LInfo);
}
这一段,重新验证数据表,这样一来,也不会出现数据库提示窗口,
比上面的方法要好,把代码贴出来,大家做个参考,思路多多,,有更好的方法,千万不要吝啬哦,,