public class MyDataProvider extends AbstractPrintDataProvider{@Overridepublic IRowSet getData(R1PrintDataSource dataSource) throws Exception {IRowSet irow = null;String curBillID = editData.getId().toString();IQueryExecutor iqec = null; FilterInfo filterInfo = new FilterInfo(); EntityViewInfo viewInfo = new EntityViewInfo(); if("PurchaseRequestBillQuery.bos-query".equals(dataSource.getId())){iqec = QueryExecutorFactory.getRemoteInstance(new MetaDataPK( "com.kingdee.eas.custom.office.purchase.app", "PurchaseRequestBillQuery")); filterInfo.getFilterItems().add( new FilterItemInfo("id", curBillID, CompareType.EQUALS)); viewInfo.setFilter(filterInfo); iqec.setObjectView(viewInfo); iqec.option().isAutoTranslateBoolean = true; iqec.option().isAutoTranslateEnum = true; try {irow = iqec.executeQuery();} catch (BOSException e) {MsgBox.showInfo("擷取套打資料有誤:"+e.getMessage());}} if("PurchaseRequestAppove".equals(dataSource.getId())){StringBuffer sql = new StringBuffer();sql.append("SELECT "); sql.append("A.FID AS billID2,").append("A.FCreateTime as auditDate,").append("A.FIsPass as auditResult,").append("B.FName_l2 as auditPerson,").append("A.FOpinion_l2 as auditAdvise");sql.append(" FROM T_BAS_MultiApprove A").append(" INNER JOIN T_PM_User B ON A.FCreatorID = B.FID").append(" INNER JOIN T_BD_Person C ON B.FPersonId = C.FID");sql.append(" where A.FBillID='").append(curBillID).append("' order by A.FCreateTime");ISQLExecutor isexe = SQLExecutorFactory.getRemoteInstance(sql.toString());try {irow = isexe.executeSQL();return irow;} catch (BOSException e) {MsgBox.showInfo("擷取套打資料有誤:"+e.getMessage());}} if("PurchaseRequestBillR1Query".equals(dataSource.getId())){iqec = QueryExecutorFactory.getRemoteInstance(new MetaDataPK( "com.kingdee.eas.custom.office.purchase.app", "PurchaseRequestBillR1Query")); filterInfo.getFilterItems().add( new FilterItemInfo("id", curBillID, CompareType.EQUALS)); viewInfo.setFilter(filterInfo); iqec.setObjectView(viewInfo); iqec.option().isAutoTranslateBoolean = true; iqec.option().isAutoTranslateEnum = true; try {irow = iqec.executeQuery();} catch (BOSException e) {MsgBox.showInfo("擷取套打資料有誤:"+e.getMessage());}} return irow;}}
需要有一點主意的就是,在自己寫sql語句查詢的時候,需要在套打管理那裡選中——右擊建立一個自訂的中繼資料query。對於枚舉類型需要自己在儲存格加上後置指令碼進行處理才可以..........