51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> C >> 文章正文

C#如何获得水晶报表

更新时间:2012-1-3:  来源:51代码网

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=dm;User ID=sa;Password=123456";
                SqlConnection conn = new SqlConnection(strConn);
                SqlDataAdapter da = new SqlDataAdapter("Select id,pay_time,type,remark from  d_payment_record", conn);
                da.Fill(ds, "d_payment_record");
                rpt.SetDataSource(ds.Tables["d_payment_record"]);
                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
 选择关联字段即可

---------------------------------------------------------------------------用对象做做报表数据-----------------------------------------

        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["SKU"] = item.purchaseProduct.SKU;
                    dr["orderCode"] = item.purchaseProduct.orderCode;
                    dr["receiveShipmentQty"] = item.receiveShipmentQty.ToString();
                    dr["reimburseMark"] = (item.purchaseProduct.reimburseMark ? "是" : "否");
                    dr["customerServiceRemark"] = item.purchaseProduct.customerServiceRemark;
                    dr["purchaseRemark"] = item.purchaseProduct.purchaseRemark ;
                    dr["remark"] = item.purchaseProduct.remark;
                    dr["imageColor"] = item.purchaseProduct.imageColor;
                    dr["size"] = item.purchaseProduct.size;
                    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"));
            deliveryorderTable.Columns.Add(new DataColumn("SKU"));
            deliveryorderTable.Columns.Add(new DataColumn("orderCode"));
            deliveryorderTable.Columns.Add(new DataColumn("receiveShipmentQty"));
            deliveryorderTable.Columns.Add(new DataColumn("reimburseMark"));
            deliveryorderTable.Columns.Add(new DataColumn("customerServiceRemark"));
            deliveryorderTable.Columns.Add(new DataColumn("purchaseRemark"));
            deliveryorderTable.Columns.Add(new DataColumn("remark"));
            deliveryorderTable.Columns.Add(new DataColumn("imageColor"));
            deliveryorderTable.Columns.Add(new DataColumn("size"));
            deliveryorderTable.Columns.Add(new DataColumn("image"));
            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="";
                if (orderview.status == receiveShipmentOrderStatus.COMPLETE)
                    state = "已接货";
                if (orderview.status == receiveShipmentOrderStatus.NOT_COMPLETE)
                    state = "未接货";
                if (orderview.status == receiveShipmentOrderStatus.IN_REIMBURSING)
                    state = "报销中";
                if (orderview.status == receiveShipmentOrderStatus.NOT_REIMBURSE)
                    state = "未报销";
                if (orderview.status == receiveShipmentOrderStatus.REIMBURSE)
                    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;
        }        //数据源

[1] [2] 下一页

赞助商链接
推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |