找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 10193|回复: 10

[经验] 报表模板使用

  [复制链接]
发表于 2009-10-14 11:56:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
报表比较特殊的单据,它不需要真实的数据库表,只要界面就可以了!
并且报表的VO必须自己手动写入,字段和报表模板初始化是的字段一样!
一 功能注册一个节点(作为报表节点)
见单据开发中的单据功能注册
功能注册时对应的UI比较特殊,见下面的UI介绍
二 报表模板初始化
在二次开发->模板管理->报表模板初始化(查询后添加)
此步主要加上报表的字段
三 报表模板设置
模板管理->模板设置->帐表模板设置
四 写入报表UI类
功能注册时:可执行节点填入如下UI即可
package nc.ui.eh.report.h0900303;
import java.awt.BorderLayout;
import nc.bs.framework.common.NCLocator;
import nc.itf.eh.trade.pub.PubItf;
import nc.ui.pub.ButtonObject;
import nc.ui.pub.ClientEnvironment;
import nc.ui.pub.ToftPanel;
import nc.ui.pub.query.QueryConditionClient;
import nc.ui.pub.report.ReportBaseClass;
import nc.vo.eh.kc.h0257005.CalcKcybbVO;  //报表VO
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.query.ConditionVO;
import nc.vo.pub.report.SubtotalContext;
/**
*销售日报表(销售)
* @author 王明
*/
public class ReportUI extends ToftPanel {
    public ButtonObject m_boQuery;          //查询按钮
    public ButtonObject m_boPrint;          //打印按钮
    private ReportBaseClass m_report;       //报表模板类
    private QueryConditionClient m_qryDlg;  //查询对话框
    private ClientEnvironment ce=ClientEnvironment.getInstance();
   
    private UFDate ptoday = null;
        public ReportUI() {
                super();
        m_boQuery = new ButtonObject("查询", "查询报表", 0);
        m_boPrint = new ButtonObject("打印", "打印报表", 0);
        initialize();
        }
        
        private void initialize()
        {
            setName("GeneralPane");
            setLayout(new BorderLayout());
            setSize(1024, 768);
            add(getReportBase(), "Center");
            setButtons(getBtnAry());
            updateButtons();
            getReportBase().setShowNO(true);
            int colcount = getReportBase().getBillTable().getColumnCount();
            String st[] = new String[colcount];
            String skey = "";
            for(int i=0;i<colcount;i++){
                     skey = getReportBase().getBodyShowItems()[i].getKey().trim();
                     st[i] = skey;
            }
            getReportBase().setNotSortCols(st);
            
           //得到当前的日期
            ptoday = this.getClientEnvironment().getDate();
        }
        public ButtonObject[] getBtnAry()
        {
            return (new ButtonObject[] {
                m_boQuery, m_boPrint
            });
           
        }
        public ReportBaseClass getReportBase()
        {
            if(m_report == null)
                try
                {
                    m_report = new ReportBaseClass();
                    m_report.setName("ReportBase");
                    m_report.setTempletID(this.getCorpPrimaryKey(), "H0900303", null, null);
              }
                catch(Exception ex)
                {
                    System.out.println("\u57FA\u7C7B:\u672A\u627E\u5230\u62A5\u8868\u6A21\u677F......");
                }
            return m_report;
        }
        @Override
        public String getTitle() {
                return m_report.getReportTitle();
        }
        @Override
        public void onButtonClicked(ButtonObject bo) {
                try
            {
                if(bo == m_boQuery){
                    onQuery();
                }else if(bo == m_boPrint){
                    onPrint();
                }
            }
            catch(BusinessException ex)
            {
                showErrorMessage(ex.getMessage());
                ex.printStackTrace();
            }
            catch(Exception e)
            {
                showErrorMessage("\u672A\u77E5\u9519\u8BEF:" + e.getMessage());
                e.printStackTrace();
            }
        }
        
