[Logo]  E3系統 開發.操作.問題 討論區 
[Search] 搜尋主題 [Recent Topics] 最新主題 [Hottest Topics] 熱門主題 [Members] 會員列表 [Groups] E3首頁
[Register] 會員註冊 [Login] 會員登入
編輯程式, 加入 新增匯入功能  XML
討論區首頁 » Java程式分析與設計
發表人 內容
e3Admin

[Avatar]

註冊時間: 2011-06-09 18:31:13
文章: 73
離線

單表單編輯, 或雙表單編輯, 的型板有一個
工具列的標準功能, "新增匯入", 可以匯入
excel的資料到新增資料中, 操作請看E3的
操作手冊.

標準匯入資料是以字串為主, 如果資料較複製
或是要先做調整再匯入時, 可以設定一個中間
的調整function, 來做資料加工程式. 尤其是
出貨單, 進貨單..等, 的雙表單匯入, 很難用標
準模式匯入, 都要依客戶的需求做匯入.

我們以 E3/SDK示範項目 "郵遞區號編輯" 做
加入匯入功能, 先看以下的程式碼.


A. 主選單項目
src/com/dasam/e3010001/client/SystemDataCmz.java, 加入 "newimp" 權限細項
x.add2(rs,1,"D",".郵遞區號編輯","edit.CmzZipCode",1,"edit_1",2,"newimp");


B. 標準匯入功能
src/com/dasam/e3010001/client/edit/CmzZipCode.java
行47~50先做加入 新增匯入 的工具列按鍵, 記得加好, 要先打開群組權限.
行10 是設定那些是參照欄位, 寫入前會先檢查是否有參照筆.
public class CmzZipCode extends XFrameEditI {

    public CmzZipCode() throws Exception {
        this.isVoidWorkMode=true;
        this.isUnvoidWorkMode=true;
        this.convLangTables = "cmzZipCode,x";
        this.filterList = uiFilter("filter");
        this.serviceClassId = "edit.CmzZipCode";
		//this.importRefreFields = "deparId"; //匯入時要參照欄位,
        //this.adjustImportData = new com.dasam.work.XMethod(this,"exeAdjustImportData",null);
    }

    //==========================================================================
    public void doWorkInit(HashMap map) throws Exception {
        super.doWorkDefault(map,this);
        this.moveRecord("init", XLet.getString(map.get("#link_edit_initValue")));

		//editor layout
        //"主碼"
        XEText eId = new XEText(tbl("id"),10,this,"id");
        xlay.add(eId,0,0);
        eId.setFindRecord(this);
        //資料視窗
        XButton2 btnView = XTool.getViewButton("CmzZipCodeView",eId,this,"id", xwbar.getButton("first"));
        xlay.addComH(eId,btnView,1,0);
        editMap.put(btnView,"view");

        //"名稱"
        XEText eName = new XEText(tbl("name"),20,this,"name");
        xlay.add(eName,0,0);

        //"備註"
        XEText eMemo = new XEText(tbl("memo"),20,this,"memo");
        xlay.add(eMemo,0,0);

        this.addEditStateLabel("v",0,0,0);

        this.viewPack();
        setWorkObjectValue(DATA_RS);
        setWorkObjectEditStatus("view");
    }

    
	//==========================================================================
	//加入"匯入"的按鍵
	public HashMap getWorkBarMap() throws Exception {
		if (!this.isPassCtrl("newimp")) return super.getWorkBarMap();//無新增匯入權限,
		return XTool.getImportWorkBarMap(super.getWorkBarMap());//加入 '匯入',
	}

    //==========================================================================
    //excel匯入調整,
    /*public void exeAdjustImportData(boolean isData, XRowSet rs, org.apache.poi.hssf.usermodel.HSSFRow row) throws Exception {
        if (isData){
        	//id, excel第1欄
            Object id = XExport.getCellValue(row.getCell(row.getFirstCellNum()));
            rs.setObject("id",id);
            //name, excel第2欄
            Object name = XExport.getCellValue(row.getCell((short)(row.getFirstCellNum()+1)));
            rs.setObject("name",name);
        }
    }*/
    
}


C. 匯入功能加工
以上面的程式碼, 把行11及 行54~63的備註拿掉,
就可以自行設計 exeAdjustImportData() 中的程式
碼, 做匯入前的資料加工了.



修改5次,最後2011-06-26 21:56:38  

輕輕敲醒沈睡的心靈~  企鵝的初章 ^^
 
討論區首頁 » Java程式分析與設計
前往:   

2011 DASAMX GROUP.    Powered by JForum 2.1.9©    建議使用Firefox瀏覽