Chinaunix首页 | 论坛 | 博客
  • 博客访问: 567683
  • 博文数量: 63
  • 博客积分: 533
  • 博客等级: 中士
  • 技术积分: 1146
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-24 17:56
文章分类

全部博文(63)

文章存档

2016年(1)

2014年(23)

2013年(17)

2012年(22)

分类: Windows平台

2014-06-06 16:55:01

        端午节放假回来这周就只还有4天时间,不幸地是我还请了一天假,面对这周的任务,做一个理化检测的明细报表,给了我一个功能文档,通过以前的经验,我已经不想吐槽什么,因为功能文档是我们公司的人写的,要有多简陋有多简陋,就一个主表,五个子表的数据,还是我去问的。以前做的是XML+RTF来生成报表,我试了试,问了一下亿格的开发老师超哥,这个方法好像不能实现,果断地抛弃了,转向HTML,不过大学学的HTML差不多忘记了。
    功能文档要求的样式:
   
     我做出来的效果:

  我不知道为什么没有数据的地方会有空白,我在程序里面已经对其进行操作了的。
    

点击(此处)折叠或打开

  1. create or replace package XXMFG_QA_010_REPORT_PKG is
  2.   /*================================================================*
  3.   -- Description:
  4.   -- 理化检测明细报表
  5.   --
  6.   -- Reference:
  7.   -- 参考文档
  8.   -- Modification History:
  9.   -- Date Author Description
  10.   -- ------------ ----------------- ---------------------------------------
  11.   --
  12.   -- 2014-06-03 rojian Created
  13.   *================================================================*/

  14.   /*================================================================*
  15.   | Procedure:
  16.   | print_report
  17.   |
  18.   | Description:
  19.   | 理化检测明细报表打印程序
  20.   |
  21.   |
  22.   | In Parameters:
  23.   | p_org_id 库存组织
  24.   | p_start_date 录入日期自
  25.   | p_end_date 录入日期至
  26.   | History:
  27.   | VER DATE AUTHOR MODIFICATION
  28.   | --- --------- ------------- -----------------------------------
  29.   | 1 2014-06-03 rojian Created
  30.   *=================================================================*/
  31. procedure print_report( errbuf out varchar2,
  32.                         retcode out varchar2,
  33.                         p_organization_id number, --组织代码
  34.                         p_date_s varchar2, --开始时间
  35.                         p_date_e varchar2 --结束时间
  36.                        );

  37. PROCEDURE print_html(event VARCHAR2); --打印网页标题头信息
  38. PROCEDURE print_header; --打印总标题
  39. PROCEDURE print_header2; --打印表头
  40. PROCEDURE print_data2( v_id VARCHAR2, --序号
  41.                           v_item_number VARCHAR2, --理化请验单号
  42.                           v_department VARCHAR2, --请验单位
  43.                           v_type VARCHAR2, --请验类型
  44.                           v_segemnt1 VARCHAR2, --物料
  45.                           v_description VARCHAR2, --物料说明
  46.                           v_supplier VARCHAR2, --供应商名称
  47.                           v_batch VARCHAR2, --批次
  48.                           v_material VARCHAR2, --材料
  49.                           v_cllh VARCHAR2 --材料炉号
  50.                        ); --打印理化单信息

  51. PROCEDURE print_material_header(c_ITEM_NUMBER VARCHAR2); --打印材料分析表头
  52. PROCEDURE print_material_data(c_ITEM_NUMBER VARCHAR2); --打印材料分析信息
  53. PROCEDURE print_texture_header(c_ITEM_NUMBER VARCHAR2); --打印金相组织分析表头
  54. PROCEDURE print_texture_data(c_ITEM_NUMBER VARCHAR2); --打印金相组织分析信息
  55. PROCEDURE print_mechanics_header(c_ITEM_NUMBER VARCHAR2); --打印力学性能分析表头
  56. PROCEDURE print_mechanics_data(c_ITEM_NUMBER VARCHAR2); --打印力学性能分析信息
  57. PROCEDURE print_physics_header(c_ITEM_NUMBER VARCHAR2); --打印物理检测分析表头
  58. PROCEDURE print_physics_data(c_ITEM_NUMBER VARCHAR2); --打印物理检测分析信息
  59. PROCEDURE print_clean_header(c_ITEM_NUMBER VARCHAR2); --打印清洁度分析表头
  60. PROCEDURE print_clean_data(c_ITEM_NUMBER VARCHAR2); --打印清洁度分析信息
  61. PROCEDURE print_oil_header(c_ITEM_NUMBER VARCHAR2); --打印油品分析表头
  62. PROCEDURE print_oil_data(c_ITEM_NUMBER VARCHAR2); --打印油品分析信息
  63. PROCEDURE print_trail(v_work_name VARCHAR2); --打印表尾信息
  64. PROCEDURE print_last(v_work_name VARCHAR2); --打印最后一页信息
  65. END;

  66.         
  67. /
  68. CREATE OR REPLACE PACKAGE BODY XXMFG_QA_010_REPORT_PKG IS
  69.   /*================================================================*
  70.   -- Description:
  71.   -- 理化检测明细报表
  72.   --
  73.   -- Reference:
  74.   -- 参考文档
  75.   -- Modification History:
  76.   -- Date Author Description
  77.   -- ------------ ----------------- ---------------------------------------
  78.   --
  79.   -- 2014-06-03 rojian Created
  80.   *================================================================*/

  81.   /*================================================================*
  82.   | Procedure:
  83.   | print_report
  84.   |
  85.   | Description:
  86.   | 理化检测明细报表打印程序
  87.   |
  88.   |
  89.   | In Parameters:
  90.   | p_org_id 库存组织
  91.   | p_start_date 录入日期自
  92.   | p_end_date 录入日期至
  93.   | History:
  94.   | VER DATE AUTHOR MODIFICATION
  95.   | --- --------- ------------- -----------------------------------
  96.   | 1 2014-06-03 rojian Created
  97.   *=================================================================*/
  98.    --v_row NUMBER := -1;
  99.    --v_row_num NUMBER := 0;
  100.    --v_je_rows NUMBER := 0; ---总行数
  101.    --v_page_rows NUMBER := 10; ---定义每张报表的line数量
  102.    --v_page_count NUMBER := 0;
  103.    --v_page_width NUMBER := 780; ---745
  104.    --v_font_size NUMBER := 3;
  105.    --v_font_size1 NUMBER := 6;
  106.    --v_font_size0 NUMBER := 2; ---用于内容输出
  107.    --v_page NUMBER := 0;
  108.      v_print_date VARCHAR2(20); ---打印日期
  109.      v_date_s DATE; ---开始日期
  110.      v_date_e DATE; ---结束日期
  111.      v_page_count NUMBER:=0; --总页数
  112.      v_total_rows NUMBER; ---定义报表总的line数量
  113.      v_page NUMBER:=1; --当前页
  114.     
  115. ----用于打印网页标题头信息
  116. PROCEDURE print_html(event VARCHAR2) IS
  117. BEGIN
  118.     IF event = 'start' THEN
  119.         xxfin_xml_print_pub.print_head;
  120.         fnd_file.put_line(FND_FILE.OUTPUT,'');
  121.         fnd_file.put_line(FND_FILE.OUTPUT,'');
  122.         fnd_file.put_line(FND_FILE.OUTPUT,'理化检测明细表');--输入网页标题头信息
  123.         fnd_file.put_line(FND_FILE.OUTPUT,'');
  124.         fnd_file.put_line(FND_FILE.OUTPUT,'');
  125.         fnd_file.put_line(FND_FILE.OUTPUT,'');
  126.     END IF;
  127.     IF event = 'end' THEN
  128.         fnd_file.put_line(FND_FILE.OUTPUT,' ');
  129.         fnd_file.put_line(FND_FILE.OUTPUT,'');
  130.     END IF;
  131. END;

  132. ----用于打印头表信息
  133. PROCEDURE print_header IS--------打印汇总表头信息
  134. BEGIN

  135. -------------打印整个表的标题
  136.     FND_FILE.put_line(FND_FILE.OUTPUT,'');
  137.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  138. ');
  139.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  140. ');
  141.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  142. ');
  143.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  144. '||to_char(v_date_s,'yyyy')||'年'||to_char(V_DATE_S,'mm')||'月'||to_char(v_date_s,'dd')||'日-'||to_char(v_date_e,'yyyy')||'年'
  145.     ||to_char(v_date_e,'MM')||'月'||to_char(v_date_e,'DD')||'日理化检测明细表
  146. '
    );
  147.        
  148. -------------打印表左上角和右上角的信息
  149.     FND_FILE.put_line(FND_FILE.OUTPUT,');
  150.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  151. ');
  152.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  153. ');---打印制表日期(即表左上角的信息)
  154.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  155. ');---表头的相关信息(即表右上角的信息)
  156.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  157. ');
  158.     FND_FILE.put_line(FND_FILE.OUTPUT,'
  159. 单位:品质部
    制表日期:'||V_PRINT_DATE||'
    '
    );

  160. END;
  161. .........................


    源文件:XXMFG_QA_010_REPORT_PKG.rar
   报表请求运行结果:理化检测明细表.rar
    还需要做的就是:
        1.把没有数据的空白地方用空的表格填充起来,
        2.试试另外一种办法,只显示有数据的行
        3.把报表的参数加进去(简单)
        4.游标的使用,每个子表头和行的数据都分别使用游标,是否可以把游标定义为一个单独的过程或者其他的什么,这样在过程里就直接调用,使程序看起来更精简,没有这么臃肿。
        5.对于子表的只显示有数据的列是否有更好的方法?
阅读(2768) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~