        public QueryConditionClient getQryDlg()
        {
            if(m_qryDlg == null){
                m_qryDlg = createQueryDLG();
               
            }
            return m_qryDlg;
        }
        
        protected QueryConditionClient createQueryDLG()
        {
                QueryConditionClient dlg = new QueryConditionClient();
            dlg.setTempletID(this.getCorpPrimaryKey(), "H0900303", null, null);
            
            //结束开始日期
            dlg.setNormalShow(false);
            return dlg;
        }
        
        //设置打印方法
          public void onPrint() throws Exception{
                          this.getReportBase().previewData();
          }
          //查询方法
          public void onQuery() throws Exception{
                  String cuername = ce.getUser().getUserName();   // 操作员
                  this.getReportBase().getBillModel().clearBodyData();
                  QueryConditionClient uidialog = getQryDlg();
                  uidialog.setDefaultValue("date", ce.getDate().toString(), "");
                  getQryDlg().showModal();
                   if(getQryDlg().getResult() == 1){
                           ConditionVO[] condate  = getQryDlg().getConditionVOsByFieldCode("date");        
                           CalcKcybbVO kcVO = new CalcKcybbVO();
                           if(condate==null||condate.length==0){
                                          showErrorMessage("请选择日期!");
                                          return;
                                  }
                           UFDate selectdate = new UFDate(condate[0].getValue());        
                           kcVO.setPk_corp(ce.getCorporation().getPk_corp());
                           kcVO.setCalcdate(selectdate);
                           getReportBase().setHeadItem("zddate", selectdate);
                           getReportBase().setHeadItem("zdpeoson", ce.getUser().getUserName().toString());
                           
                           PubItf pubitf = (PubItf) NCLocator.getInstance().lookup(PubItf.class.getName());
                           nc.vo.eh.report.h0900303.ReportVO[] vos=pubitf.getxsrbData(kcVO);
                           //调用后台代码,将报表VO填充
                           
                           this.getReportBase().setBodyDataVO(vos);
                           
                          //显示合计项
                        String[] strsubValKeys =new  String[]
                        {"drxsl","ljdrxsl","syljdrxsl","hb","qnljdrxsl","tb","byjh"};
                        String[] strgrpValKeys = {"dinvclassname","zinvclassname"};                        
                        SubtotalContext stctx = new SubtotalContext();
                        stctx.setGrpKeys(strgrpValKeys);
                        stctx.setSubtotalCols(strsubValKeys);        //配置要进行合计的字段
                        stctx.setIsSubtotal(true);                  //需要小计
                        stctx.setLevelCompute(true);
                        stctx.setSubtotalName("小计");
                        stctx.setTotalNameColKeys("dinvclassname");        //设置合计项显示列位置
                        stctx.setSumtotalName("合计");                     //设置合计项显示名称
                        this.getReportBase().setSubtotalContext(stctx);
                        this.getReportBase().subtotal();
                        this.getReportBase().execHeadLoadFormulas();
                        this.getReportBase().execTailLoadFormulas();
                           
                   }
          }
}
 楼主| 发表于 2009-10-14 12:20:08 | 显示全部楼层
发表于 2009-10-16 08:28:12 | 显示全部楼层
看不懂,还是谢谢楼主
发表于 2009-10-16 08:58:14 | 显示全部楼层
好好学习学习,谢谢!
发表于 2009-10-16 09:41:43 | 显示全部楼层
发表于 2009-10-16 10:05:54 | 显示全部楼层
学习学习..............................
发表于 2011-7-22 09:40:09 | 显示全部楼层
发表于 2011-7-25 16:25:04 | 显示全部楼层
太感谢了,谢谢楼主分享
发表于 2011-10-28 13:09:55 | 显示全部楼层
发表于 2017-3-13 22:51:01 | 显示全部楼层
不错的东西,学习一下子的,谢谢
回复 点赞 拍砖

使用道具 举报

发表于 2017-3-29 09:29:13 | 显示全部楼层

就想问能不能批量修改摘要啊
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-19 15:25 , Processed in 0.091467 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表