powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Вопрос специалистам по FORMS
24 сообщений из 24, страница 1 из 1
Вопрос специалистам по FORMS
    #35484604
Ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некий блок данных, основанный на view. Пользователь должен после поиска проставить у некоторых записей галочки, и по кнопке с выбранными записями надо сделать в базе некие действия. Никаких изменений в данные он не вносит. Для совершения необходимых действий в базе я хочу получить из блока массив id-шников тех строк, у которых стоят галочки. Как это сделать правильно и красиво?
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35484650
Apeldop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Go_block...
First_record;
loop
id_list:=id_list||','||:id;
-- (добавляете id в переменную)
exit when :system.last_record='TRUE';
next_record;
end loop;
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35484663
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем проблема:
1. нон датабайсе Check-box
2. по кнопке:
пробегаем все записи в блоке (см. пример в help'е)
смотрим нажат ли check-box
если да - заносим(добавляем) Id'шник в массив
если конец блока - выход

возможна оптимизация - проход не по всем записям, а только по отфетченным (просмотренным пользователем). В случае, если данные отсортированы так, что запрос может возврашать очень много записей, а пользователь работает только с "верхними" - может здорово выручить.
(эта тема обсуждалась, т.ч. код можно посмотреть/поискать в форуме)
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35484665
Apeldop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+ скорее всего, динамик sql
+ галочки - небазовые поля.
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35484785
ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevВ чем проблема:
пробегаем все записи в блоке (см. пример в help'е)...)
Да я так и думала, по другому похоже никак...
Leonid Kudryavtsev
возможна оптимизация - проход не по всем записям, а только по отфетченным (просмотренным пользователем). В случае, если данные отсортированы так, что запрос может возврашать очень много записей, а пользователь работает только с "верхними" - может здорово выручить.
(эта тема обсуждалась, т.ч. код можно посмотреть/поискать в форуме)
Этот момент тоже вызывает у меня большие сомнения. Действие со строками (которое по кнопке) требует от пользователя некой осмысленности. Т.е. если все записи не отфетчены, то осмысленности очевидно не наблюдается. Вносить при этом серьезные изменения в базу как-то не хочется. Что делать? Поставить Query all Record - Да ?? Или выдавать по кнопке сообщение - что вы мол все записи не просмотрели и ничего не делать?
Если не затруднит, дайте ссылку на обсуждение о котором вы пишете. Что-то поиском не нашла...
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35484898
brainwashed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставьте ограничение на отфетченные) если не сейчас, то завтра пользователи сами взвоют, мол кнопка медленно работает:)

поиск по query_hits
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35485032
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысла ставить Query all Record - Да не вижу вообще, это не гарантирует, что пользователи реально данные записи просмотрят.

В моем случае (OeBS) - данные на форме сортировались в порядке убывания дат. Т.е. человек в 90% находил нужные данные в 25 строках. В общем, это было не ошибка, а правильное поведение (нашел нужные записи, пометил, запустил обработку дальше).
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35485088
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-guest пишет:
> Автор: Ora-guest
> Есть некий блок данных, основанный на view. Пользователь должен после
> поиска проставить у некоторых записей галочки, и по кнопке с выбранными
> записями надо сделать в базе некие действия. Никаких изменений в данные
> он не вносит. Для совершения необходимых действий в базе я хочу получить
> из блока массив id-шников тех строк, у которых стоят галочки. Как это
> сделать правильно и красиво?
> Тема <http://www.sql.ru/forum/actualthread.aspx?tid=585717> Ответить
> <http://www.sql.ru/forum/actualpost.aspx?tid=585717> Сообщение
> <http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=585717&msg=6060163>
>
table_from_block
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35485266
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara
table_from_block


И зачем?
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35486886
ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикольно. сейчас у меня следующий код в форме (создаю массив для последующей обработки):
GO_BLOCK ('MY_BLOCK');
First_record;
i := 0;
loop
if :MY_BLOCK.CHECKBOX= 'Y' THEN
i := i + 1;
v_tbl(i) := :MY_BLOCK.ID;
end if;
exit when :system.last_record='TRUE';
next_record;
end loop;

MY_BLOCK.CHECKBOX имеет следующие свойства.
Database Item: No
Value When Checked: Y
Value When Unchecked: N
Initial Value: Y

Так вот, когда заходишь в форму - то галочки все на записях проставлены. Но на самом деле значения в MY_BLOCK.CHECKBOX нет, пока не проставишь/не снимешь галочку руками. Если ничего не делать (как бы если пользователь согласен с проставленными галочками) - цикл завершается с i = 0.

Может кто-нибудь объяснить что происходит? У меня OeBS. MY_BLOCK.CHECKBOX имеет Item Type CheckBox, Subclass Information 'CHECKBOX'.
Leonid Kudryavtsev, вопрос вам собственно - вы уже как я поняла, такое делали.
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35486933
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora-guest
Так вот, когда заходишь в форму - то галочки все на записях проставлены.

См. свойство итема "Check Box mapping of Other Value", значение по умолчанию 'Checked'

[quot ora-guest]
Если ничего не делать (как бы если пользователь согласен с проставленными галочками) - цикл завершается с i = 0.
[/qout]

