c#報表

本文介绍了一个使用Crystal Reports进行数据报表生成的过程,包括从数据库中获取数据、填充数据集、设置报表参数及查看器控件,并最终完成报表显示与打印的功能。此过程涵盖了SQL查询、数据适配器填充、参数值设定等关键技术步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //e://win//qp//qp//
            // string reportPath = @"rpt//sale.rpt";
            //  string sqlstr = "SELECT  id,dh,bm,mc,xh,pp,sl,dw,out_price,hg,shdate,zffs,khm,czy  FROM  p_sale_t where xs_dh='" + _dh + "'";
            string sqlstr = "exec p_sale_t_report '" + _dh + "'";
           // customerReport.Load(_reportpath);
            // DataSet dataSet = DataSetConfiguration.CustomerDataSet;
            DataSet dataSet = new DataSet();
            //customerReport.SetDatabaseLogon("jackey", "chenzhao", "SQL-Server", "qp");
            SqlConnection cn = new SqlConnection(Temp_Value.Conn);
            SqlDataAdapter da = new SqlDataAdapter(sqlstr, cn);
            da.Fill(dataSet, "bb");
            if (dataSet.Tables[0].Rows.Count < 1)
            {
                MessageBox.Show("没有数据");
                return;
            }
            //SqlDataAdapter da2 = new SqlDataAdapter("select * from customer ", cn);
            //da2.Fill(dataSet, "customer");
            //this.customerReport.OpenSubreport("Customer.rpt").SetDataSource(dataSet.Tables["customer"]);
            //上面为打开子报表
            //查看器控件所需的变量。
    
                ParameterFields paramFields = new ParameterFields();
                ParameterField paramField = new ParameterField();
                ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();
                ParameterRangeValue rangeVal = new ParameterRangeValue();
                paramField.ParameterFieldName = "com_name";
                DataTable dt = DB.GetTable("select sum(sl)*sum(out_price) as hz from p_sale_t where dh='" + _dh + "'");
                string d = "";
                if (dt.Rows.Count > 0)
                {
                    d = dt.Rows[0][0].ToString();
                }
                if (d == "")
                {
                    discreteVal.Value = "";
                }
                else
                {
                    discreteVal.Value = Temp_Value.Dxje(Decimal.Parse(d.ToString()));
                }
                paramField.CurrentValues.Add(discreteVal);

                //   设置第二个离散值并将其传递给该参数。  
                //   discreteVal   变量被设置为新值,这样,以前的设置  
                //就不会被覆盖。  
                discreteVal = new ParameterDiscreteValue();
                discreteVal.Value = "com_name";
                paramField.CurrentValues.Add(discreteVal);
                paramFields.Add(paramField);
                //   第二个参数为区域值。paramField   变量  
                //被设置为新值,这样,以前的设置就不会被覆盖。  
                //   将参数字段集合放入查看器控件。  
               // customerReport.SetDataSource(dataSet.Tables[0]);
                crystalReportViewer1.ParameterFieldInfo = paramFields;
                // con();
                crystalReportViewer1.ReportSource = customerReport;
                customerReport.Refresh();
                PrintDocument prtdoc = new PrintDocument();
                string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;//取得默认的打印机名称
                customerReport.PrintOptions.PrinterName = strDefaultPrinter;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值