среда, 20 ноября 2013 г.
четверг, 7 ноября 2013 г.
CheckBox в таблице связанный с INTEGER полем базы
В БД есть поле do_flg типа INTEGER со значениями 0(ложь), 1(истина), которое нужно отображать в таблице интерфейса в виде чекбокса.
Всё. Теперь все изменения flg будут приводить к изменению do_flg/
- Создаем в xxxEO транзиентный(!) атрибут flg типа Boolean всегда изменяемый.
- Добавляем flg в xxxVO где ставим его ControlType CheckBox
- В классе xxxEOImpl.java переопределяем методы доступа к flg так, чтобы они были привязаны к полю do_flg
public Boolean getFlg() {
Number n = (Number)getAttributeInternal(DOFLG);
if( n != null && n.longValue()== 1) {
return new Boolean(true);
}
return new Boolean(false);
}
public void setFlg(Boolean value) {
if(value == null || !value.booleanValue())
setAttributeInternal(DOFLG, new BigDecimal(0));
else
setAttributeInternal(DOFLG, new BigDecimal(1));
setAttributeInternal(FLG, value);
}
Всё. Теперь все изменения flg будут приводить к изменению do_flg/
среда, 30 октября 2013 г.
Убрать строку статуса в PanelCollection
Чтобы убрать строку статуса в PanelCollection нужно выставить свойство
FeaturesOff: statusBar
FeaturesOff: statusBar
вторник, 29 октября 2013 г.
Запись изменений VO в базу без commit
Для автоматической записи в БД всех изменений происходящих на уровне WLS
можно выставить this.setAutoPostChanges(true); в объекте VOImpl.
ВАЖНО:
1. запись будет происходить только в момент выполнения ExecuteQuery()
2. на измененных записях таблицы выставляется блокировка
What you may need to know about DBTransaction::postChanges()
можно выставить this.setAutoPostChanges(true); в объекте VOImpl.
ВАЖНО:
1. запись будет происходить только в момент выполнения ExecuteQuery()
2. на измененных записях таблицы выставляется блокировка
What you may need to know about DBTransaction::postChanges()
// Get VewRowImpl someVewRowImpl from VO
someVewRowImpl.setAttribute( "SomeAttrib","New Value");
EntityImpl someEOImpl = someVewRowImpl.getEntity(0);
DBTransaction txn = getDBTransaction();
txn.validate();
txn.postChanges();
txn.removeTransactionPostListener(someEOImpl);
//The below two lines may cause your EO to skip
// beforeCommit() and afterCommit() call backs.
//Normally you can skip the below two lines,
// use it if you need to clear the EO cache once data is posted to DB
// This makes sense if you have millions of rows in an update and
// and you want to get rid of the cached rows without any delay
txn.removeTransactionListener(someEOImpl);
txn.clearEntityCache(null);
Как получить текст запроса для поисковой формы
Хотим получить запрос выполняющийся в поисковой форме (Query) элементе
для этого переопределяем метод executeQueryForCollection объекта ViewObjectImpl
protected void executeQueryForCollection(Object qc, Object[] params,
int numUserParams) {
System.out.println("--- numUserParams "+numUserParams);
System.out.println("--- getQuery "+getQuery());
for(int i=0;i<numUserParams;i++) {
Object[] o = (Object[])params[i];
System.err.println(o[0] + " " + o[1]);
}
super.executeQueryForCollection(qc, params, numUserParams);
}
Получаем что-то такое:
SELECT * FROM
(SELECT /*+ FIRST_ROWS */ IQ.*, ROWNUM AS Z_R_N FROM
(SELECT TrInOperationsEO.ID, TrInOperationsEO.INOUT_DATA_LOG_ID,
...
TrInOperationsEO.CLIENT_CODE
FROM TR_IN_OPERATIONS TrInOperationsEO
WHERE (ROWNUM <= :bndMaxRows)
AND ( ( ( (TrInOperationsEO.ID = :vc_temp_1 )
AND (TrInOperationsEO.INOUT_DATA_LOG_ID = :vc_temp_2 ) ) ) ) ORDER BY id DESC
) IQ WHERE ROWNUM < :Bind_RangePage_High
) WHERE Z_R_N > :Bind_RangePage_Low
Надо заметить, что параметры Bind_RangePage_High, Bind_RangePage_Low возникают из постраничного вывода VO, остальные имеют имена vc_temp_1, vc_temp_2, и т.д. в соответствии с тем, какие параметры отмечены в форме.
Список параметров выглядит примерно так:
bndMaxRows 100
vc_temp_1 15613
vc_temp_2 23
vc_temp_3 R
Первая переменная bndMaxRows добавлена в запрос VO вручную, остальные формируются по полям автоматически.
четверг, 24 октября 2013 г.
Таблицы с постраничный выводом
Настраиваем VO для работы с многостраничными запросами
В свойствах итератора выставляем то же количество записей:
Для таблицы с постраничным выводом количество записей получается через функцию
getEstimatedRowCount() объекта ViewObjectImpl
Пройти по всем записям можно через два цикла, первый - цикл по страницам, второй по записям на каждой странице, примерно так:
public void onLoop(ActionEvent actionEvent) {
long row_count = getVoImpl().getEstimatedRowCount();
long rows_per_page = getVoImpl().getRangeSize();
long page_count = row_count / rows_per_page + 1;
System.out.println("total rows:" + row_count + " rows at page:" + rows_per_page + " numb of pages:" + page_count);
int m = 1;
for(int i=1;i<=page_count;i++) {
System.out.println("--- Page: " + i);
getVoImpl().scrollToRangePage(i);
for(int j=0; j<rows_per_page && m<=row_count; m++, j++) {
Row row = getVoImpl().getRowAtRangeIndex(j);
System.out.println(m +" "+ row.getAttribute(0)+ " " + row.getAttribute(2) );
}
}
}
Тестовое приложение TestHr1.rar
вторник, 22 октября 2013 г.
Стандартные иконки
Иконки находится в jar файле oicons.jar
У меня они в двух местах:
C:\Oracle\Middleware123\jdeveloper\ide\lib\
C:\Oracle\Middleware123\oracle_common\modules\oracle.adf.model_11.1.1\oicons.jar
Подписаться на:
Сообщения (Atom)



