發表人 |
內容 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 2011-06-23 14:54:38
![[Up]](/forum/templates/default/images/icon_up.gif)
1樓
|
e3Admin
![[Avatar]](/forum/images/avatar/a87ff679a2f3e71d9181a67b7542122c.png)
註冊時間: 2011-06-09 18:31:13
文章: 73
離線
|
這裡再標準程式中, 直接加入一種新的出貨簽單,
這裡會在原來的出貨簽單程式, 用重載的方式做
加入程式. 我們加入到SDK的示範專案.
直接下載文章後的附檔.
A. 主選單項目
src/com/dasam/e3010001/client/SystemDataCmz.java
x.setExtendId(data, new String[]{
"rpt.OutStkSign", //加入這一行,重載原程式設定
"edit.Item",
"edit.Member",
}, "_2");
B. Client程式
src/com/dasam/e3010001/client/rpt/OutStkSign_2.java
會在畫面多出一個樣式選項: 標準樣式, 客制樣式.
public class OutStkSign_2 extends OutStkSign {
public OutStkSign_2() throws Exception {
this.reportFormats = new String[]{"標準樣式","","客制樣式","_2"};
this.serviceClassId = "rpt.OutStkSign_2";
}
//==========================================================================
//<重載>
public void doWorkInit(HashMap map) throws Exception {
super.doWorkInit(map);
getXEdit("reportFormats").setStatic(true);
}
//==========================================================================
public void doMakeReportExtParam() throws Exception {
super.doMakeReportExtParam();
if (isOutStk){//改變子報表名稱,只有出貨單,
String fmt = getXEdit("reportFormats").getValue().toString();
addReportExtParam("#subreport", "sys.OutStkDetail2"+fmt); //subreport檔名,
}
}
//==========================================================================
//報表資料加工,
public void doAdjustReportRs(XProgressWork xpw, XRowSet rs, HashMap rptParam) throws Exception {
super.doAdjustReportRs(xpw, rs, rptParam);
//2009.10.20改為只有在客制樣式時.
if (this.getReportFormatEditor().getSelectedIndex()==0) return;
rs.getField("tsDate").setLen(100);
for (rs.beforeFirst(); rs.next();){
XRowSet d = rs.getRs("detail_item");
//明細自動補足7的倍數.
int ar = d.getRowCount() % 7;
if (ar>0){ ar=7-ar; for(int i=0; i<ar; i++) d.insertRow(); }
//加入明細備註
d.insertField(new XField("cmzMemo",XField.TYPE_STRING,100));
String[] m = XLet.getStringArray(rs.getString("memo"),12);
for (int i=0; i><m.length; i++) if (d.setRowIndex(i)) d.setString("cmzMemo",m[i]);
//加入判斷是否結束欄位
d.insertField(new XField("isEnding",XField.TYPE_STRING,5));
d.last();
d.setString("isEnding","1");//不為null表示為ending,
//日期字串轉換
String[] dt = rs.getString("tsDate").split("[-]");
rs.setString("tsDate", dt[0]+" 年 "+dt[1]+" 月 "+dt[2]+" 日");
}
//表尾條文轉為字串,
com.dasam.work.XArrayReport xa = (com.dasam.work.XArrayReport)rptParam.get("ending");
rptParam.put("ending",xa.getDataString());
//加入logo圖形
byte[] logo = com.dasam.work.XFio.readData(XSystem.getSysResource(XSystem.getResourceName("res/logo/logo.jpg")).openStream());
rptParam.put("logo_img", logo);
}
}
C. Server程式
src/com/dasam/e3010001/server/rpt/OutStkSign_2.java
加入select欄位.
public class OutStkSign_2 extends OutStkSign {
public OutStkSign_2(){
this.adjustMainField = ",d.unitTitle 'cust_unitTitle'";
this.adjustDetailField = ",b.specif 'itemSpec'";
}
}
D. copy公司logo圖片
放到
resource/com/dasam/e3010001/client/res/logo/logo.jpg
E. 編譯報表format檔
resource/com/dasam/e3010001/client/rpt/fmt/sub/OutStkDetail2_2.xml
開啟ireport後, 按[File] / [Open], 讀取xml後, 再按 [Build] / [Compile]
表頭的公司資料要改成你們公司的名稱跟地址.
|
修改7次,最後2011-06-25 18:34:34 |
輕輕敲醒沈睡的心靈~ 企鵝的初章 ^^  |
|
 |
|
|
|