資源描述:
《(01)-oaf 技術(shù)細(xì)節(jié)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、OracleSeeker,Oracle探索者·Home·Activity·Members·Groups·Forums·BlogsTopofFormBottomofFormYouarebrowsingthearchiveforOracle.←PreviousEntriesNextEntries→byaronezhangOAF中如何更改query的默認(rèn)查詢12月20,2008inOracleEBS二次開發(fā)byaronezhang??OAFramework使用QueryRegion來創(chuàng)建查詢,可以創(chuàng)建簡單的查詢、高級查詢和保存用戶個性化的查詢。queryRe
2、gion有三種構(gòu)建方式:?1,resultsBasedSearchOAFramework根據(jù)查詢結(jié)果表格(或HGrid)中定義的可查詢的Item自動生成查詢面板。OAFramework在用戶選擇查詢按鈕后自動根據(jù)用戶輸入的值,生成Where子句,并執(zhí)行查詢。?2,autoCustomizationCriteriaOAFramework根據(jù)開發(fā)者定義的簡單查詢和高級查詢Region生成查詢面板。OAFramework在用戶選擇查詢按鈕后,根據(jù)用戶輸入的值,生成Where子句,并執(zhí)行查詢。利用這種模式可以更改查詢項的類型,比如使用LOV、Poplist等,
3、還可以加入結(jié)果表(或HGrid)中不存在的查詢項目。?3,NoneOAFramework根據(jù)開發(fā)者定義的簡單查詢和高級查詢Region生成查詢面板。開發(fā)人員需要自己實(shí)現(xiàn)視圖對象的查詢邏輯。這種方式一般用于無法使用queryRegion所提供的功能的情況。?本文主要介紹在autoCustomizationCriteria模式下如何控制query的查詢。比如對于日期的查詢一般用區(qū)間范圍進(jìn)行查詢,而默認(rèn)情況下,OAFramework生成的Where子句做相等比較。1.為queryRegion創(chuàng)建簡單查詢面板,創(chuàng)建各個查詢Item,包括日期從和日期至。2.為各
4、個查詢Item創(chuàng)建SearchMapping,除了日期從和日期至兩個查詢項。此時除了日期范圍,其余項目的查詢都已經(jīng)可用。3.在queryRegion所在的Controller類processFormRequest()方法中加入以下代碼?[Copytoclipboard]ViewCodeJAVA123456789101112OAQueryBeanquerybean=(OAQueryBean)webBean.findIndexedChildRecursive("QueryRN");//判斷用戶是否選擇了查詢按鈕if(pageContext.getParam
5、eter(querybean.getGoButtonName())!=null){StringdateFrom=pageContext.getParameter("SearchDateFrom");StringdateTo=pageContext.getParameter("SearchDateTo");?OAApplicationModuleam=pageContext.getApplicationModule(webBean);Serializable[]params={dateFrom,dateTo};?am.invokeMethod("bind
6、DateRangeWhereClause",params);}4.應(yīng)用程序模塊中方法如下:?[Copytoclipboard]ViewCodeJAVA12publicvoidbindDateRangeWhereClause(StringdateFrom,StringdateTo){3456789101112131415161718192021222324252627282930OAViewObjectvo=getXxxVO1();?Stringclause=null;StringjoinStr="";if(vo.getWhereClause()!=nu
7、ll){joinStr="AND";}?if((dateFrom!=null)&&(!("".equals(dateFrom.trim())))){clause="RECEIPT_DATE>=:";whereClause.append(++bindCount);parameters.addElement(Date.valueOf(dateFrom));clauseCount++;}//條件:接收日期至if((dateTo!=null)&&(!("".equals(dateTo.trim())))){if(claus
8、eCount>0){whereClause.append("AND");}whereCl