水晶报表push模式和dataset的建立
我已经建立好了水晶报表的模版在crystal reports9下面此时用的是pull模式,直接通过crystal reports本身连接数据库(oracle),可以做出来一
张完整的报表。
---------------------------------------------------
我的需求是要web上,形成一个交互的报表形式。
所以要用到push模式。通过asp.net中的ado.net获取数据库连接并且得到数据
然后在塞给已经做好的crystal reports模版。动态的显示数据。
------------------------------------------------------------
此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。
我的问题也就出来了:(因为我本身不太会asp.net和c#)
如何组装DataSet,并如何传给报表。
我在网上找了些例子代码如下:
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();//强类型化数据集
//这也是问题。。咋定义这个myDataset1呀;
ada.Fill(m, "products ");
myReport2 m2 = new myReport2(); //问题在这网上的例子是自己定义的
crystal reports模版。而我的工程里边 这么定义类就报错,说没这个包。
m2.SetDataSource(m.Tables[0]);
this.crystalReportViewer1.ReportSource=m2;
this.crystalReportViewer1.RefreshReport();
下面是我写的请仔细看一下
string connStr = "Data Source=XY;User ID=system;Password=xiaoye";
//查询语句
string sqlStr = "select * from jsl";
OracleConnection oc = new OracleConnection(connStr);
OracleDataAdapter oda = new OracleDataAdapter(sqlStr, oc);
DataSet ds = new DataSet();//这个跟例子中的强烈类型有什么区别吗?这个是DataSet类
//把查询的数据放到ds里.
oda.Fill(ds);
//返回DataTable
CrystalReport mycr = new CrystalReport();//不能在这里这么用,不知道为什么 ,错误为CS0246: 找不到类型或命名空间名称“CrystalReport”(是否缺少 using 指令或程序集引用?)
mycr.SetDataSource(ds.Tables[0]);
this.CrystalReportViewer1.ReportSource = mycr;
this.CrystalReportViewer1.RefreshReport();
------------------------------------------------------------------------------
小弟很急,望大家给予多多帮忙,分不够 在加 谢谢!!
--------------------编程问答-------------------- 没有帮忙的吗?没人会呀.
我自己顶 顶 --------------------编程问答-------------------- 我的例子你参考下!!!!
要是可以就给分吧!!
我就差你这50分升星...到时候散多点给你 !!呵呵 !!
我给你贴代码:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
myConnection.Open();
////DataSet ds = new DataSet();
////DataSource oCR = new MyReport();
////SqlConnection MyConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString1"]);
////MyConn.Open();
//////使用存储过程
////SqlCommand cmd = new SqlCommand("scm_sup", MyConn);
////cmd.CommandType = CommandType.StoredProcedure;
////SqlDataAdapter MyAdapter = new SqlDataAdapter(cmd);
////MyAdapter.Fill(ds, "tbtree");
////oCR.SetDataSource(ds);
////this.CrystalReportViewer1.ReportSource = oCR;
////this.CrystalReportViewer1.DataBind();
////string sql = "select top 10 * from bi_t_item_info";
SqlDataAdapter da = new SqlDataAdapter("scm_sup", myConnection);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@supcust_no", SqlDbType.NVarChar, 10);
da.SelectCommand.Parameters["@supcust_no"].Value = "%";
DataSet ds = new DataSet();
//SqlCommand sqlCmd = new SqlCommand(sql, myConnection);
//sqlAd.SelectCommand = sqlCmd;
da.Fill(ds,"bi");
CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport2.rpt"));
//注意此处必需指明Dataset中的表的名称,否则会提示“您请求的报表需要更多信息.”
CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["bi"]);
//{?}中的参数可以不用赋值,即使赋了值也不起作用。
// CrystalReportSource1.ReportDocument.ParameterFields["Parm"].CurrentValues.AddValue("1234567");
CrystalReportSource1.DataBind();
} --------------------编程问答-------------------- 等着啊,我晚上回家研究一下.要是成了..小弟 给你加100
如果还有那个哥们..按照我的套路给我分析一下..
我还加分.. --------------------编程问答-------------------- 还是没搞顶啊,希望大家继续顶!!! --------------------编程问答-------------------- --------------------编程问答-------------------- 先mark再看。。。。 --------------------编程问答-------------------- 帮你顶下哈 --------------------编程问答-------------------- 自己已经解决了了 --------------------编程问答-------------------- 楼主公布下是怎么解决的,感谢 --------------------编程问答-------------------- oooooooo
补充:.NET技术 , ASP.NET