И что удивительного?
Цикл перебирает все записи
Т.к. записей с :MY_BLOCK.CHECKBOX= 'Y' нет (там не 'Y', а null), то if (приращение i) никогда не выполняется.
Соответственно завершаемся с i = 0

Почему не отрабатывает, как ты ожидаешь "Initial Value", с ходу не отвечу. Давно Forms'ами не занимаюсь, а в help'е смотреть влом.
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35486947
FRM-42100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ora-guestТак вот, когда заходишь в форму - то галочки все на записях проставлены. Но на самом деле значения в MY_BLOCK.CHECKBOX нет, пока не проставишь/не снимешь галочку рукамиСмотри свойство Check Box Mapping of Other Values.
Кстати, а зачем метаться по блоку, собирая значения, когда все можно делать в триггере WHEN-CHECKBOX-CHANGED: поставили галку - добавил в массив; сняли - удалил?
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35487010
Ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevПочему не отрабатывает, как ты ожидаешь "Initial Value", с ходу не отвечу. Давно Forms'ами не занимаюсь, а в help'е смотреть влом.

Usage Notes

When using the default value to initialize the state of items such as check boxes, radio groups, or list items, keep in mind that the default value does not get assigned until Oracle Forms creates a record in the block...

Получается, что считывание записи из базы - не считается "creates a record in the block'. Неужели в Post-query присвоение придется писать?
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35487016
ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FRM-42100 ora-guestТак вот, когда заходишь в форму - то галочки все на записях проставлены. Но на самом деле значения в MY_BLOCK.CHECKBOX нет, пока не проставишь/не снимешь галочку рукамиСмотри свойство Check Box Mapping of Other Values.
Кстати, а зачем метаться по блоку, собирая значения, когда все можно делать в триггере WHEN-CHECKBOX-CHANGED: поставили галку - добавил в массив; сняли - удалил?

пользователь должен выбрать записи, а галки может и не проставлять руками, они по умолчанию на все записи предложены.
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35487061
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-guest
Неужели в Post-query присвоение придется писать?

Зачем? Чем тебе NULL не нравиться?

Поставь правильно "Check Box Mapping of Other Values".
В проверку условие в IF добавь NVL( , )

Держаться! До выходных уже не далеко!
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35487084
Ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
Держаться! До выходных уже не далеко!

Спасибо
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35487091
FRM-42100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevПоставь правильно "Check Box Mapping of Other Values".
В проверку условие в IF добавь NVL( , )Мне кажется, аккуратней будет использовать Convert_Other_Value
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35487119
Ora-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FRM-42100Мне кажется, аккуратней будет использовать Convert_Other_Value
Так и сделала, спасибо за совет.
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35489135
ora-quest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А делал кто-нибудь в форме итог с группировкой? Ну то есть идешь по блоку, первое поле какая-нибудь позиция. Так вот, чтобы внизу отображался итог по блоку (сумма), но только по тем строкам, где позиция равна текущей (на которой стоит курсор)?
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #35489222
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora-quest...но только по тем строкам, где позиция равна текущей (на которой стоит курсор)?


позиция = номенклатура = MTL_SYSTEM_ITEMS ?

Не требовалось. Но в принципе сделать можно. Технических (логических) проблем особенно не видно.

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вопрос специалистам по FORMS
    #37797534
Irhen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apeldop
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Go_block...
First_record;
loop
id_list:=id_list||','||:id;
-- (добавляете id в переменную)
exit when :system.last_record='TRUE';
next_record;
end loop;


Посредством персонализации (не трогая саму форму) как можно такой цикл организовать?
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #37798574
Irhen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...желательно без custom.pll
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #37814214
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IrhenApeldop
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Go_block...
First_record;
loop
id_list:=id_list||','||:id;
-- (добавляете id в переменную)
exit when :system.last_record='TRUE';
next_record;
end loop;


Посредством персонализации (не трогая саму форму) как можно такой цикл организовать?
Что-то типа такого:
0. when-new-form-instance
0.1 в глобальную переменную XX_LOOP кладем N

1. Начало. Если цикл запускаем по самодельному пункту меню (SPECIALnn), то на событие SPECIALnn настриваем действия:
1.1 go_block
1.2 first_record;
1.3 в глобальную переменную XX_LOOP кладем Y
1.4 добавлям id в глобальную (или пакетную) переменую.
1.5 next_record

2. when-new-record-instance
если global.xx_loop='Y' and :system.last_record!='TRUE'
2.1 добавлям id в глобальную (или пакетную) переменую.
2.2 next_record

3.when-new-record-instance
если global.xx_loop='Y' and :system.last_record='TRUE'
2.1 добавлям id в глобальную (или пакетную) переменую.
2.2 в глобальную переменную XX_LOOP кладем N

На практике не проверял. Наверняка какие-то нюансы вылезут. Например, как обрабатывать ситуацию, когда в блоке только одна запись, или он пустой. Но это в качестве домашнего задания.
...
Рейтинг: 0 / 0
Вопрос специалистам по FORMS
    #37816410
Irhen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
va_kochnev,
Спасибо за помощь !
Интересное решение.
Все же пришлось повернуться в сторону custom.pll
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Вопрос специалистам по FORMS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]