本帖最后由 lsxlhbsyl 于 2011-01-13 14:35:47 编辑

解决方案 »

  1.   

    http://www.cnblogs.com/meta/archive/2009/04/24/1443027.html
      

  2.   


    我看了看,发现这个对象ReportDataSource(String Object)
    name 
    数据源的名称。dataSourceValue 
    数据源的值。
    但是我这没有数据源(不太确定,这个数据源值是指DataSet2.xsd吗?)
    我是通过对象直接获得了一个Dataset,那这个地方应该怎么写?
      

  3.   

    给你一个实例,如下:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using CrystalDecisions.CrystalReports.Engine;
    using System.Windows.Forms;
     
    public partial class Template_Print : System.Web.UI.Page
    {
        ReportDocument RptDoc;
        protected void Page_Load(object sender, EventArgs e)
        {
            string Courier_ID = "", oid = "", print_w = "", print = "";
            if (Request.QueryString["OrderID"] != null && Request.QueryString["OrderID"].ToString().Trim().Length != 0)
            {
                oid = Request["OrderID"].ToString().Trim();        }
            if (Request.QueryString["Courier_ID"] != null && Request.QueryString["Courier_ID"].ToString().Trim().Length != 0)
            {
                Courier_ID = Request.QueryString["Courier_ID"].ToString().Trim();
            }
            if (Request.QueryString["ptype"] != null && Request.QueryString["ptype"].ToString().Trim().Length != 0)
            {
                print_w = Request.QueryString["ptype"].Trim().ToString();
            }
            if (Request.QueryString["print"]!=null && Request.QueryString["print"].ToString().Trim().Length!=0)
            {
                print = Request.QueryString["print"].Trim().ToString();
            }
            if (oid.Length != 0 && Courier_ID.Length != 0)
            {
                GetData(oid, Courier_ID, print_w,print);
            }
            else
            {
                Response.Write("订单号或者物流商错误!");
            }    }
        protected void Page_Unload(object sender, EventArgs e)
        {
            if (RptDoc != null)
            {
                RptDoc.Close();
                RptDoc.Dispose();
            }    }
        private void GetData(string oid, string c_id, string ptype,string print)
        {
            string sqlfile = "select HTMLFileName from dict_Courier where Courier_ID='" + c_id + "'";
            string FileName = SqlHelper.ExecuteScalar(SqlHelper.EC_FlagConn, CommandType.Text, sqlfile).ToString();
            if (print=="2")
            {
                FileName = "EMS2.rpt";
            }
            if (FileName.Length == 0)
            {
                Response.Write("未找到指定快递商的打印模板!");
                Response.End();
                return;
            }
            string FilePath = Server.MapPath(@"../Report/" + FileName);
            if (oid.Substring(oid.Length - 1, 1) == ",")
            {
                oid = oid.Substring(0, oid.Length - 1);
            }
            DataSet ds = new DataSet();
            //string sql = "select * from orders where order_id=" + oid;
            string sql = "SELECT Orders.Order_ID, Orders.EC_Order_ID, Orders.Order_Status_ID, "
            + " Orders.Order_Source_ID, Orders.Order_date, Orders.Import_date, Orders.Client_ID, "
            + " Orders.Name, Orders.Province, Orders.City, Orders.Address, Orders.Zipcode, "
            + " Orders.Phone1, Orders.Phone2, Orders.Company, Orders.Client_Shipby_date, "
            + " Orders.Client_Courier_ID, Orders.Client_Courier_Desc, Orders.Client_Cancel_date, "
            + " Orders.Client_Notes, Orders.Need_Feedback, Orders.Export_date, "
            + " Orders.Warehouse_Notes, Orders.HasWithDrawal, Orders.Operator,"
            + " Orders.OrderType, Box.weight"
      + " FROM (SELECT Shipment_ID, SUM(Weight) AS weight "
          + "    FROM Box AS Box_1 "
             + "  GROUP BY Shipment_ID) AS Box RIGHT OUTER JOIN "
            + " Shipment_Order ON "
            + " Box.Shipment_ID = Shipment_Order.Shipment_ID RIGHT OUTER JOIN "
            + " Orders ON Shipment_Order.Order_ID = Orders.Order_ID "
              + " where Orders.Order_ID in (" + oid + ")";
            sql = "select * from VIEW_Print where Order_id in (" + oid + ")  order by order_id";
            DataTable d1 = SqlHelper.ExecuteDataset(SqlHelper.EC_FlagConn, CommandType.Text, sql).Tables[0];
            sql = "select * from customers where innerid=1";
            DataTable d2 = SqlHelper.ExecuteDataset(SqlHelper.EC_FlagConn, CommandType.Text, sql).Tables[0];
            ds.Tables.Add(d1.Copy());
            if (c_id == "003")
            {
                ds.Tables[0].TableName = "Orders";
            }
            else
            {
                ds.Tables[0].TableName = "VIEW_Print";
            }        ds.Tables.Add(d2.Copy());
            ds.Tables[1].TableName = "Customers";        RptDoc = new ReportDocument();
            if (!RptDoc.IsLoaded)
            {
                RptDoc.Load(FilePath);
                RptDoc.SetDataSource(ds);
                CrystalReportViewer1.ReportSource = RptDoc;
                CrystalReportViewer1.DataBind();
                TextObject weight = RptDoc.ReportDefinition.ReportObjects["Text13"] as TextObject;
                if (ptype == "0")
                {
                    weight.Width = 0;
                }
            }    }}
      

  4.   

     private void ZZZPJ_Load(object sender, EventArgs e)
            {
                DataTable dataTable = GetTable();
                ReportDataSource rds = new ReportDataSource("DataSet1", dataTable);//此处DATASET1与报表中的数据集同名            reportViewer1.LocalReport.DataSources.Clear();//清除上一次数据源
                reportViewer1.LocalReport.DataSources.Add(rds);//增加新数据源
                this.reportViewer1.RefreshReport();
            }        private DataTable GetTable()
            {
                using (SqlConnection con = new SqlConnection("Data Source=10.100.100.5;Initial Catalog=cldz;User ID=proc4;Password=77cc88"))
                {
                    SqlDataAdapter sda = new SqlDataAdapter("select distinct A.*,B.ME002 from (select TOP 10 * from ZZZPJ where PJ018>'20101113') A, CMSME B where A.PJ001=B.ME001", con);
                    DataSet DS = new System.Data.DataSet();
                    sda.Fill(DS);
                    DataTable DT = DS.Tables[0];
                    return DT;
                }
            }