~~~我所遇到的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();
如果可以使用弱类型化数据集,我上面的这段代码应该如何更改,谢谢~~~