crystalReportViewer+ReceiveCrystalReport.rpt+DataSet.xsd做報表 轉

來源:互聯網
上載者:User
crystalReportViewer+ReceiveCrystalReport.rpt+DataSet.xsd做報表

crystalReportViewer(報表檢視器)+ReceiveCrystalReport.rpt(報表檔案)+DataSet.xsd(資料集)

1.crystalReportViewer 的ReportSource屬性指定一個ReceiveCrystalReport.rpt檔案
2.添加一個dataset.xsd檔案,添加報表要顯示的欄位資訊(一定要與資料庫中一致)
3.開啟ReceiveCrystalReport.rpt檔案,在右邊視窗DatabaseFields右鍵(Database EXpert)

 


在左邊視窗開啟ProjectData>ADO.NET Datasets 選擇一個DataSet,添加到右邊,點確定,
再將其欄位拖入開啟的報表檔案中即可

        private void PrintReceiveOrder_Load(object sender, EventArgs e)
        {
            try
            {
                ReceiveCrystalReport rpt = new ReceiveCrystalReport();
                DataSet ds = new DataSet();
                string strConn = "Data Source=ITE-03;Initial Catalog=Test;User ID=sa;Password=123456";
                SqlConnection conn = new SqlConnection(strConn);
                SqlDataAdapter da = new SqlDataAdapter("Select id,pay_time,type,remark from  test", conn);
                da.Fill(ds, "test");
                rpt.SetDataSource(ds.Tables["test"]);
                this.crystalReportViewer1.ReportSource = rpt;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

1.固定條數,調整節高或是寫公式:
在detail節按右鍵,Format     section...    
選擇     New     Page     after,然後點擊右邊的公式按鈕,輸入:    
RecordNumber     mod         5=     0    
則會每五條記錄翻頁。

2.換行顯示
選中有一個欄位 右鍵 Fromat Object  勾選 Can Grow 即可

 

3設定主副表報關聯顯示

 

選擇子報表
點右鍵   選擇   change   subreport   links

 選擇關聯欄位即可

4.紙張橫打

右鍵->列印設計->

5.橫打,左右雙打(一頁打雙份)

把寬度設定為頁面的一半即可,最好是比頁面的一半還要少點

------------------------------------------------------------------不預覽
直接選擇印表機列印-----------------------------------------------------

                PrintDialog print = new PrintDialog();
                print.ShowDialog();//選擇印表機
                PrintUPSCrystalReport ups = new PrintUPSCrystalReport();//報表設計
                ups.SetParameterValue("Code", "PH20120327");//設定參數
                ups.SetParameterValue("Telephone", "123456792");
                ups.PrintOptions.PrinterName = print.PrinterSettings.PrinterName;//用選擇的印表機進行列印,不選擇則用預設印表機列印
                ups.PrintToPrinter(1, true, 1, 1);//關鍵這句,不用預覽,直接列印

                 ups.SetDataSource(dt);//設定資料來源

---------------------------------------------------------------------------用對象做做報表資料-----------------------------------------

        public PrintReceiveOrder(receiveShipmentOrder orderInfo,List<receiveShipmentOrderItem> orderItem)
        {    
            InitializeComponent();
            BindReport(orderInfo, orderItem);          
        }
        //綁定報表
        private void BindReport(receiveShipmentOrder orderInfo, List<receiveShipmentOrderItem> orderItem)
        {

            ParameterFields parameterFields = LoadOrderInfo(orderInfo);
            try
            {
               this.crystalReportViewer1.ParameterFieldInfo = parameterFields;
                ReceiveCrystalReport rpt = new ReceiveCrystalReport();
                rpt.SetDataSource(LoadDetailInfo(orderItem).Tables["orderItem"]);
                this.crystalReportViewer1.ReportSource = rpt;
            }
            catch (Exception ex)
            {

            }
  
        }

        //資料來源
        private DataSet LoadDetailInfo(List<receiveShipmentOrderItem> orderItem)
        {
            DataSet ds = CreateReportDataSet();
            if (orderItem != null)
            {
                DataTable deliveryorderTable = ds.Tables["orderItem"];
                foreach (receiveShipmentOrderItem item in orderItem)
                {
                    DataRow dr = deliveryorderTable.NewRow();
                    dr["id"] = item.purchaseProduct.id;
                    dr["orderCode"] = item.purchaseProduct.orderCode;
                    dr["receiveShipmentQty"] = item.receiveShipmentQty.ToString();
                    dr["reimburseMark"] = (item.purchaseProduct.reimburseMark ? "是" : "否"); 
                    dr["image"] = item.purchaseProduct.image;//二進位類型
                    deliveryorderTable.Rows.Add(dr);
                }
            }
            return ds;
        }

        private DataSet CreateReportDataSet()
        {
            DataSet ds = new DataSet();
            DataTable deliveryorderTable = new DataTable("orderItem");
            deliveryorderTable.Columns.Add(new DataColumn("Image",System.Type.GetType("System.Byte[]"))));        
            deliveryorderTable.Columns.Add(new DataColumn("orderCode"));
            deliveryorderTable.Columns.Add(new DataColumn("receiveShipmentQty"));
            deliveryorderTable.Columns.Add(new DataColumn("reimburseMark"));
            ds.Tables.Add(deliveryorderTable);

            return ds;
        }

//設定頭參數

        private ParameterFields LoadOrderInfo(receiveShipmentOrder orderview)
        {
            ParameterFields orderInfo = new ParameterFields();
            if (orderview != null)
            {
                orderInfo.Add(GetParameterField("supplierName", orderview.supplier.name));
                orderInfo.Add(GetParameterField("name", orderview.createUser.name));
                string state="";
                orderInfo.Add(GetParameterField("state", state));
                orderInfo.Add(GetParameterField("receiveCode", orderview.code));
            }
            return orderInfo;
        }

        //設定參數欄位
        private ParameterField GetParameterField(string name, string value)
        {
            ParameterField field = new ParameterField();
            ParameterDiscreteValue fieldValue = new ParameterDiscreteValue();
            field.ParameterFieldName = name;
            fieldValue.Value = value;
            field.CurrentValues.Add(fieldValue);
            return field;
        }

 

 

 

------------------------------------------------------------------主副報
表關聯顯示------------------------------------------------------------------

    private void bindList(List<WaitDeliveryView> deliveryList)
        {
            OrderCrystalReport rpt = new OrderCrystalReport();
            rpt.SetDataSource(LoadDetailInfo(deliveryList).Tables["packageItem"]);
            rpt.Subreports["OrderDetailReport.rpt"].SetDataSource(LoadDetailInfo(deliveryList).Tables["ProductItem"]);
            this.crystalReportViewer1.ReportSource = rpt;
        }

        //資料來源
        private DataSet LoadDetailInfo(List<WaitDeliveryView> deliveryList)
        {
            DataSet ds = CreateReportDataSet();
            if (deliveryList != null)
            {
                DataTable packageTable = ds.Tables["packageItem"];

                DataTable ProductTable = ds.Tables["ProductItem"];

                int total = 0;
                int i = 0;
                foreach (WaitDeliveryView item in deliveryList)
                {
                    DataRow dr = packageTable.NewRow();
                    dr["Id"] = item.Package.id;
                    dr["OrderCode"] = item.Package.code;
                    dr["CustomName"] = item.Package.order.buyer.fullName;
                    dr["DeliveryWay"] = item.Package.delivery.name;
                    dr["Total"] = total;
                    packageTable.Rows.Add(dr);

                    foreach (orderProduct items in item.Package.orderProducts)
                    {
                        DataRow drs = ProductTable.NewRow();
                        drs["Id"] =item.Package.id;
                        drs["No"] = i + 1;
                        //顯示商品編號 + (SKU)
                        drs["Item"] = items.code + " " + items.SKU;
                        drs["Qty"] = items.productQty;
                        total += items.productQty;
                        ProductTable.Rows.Add(drs);
                    }
                }
            }
            return ds;
        }

        private DataSet CreateReportDataSet()
        {
            DataSet ds = new DataSet();
            DataTable packageTable = new DataTable("packageItem");
            packageTable.Columns.Add(new DataColumn("Id"));
            packageTable.Columns.Add(new DataColumn("OrderCode"));
            packageTable.Columns.Add(new DataColumn("CustomName"));
            packageTable.Columns.Add(new DataColumn("DeliveryWay"));
            packageTable.Columns.Add(new DataColumn("Total"));
            ds.Tables.Add(packageTable);

            DataTable ProductTable = new DataTable("ProductItem");
            ProductTable.Columns.Add(new DataColumn("Id"));
            ProductTable.Columns.Add(new DataColumn("No"));
            ProductTable.Columns.Add(new DataColumn("Item"));
            ProductTable.Columns.Add(new DataColumn("Qty"));
            ds.Tables.Add(ProductTable);
            return ds;
        }

 

報表詳細相關設定

資料

資料2

資料,,全

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.