日期:2014-05-20  浏览次数:20769 次

~~~我所遇到的WINFORM下水晶报表问题,UP有分
最近开发遇到水晶报表的问题,查阅了些相关资料,有些虽理解犹欠佳,帖出来希望共勉.亦希望有人解惑.,UP有分.

1.在pull模式下,直接连接数据库,即oledb,水晶报表里的字段是直接从【字段资源管理器】下的【数据库字段】拖过去的,关联的是Products表,Form窗体load时的代码如下,测试通过:
reportDocument1   =   new   CrystalDecisions.CrystalReports.Engine.ReportDocument();
reportDocument1.Load(@ "E:\z7z8\Test1\myTestRpt1.rpt ");
#region   解决登陆
//foreach(CrystalDecisions.CrystalReports.Engine.Table   tb   in   reportDocument1.Database.Tables)
//{
//CrystalDecisions.Shared.TableLogOnInfo   logininfo=tb.LogOnInfo;
//logininfo.ConnectionInfo.ServerName=@ "C47ED435468B448\DONGWEI ";
//logininfo.ConnectionInfo.DatabaseName= "Northwind ";
//logininfo.ConnectionInfo.UserID= "sa ";
//logininfo.ConnectionInfo.Password= " ";
//tb.ApplyLogOnInfo(logininfo);
//}
#endregion
crystalReportViewer1.ReportSource=reportDocument1;

我的疑问是:我看教程的时候,讲到必须要验证,也就是我注释的那一段,但是我注释后依然能正常运行.请问这是为什么?

2.在用PUSH模型时,需要自己建立XSD文件,这是一个XML类型的文件,他存储的数据源的结构,此时水晶报表里的字段是通过ADO.NET连接获取的,关联的也是products表,测试通过的代码如下:

SqlConnection   conn   =   new   SqlConnection( "server=(local)\\dongwei;database=northwind;Trusted_Connection=yes ");
conn.Open();
SqlCommand   com   =   new   SqlCommand( "select   *   from   products ",conn);
SqlDataAdapter   ada   =   new   SqlDataAdapter(com);
myDataset1   m=   new   myDataset1();//强类型化数据集
ada.Fill(m, "products ");
myReport2   m2   =   new   myReport2();
m2.SetDataSource(m.Tables[0]);
this.crystalReportViewer1.ReportSource=m2;
this.crystalReportViewer1.RefreshReport();,

我想问的是,我能不能使用类型化数据集,自己生成相关的XML文件,然后进行绑定.我的代码如下:

System.Data.DataSet   ds   =   new   System.Data.DataSet();
ds.Tables.Add(myDt);//myDt是我用来封装数据的dataTable,此时里面已经存在数据
ds.WriteXml( "myDt.Xml ",System.Data.XmlWriteMode.WriteSchema);
myRpt3.SetDataSource( "myDt.Xml ");//水晶报表里没有拖入字段
this.crystalReportViewer1.ReportSource=myRpt3;
this.crystalReportViewer1.RefreshReport();

如果可以使用弱类型化数据集,我上面的这段代码应该如何更改,谢谢~~~


------解决方案--------------------
up
------解决方案--------------------
看着累啊
------解决方案--------------------
为啥不用push的方法
------解决方案--------------------
up
------解决方案--------------------
up
------解决方案--------------------
我的疑问是:我看教程的时候,讲到必须要验证,也就是我注释的那一段,但是我注释后依然能正常运行.请问这是为什么?

----------------------------------------------
那是因为你还没有部署,只是本机运行,其他机子访问你就会提示输入帐号密码的
------解决方案--------------------
我只用过push模式

该模式通过XSD文件来设计报表 运行时刻连接数据库取得数据集即可
------解决方案--------------------
mark 吧, 水晶报表只是半通水
------解决方案--------------------
1、报表记住了你操作时连接的那个啊,如果你需要连接其它的,或者数据库密码变了,你看它出不出连接对话框!
2、我不知道你这样后,那报表怎么设计的?

------解决方案--------------------
不懂,

------解决方案--------------------


------解决方案--------------------