Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Вопрос специалистам по FORMS / 24 сообщений из 24, страница 1 из 1
13.08.2008, 10:45
    #35484604
Ora-guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
Есть некий блок данных, основанный на view. Пользователь должен после поиска проставить у некоторых записей галочки, и по кнопке с выбранными записями надо сделать в базе некие действия. Никаких изменений в данные он не вносит. Для совершения необходимых действий в базе я хочу получить из блока массив id-шников тех строк, у которых стоят галочки. Как это сделать правильно и красиво?
...
Рейтинг: 0 / 0
13.08.2008, 10:58
    #35484650
Apeldop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
Код: 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
13.08.2008, 10:59
    #35484663
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
В чем проблема:
1. нон датабайсе Check-box
2. по кнопке:
пробегаем все записи в блоке (см. пример в help'е)
смотрим нажат ли check-box
если да - заносим(добавляем) Id'шник в массив
если конец блока - выход

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

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

В моем случае (OeBS) - данные на форме сортировались в порядке убывания дат. Т.е. человек в 90% находил нужные данные в 25 строках. В общем, это было не ошибка, а правильное поведение (нашел нужные записи, пометил, запустил обработку дальше).
...
Рейтинг: 0 / 0
13.08.2008, 13:12
    #35485088
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
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
13.08.2008, 13:58
    #35485266
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
GKS_Samara
table_from_block


И зачем?
...
Рейтинг: 0 / 0
14.08.2008, 11:22
    #35486886
ora-guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
Прикольно. сейчас у меня следующий код в форме (создаю массив для последующей обработки):
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
14.08.2008, 11:38
    #35486933
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
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
14.08.2008, 11:42
    #35486947
FRM-42100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
ora-guestТак вот, когда заходишь в форму - то галочки все на записях проставлены. Но на самом деле значения в MY_BLOCK.CHECKBOX нет, пока не проставишь/не снимешь галочку рукамиСмотри свойство Check Box Mapping of Other Values.
Кстати, а зачем метаться по блоку, собирая значения, когда все можно делать в триггере WHEN-CHECKBOX-CHANGED: поставили галку - добавил в массив; сняли - удалил?
...
Рейтинг: 0 / 0
14.08.2008, 11:58
    #35487010
Ora-guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
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
14.08.2008, 11:59
    #35487016
ora-guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
FRM-42100 ora-guestТак вот, когда заходишь в форму - то галочки все на записях проставлены. Но на самом деле значения в MY_BLOCK.CHECKBOX нет, пока не проставишь/не снимешь галочку рукамиСмотри свойство Check Box Mapping of Other Values.
Кстати, а зачем метаться по блоку, собирая значения, когда все можно делать в триггере WHEN-CHECKBOX-CHANGED: поставили галку - добавил в массив; сняли - удалил?

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

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

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

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

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


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

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

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.05.2012, 17:35
    #37797534
Irhen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
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
17.05.2012, 12:13
    #37798574
Irhen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
...желательно без custom.pll
...
Рейтинг: 0 / 0
28.05.2012, 11:54
    #37814214
va_kochnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
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
29.05.2012, 14:44
    #37816410
Irhen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос специалистам по FORMS
va_kochnev,
Спасибо за помощь !
Интересное решение.
Все же пришлось повернуться в сторону custom.pll
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Вопрос специалистам по FORMS / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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