winform 子报表
public void BindReport(string _invno,string _type) { if (!Is_Has_Express_No(_invno)) { return; } StringBuilder sb = new StringBuilder(); sb.Append(" select tt.ardt_jobno,tt.ardt_prodcode,tt.ardt_desc,tt.ardt_qty, "); sb.Append(" tt.ardt_unit,tt.ardt_uprice,tt.isumprice,tt.Custcaseno,tt.docinfo,pmct_desc,tt.sType, "); sb.Append(" decode(tt.sType,'P',isumprice,'') pSumprice, "); sb.Append(" decode(tt.sType,'M',isumprice,'') mSumprice, "); sb.Append(" decode(tt.jobm_redo_yn,'1','REMAKE','') jobm_redo_yn,arhr_invno,arhr_date,arhr_acctid,arhr_remark,acct_tel,acct_addr0,acct_addr, "); sb.Append(" acct_addr_2,acct_addr_3,acct_addr_4,acct_invoice_remark "); sb.Append(" from ( "); sb.Append(" select idt.ardt_jobno,idt.ardt_prodcode,idt.ardt_desc,idt.ardt_qty, "); sb.Append(" decode(idt.ardt_unit,'排','SET','粒','UNIT','','UNIT',idt.ardt_unit) ardt_unit, "); sb.Append(" idt.ardt_uprice, idt.ardt_qty * idt.ardt_uprice isumprice, "); sb.Append(" (select distinct jo.jobm_custcaseno from job_product jp,job_order jo where "); sb.Append(" jp.jobm_no = jo.jobm_no and jo.jobm_no =idt.ardt_jobno ) Custcaseno, ");
if (_type == "USD") { sb.Append(" (select distinct nvl(jo1.jobm_docinfo_1,jo1.jobm_docinfo_2) || '(' || jp1.jobm_no || ')' from job_product jp1,job_order jo1 where "); } else { sb.Append(" (select distinct '(' || jp1.jobm_no || ')' from job_product jp1,job_order jo1 where "); } sb.Append(" jp1.jobm_no = jo1.jobm_no and jo1.jobm_no =idt.ardt_jobno ) docinfo, "); sb.Append(" (select distinct pm.pmct_desc from product prx,product_category pc,product_category_major pm "); sb.Append(" where pm.pmct_code = pc.pmct_code and pc.pcat_code = prx.pcat_code and prx.prod_code = idt.ardt_prodcode) pmct_desc, "); sb.Append(" (select distinct pro.prod_pro_mat from product pro where pro.prod_code = idt.ardt_prodcode) sType, "); sb.Append(" (select jo2.jobm_redo_yn from job_order jo2 where jo2.jobm_no =idt.ardt_jobno ) jobm_redo_yn, "); sb.Append(" i.arhr_invno, i.arhr_date, i.arhr_acctid, "); sb.Append(" i.arhr_remark, decode(ac.acct_name_eng,'',ac.acct_name,ac.acct_name_eng) acct_addr0, "); sb.Append(" decode(ac.acct_tel,'','','Tel: ' || ac.acct_tel) acct_tel,"); sb.Append(" ac.acct_addr, "); sb.Append(" ac.acct_addr_2, "); sb.Append(" ac.acct_addr_3, "); sb.Append(" ac.acct_addr_4, ac.acct_invoice_remark from invoice_dtl idt ,invoice i,account ac "); sb.Append(" where idt.arhr_invno = '11003017' "); //A1515010 A1515310 11003017 sb.Append(" and i.arhr_invno = idt.arhr_invno and ac.acct_id = i.arhr_acctid "); sb.Append(" ) tt order by tt.Custcaseno,tt.ardt_prodcode "); sb.Append(" ");
DataSet ds_com = DB.GetDSFromSql(sb.ToString()); //创建临时表分组 DataTable dtGroup = new DataTable(); DataColumn column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "GId"; dtGroup.Columns.Add(column); column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "GId"; ds_com.Tables[0].Columns.Add(column); column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "Custcaseno"; dtGroup.Columns.Add(column); column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "pmct_desc"; dtGroup.Columns.Add(column); DataTable dtDisView = ds_com.Tables[0].DefaultView.ToTable(true, "Custcaseno"); DataRow dr = dtGroup.NewRow();
if (dtDisView.Rows.Count > 0) { for (int k = 0; k < dtDisView.Rows.Count; k++) { dr = dtGroup.NewRow(); dr["GId"] = k + 1; dr["Custcaseno"] = dtDisView.Rows[k]["Custcaseno"].ToString(); dtGroup.Rows.Add(dr); } }
if (dtGroup.Rows.Count > 0) { for (int n = 0; n < dtGroup.Rows.Count; n++) { for (int l = 0; l < ds_com.Tables[0].Rows.Count; l++) { if (ds_com.Tables[0].Rows[l]["Custcaseno"].ToString() == dtGroup.Rows[n]["Custcaseno"].ToString()) { dtGroup.Rows[n]["pmct_desc"] = ds_com.Tables[0].Rows[l]["pmct_desc"].ToString(); break; }
} } }
double _fdaValue = 0; double _nFdaValue = 0; double _totalPrice = 0;
if (ds_com.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds_com.Tables[0].Rows.Count; i++) {
_fdaValue = _fdaValue + double.Parse(ds_com.Tables[0].Rows[i]["pSumprice"].ToString()==""?"0":ds_com.Tables[0].Rows[i]["pSumprice"].ToString()); _nFdaValue = _nFdaValue + double.Parse(ds_com.Tables[0].Rows[i]["mSumprice"].ToString() == "" ? "0" : ds_com.Tables[0].Rows[i]["mSumprice"].ToString()); _totalPrice = _totalPrice + double.Parse(ds_com.Tables[0].Rows[i]["isumprice"].ToString() == "" ? "0" : ds_com.Tables[0].Rows[i]["isumprice"].ToString());
//将汇总的值统一 if (dtGroup.Rows.Count > 0) { for (int j = 0; j < dtGroup.Rows.Count; j++) { if (ds_com.Tables[0].Rows[i]["Custcaseno"].ToString() == dtGroup.Rows[j]["Custcaseno"].ToString()) { ds_com.Tables[0].Rows[i]["pmct_desc"] = dtGroup.Rows[j]["pmct_desc"].ToString(); ds_com.Tables[0].Rows[i]["GId"] = dtGroup.Rows[j]["GId"].ToString(); } } } } } if (ds_com.Tables[0].Rows.Count < 1) { MessageBox.Show("没有相关报表信息!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { string fdaWord = string.Empty; DataTable dtDisHearder = ds_com.Tables[0].DefaultView.ToTable(true, "GId", "Custcaseno", "docinfo", "pmct_desc"); //查询含多个发票号码
if (_type == "USD") { this.reportViewer1.LocalReport.ReportPath = "Rpt_Invoice_USD.rdlc"; } else if (_type == "EUR") { this.reportViewer1.LocalReport.ReportPath = "Rpt_Invoice_EUR.rdlc"; } else { this.reportViewer1.LocalReport.ReportPath = "Rpt_Invoice_hk.rdlc"; }
//重新排序 ardt_prodcode
//this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dtDistinct)); this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet2", ds_com.Tables[0])); this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dtDisHearder)); this.reportViewer1.LocalReport.SubreportProcessing += (s1, e1) => { e1.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet2", ds_com.Tables[0])); }; ReportParameter rp = new ReportParameter("logUser", DB.loginUserName); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
//FDA值 rp = new ReportParameter("fdaValue", _fdaValue.ToString()); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp }); //非FDA值
rp = new ReportParameter("nFdaValue", _nFdaValue.ToString()); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
//this.reportViewer1.LocalReport
string sqladd = " select t.udc_extend01,t.udc_extend02,t.udc_extend03 from zt00_udc_udcode t where t.udc_sys_code = 'MDLCRM' and t.udc_category = 'SO' and t.udc_key = 'ENTITY' and t.udc_value = 'MDIL澳门' order by udc_key "; DataTable dtaddr = DB.GetDSFromSql(sqladd).Tables[0]; string strSignor = string.Empty; string strFooter = string.Empty; string strRemark = string.Empty;
if (dtaddr.Rows.Count > 0) { strSignor = dtaddr.Rows[0]["udc_extend02"].ToString(); strFooter = dtaddr.Rows[0]["udc_extend01"].ToString(); strRemark = dtaddr.Rows[0]["udc_extend03"].ToString(); } rp = new ReportParameter("add_signor", strSignor); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp }); rp = new ReportParameter("addr_footer", strFooter); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp }); rp = new ReportParameter("addr_remark", strRemark); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp }); rp = new ReportParameter("totalValue", _totalPrice.ToString()); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp }); this.reportViewer1.RefreshReport(); } }
winform 子报表的更多相关文章
- winform 子报表数据源赋值
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(&qu ...
- RDLC 子报表
1.RDLC 设计页面,拖入table或者矩形 2.右击表格或者矩形单元格,插入--子报表 3.输入名称和将此报表用作子报表 名称:显示在设计页面上的,仅作观看作用 将此报表用作子报表:填写目录下的需 ...
- RDLC系列之二 子报表
本文实现简单的子报表 一.效果图
- Reporting Services 钻取报表、子报表
一.钻取报表 1.概念 钻取报表是指用户通过单击其他报表中的链接打开的报表.钻取报表通常包含某原始汇总报表中所包含的某项的详细信息. 例如,在此图中,销售额汇总报表列出了销售订单和总额.当用户单击该汇 ...
- iReport 4.1 报表制作,子报表,实例解析
开发使用步骤(iReport 4.1.1) (个人总结,如有问题请留言,另外知道table控件用法的给我留言或者发邮件谢谢.Email:jiazx0107@163.com) 目录 1. 开发 ...
- ReportView动态加载带参数的RDCL文件及子报表
本文来自Torres.Wu发表在博客园的博客,转载请标明出处. 同上一篇差不多,这次咱们加载带有子报表的RDCl文件.首先还是创建一个form程序,在form2窗体中添加一个ReporView控件,l ...
- UniGui中使用Grid++Report报表控件子报表获取数据的方法
Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料 ...
- JasperReport子报表参数传递
子报表参数传递 下图的参数名称可以自定义 再子报表新增一个同名称的参数即可
- ActiveReports 报表控件V12新特性 -- 页面报表新增子报表
ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...
随机推荐
- Window Server 2012 R2 没有照片查看器 打开图片都是画板问题怎么解决
新安装了 Window Server 2012 R2 系统,感觉屌屌的样子,加上开机速度蛮快,心里略爽.结果,打开图片一看,发现竟然是画板,而且还没有照片查看器,顿时泪流满面. 后来我利用了强大的百度 ...
- .net学习笔记--文件读写的几种方式
在.net中有很多有用的类库来读写硬盘上的文件 一般比较常用的有: File:1.什么时候使用:当读写件大小不大,同时可以一次性进行读写操作的时候使用 2.不同的方式可以读写文件类型不 ...
- css高级应用及问题记录(持续更新)
css 参考手册: 1.http://css.doyoe.com/ 1.混合选择器样式定义: .button.icon:before { content: ""; po ...
- cxf+spring+数字签名开发webservice(一)
数字证书的准备 下面做的服务端和客户端证书在例子中无法加解密,不知道什么原因,我是使用正式环境中的客户端和服务端进行开发测试的,所以需要大家自己去准备证书,或者有人知道为什么jdk生成 ...
- 【转】 71道经典Android面试题和答案,重要知识点都包含了
,,面试题1. 下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 ...
- html5 完整图片上传
<div class="photo" style="display:none;" id="upPhoto"><div cl ...
- hdoj 2022 海选女主角
Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口.“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato ...
- TCP/IP入门(3) --传输层
原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...
- Stack Overflow is a question and answer site
http://stackoverflow.com/ _ Stack Overflow is a question and answer site for professional and enthus ...
- 【转】java架构师之路:JAVA程序员必看的15本书的电子版下载地址
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...