Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Программирование для начинающих - общие вопросы.
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА: Выбор определенных записей в блоке данных (Forms 6) в Oracle

Выбор определенных записей в блоке данных (Forms 6) в Oracle 29 авг 2011 06:54 #3558

  • Klond
  • Klond аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Вот встала такая задача:
В форме есть блок данных - ACC_BLOCK, в нем есть столбец с данными запроса
ACCOUNTS, есть также CheckBox - ACC_CHECKBOX. Стоит задача выбрать для дальнейшей обработки определенные строки из ACCOUNTS - помечая соответсвенные позиции ACC_CHECKBOX. По виду что-то типа этого:
________
________V
________
________V

Не подскажите в каких триггерах или не триггерах, что делать
для выбора необходимых строк? Скажем нажимаю на кнопку "Обработать" -
и как получить какие элементы помечены какие нет? Простенький примерчик плиз :-).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Выбор определенных записей в блоке данных (Forms 6) в Oracle 29 авг 2011 06:55 #3559

Можно примерно так:
(триггер на кнопке "Обработать")

-- идем по всем строкам
GO_BLOCK('ACCOUNTS');
first_record; -- на первую

while get_block_property('ACCOUNTS',Current_Record) <= :b_itg.cnt_pch
loop
if :ACCOUNTS.ACC_CHECKBOX!=0 then

выполняем какие-то действия

end if;
next_record;
end loop;

При этом у эл-та :ACCOUNTS.ACC_CHECKBOX стоят св-ва: значение при выборе 1, при отмене выбора - 0
В переменной :b_itg.cnt_pch хранится число записей, выбранных по запросу в блоке (я обычно это считаю с помощь "подсчета предварительных итогов")

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Выбор определенных записей в блоке данных (Forms 6) в Oracle 29 авг 2011 06:55 #3560

  • Klond
  • Klond аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Спасибо за ответ. Но в предложенном Вами способе есть один неприятный момент - если в запросе слишком много строк, а пользователь отметил лишь малую их часть - то придется фетчить из базы весь результат запроса, что может занять много времени и ресурсов. Я лучше буду создавать список помеченых счетов в тригере CheckBoxChange (или что-то типа того). Но все равно спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Выбор определенных записей в блоке данных (Forms 6) в Oracle 29 авг 2011 07:23 #3561

Да, это точно, есть такой недостаток :-(
Меня спасает лишь то, что пока не попадали большие выборки...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Выбор определенных записей в блоке данных (Forms 6) в Oracle 29 авг 2011 07:23 #3562

Я делаю так.
Создаю GLOBAL TEMORARY TABLE с необходимыми столбцами из исходной таблицы + поле REQUIRED типа VARCHAR2(1).
В триггере WHEN_NEW_FORM_INSTANCE заполняю временную таблицу данными из исходной + поле REQUIRED значением 'N' или 'Y' в зависимости от логики.
Создаю блок данных на временной таблице, причем поле REQUIRED отображаю как CheckBox.
В триггере WHEN_BUTTON_PRESSED кнопки "Обработать" пишу
declare
cursor c is
select * from <имя_временной_таблицы> where required = 'Y';
begin
for rec in c loop
...
end loop;
end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Выбор определенных записей в блоке данных (Forms 6) в Oracle 29 авг 2011 07:24 #3563

  • Klond
  • Klond аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Ооо! Огромнейшее спасибо!
А вот этот способ уже дя меня лучше.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4