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

新手对水晶报表的问题~~
做了几张水晶报表,先从拉模式再到简单的推模式,然后到多表的推模式~~,但在多表推模式时就开始困惑了~~
1、先做了Master.xsd的DataSet(拖了两张表,没任何关联)
2、利用向导做了masterSlave.rpt水晶报表(两表有关联)
3、建立MasterSlave.aspx,并添加一个水晶报表查看器
MasterSlave.aspx的cs代码如下
using   System.Data.SqlClient;
using   CrystalDecisions.Shared;//负责解释TableLogOnInfo类   类
using   CrystalDecisions.CrystalReports.Engine;//负责解释ReportDocument类

public   partial   class   MasterSlave   :   System.Web.UI.Page
{
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                ReportDocument   repDoc   =   new   ReportDocument();
                repDoc.Load(Server.MapPath( "masterSlave.rpt "));
                string   connString   =   "server=(local);DataBase=Northwind;Uid=test;PWD=test ";
                SqlConnection   Conn   =   new   SqlConnection(connString);
                Conn.Open();
                string   selectOrder   =   "select   OrderID,CustomerID,EmployeeID,OrderDate   from   Orders ";
                string   selectOrderDetail   =   "select   ProductID,UnitPrice,Discount   from   [Order   Details] ";
                SqlDataAdapter   sdaOrder   =   new   SqlDataAdapter(selectOrder,   Conn);
                SqlDataAdapter   sdaOrderDetail   =   new   SqlDataAdapter(selectOrderDetail,   Conn);
                //   DataSet   ds   =   new   DataSet();//使用DataSet出现在输入登陆界面
                Master   ds   =   new   Master();     //   使用Master(为DataSet实例)没有出现在输入登陆界面   ,但没有报表数据~~只有导航    
                sdaOrder.Fill(ds,   "Orders ");
                sdaOrderDetail.Fill(ds,   "OrdersDetail ");
                repDoc.SetDataSource(ds);
                ReportViewer.ReportSource   =   repDoc;
               
        }
}
    //   DataSet   ds   =   new   DataSet();//使用DataSet出现在输入登陆界面
                Master   ds   =   new   Master();     //   使用Master(为DataSet实例)没有出现在输入登陆界面   ,但没有报表数据~~只有导航    
???我怎样使用?这两个有什么区别??


------解决方案--------------------
何不用子报表来实现?
------解决方案--------------------
// DataSet ds = new DataSet();//使用DataSet出现在输入登陆界面
Master ds = new Master(); // 使用Master(为DataSet实例)没有出现在输入登陆界面 ,但没有报表数据~~只有导航

當然有區別了,前者是你自己自定義的一個DataSet 後者則是Master.xds中的數據,而報表中你是用的Master中的數據,隻能用後者。
------解决方案--------------------
你是不是在VS的design time看那些数据的?那些数据不是数据库的真实数据,是水晶报表提供的假的数据...真实的数据是run这个application之后才可以看到的.