Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Forms Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
Открыто несколько форм(Open_Form).
1. Существует ли возможность определить, какая из форм активная?
2. Сущесвует ли возможность навигации между открытыми формами?
За ранее благодарю.
7 авг 03, 12:22    [291723]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Сущесвует

1. Активна - текущая форма
2. go_form
7 авг 03, 12:24    [291728]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
Muller
Активная - текущая, это я знаю. Но это не позволяет решить проблему. Мне надо синхронизировать работу двух форм используя таймер.
7 авг 03, 12:32    [291743]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Пытались решать такую задачу...
До конца - не довели - текучка заела.
Так в чём проблема-то ???
Как говорится, правильно заданный ворос - это уже наполовину ответ.
7 авг 03, 12:41    [291764]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
Две формы, во второй я устанавливаю таймер. В случае, если вторая форма не активна, мне надо ее перерисовать(WHEN-TIMER-EXPIRED). Что-то типа master-detail. Кривое решение, но...
7 авг 03, 12:48    [291780]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
А нафига ее перерисовывать?

Станет активной - перерисуешь.
7 авг 03, 12:56    [291794]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
"Кривое!"
Можно подумать, у нас есть, из чего выбирать!
Щаз вспоминать буду...

По моему - так.
В случае наступления некого события ( типа за три минуты - ни одного клика )
Выставляется в глобал-переменную, скажем, :global.current_form, имя текущей формы.
Потом go_form во вторую - там делаем, что надо и
go_form( :global.current_form )

Что-то вроде этого...
Вся фишка в запуске/гашении таймеров.
Запаситесь валерьянкой.
7 авг 03, 12:59    [291802]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
SAA_
Member

Откуда: Латвия, Рига
Сообщений: 283
Кажется, все-таки не :GLOBAL.CURRENT_FORM, a :SYSTEM.CURRENT_FORM.
7 авг 03, 13:14    [291835]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Еще не зарегистрировался
Guest
Кривые только руки бывают...

Сначала придумают гемор на з#%^цу, а потом "есть ли у нас выбор, есть ли у нас выбор..."

А слабо два окна в одной форме сделать и забыть про таймер и прочие проблемы синхронизации...
7 авг 03, 13:21    [291850]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Я имел в виду, что в глобальную переменную я пишу идентификатор текущей в данный момент формы, чтобы потом вернуться не куда-нибудь, а откуда пришел.
то есть :global.current_form := :system.current_form;
типа этого
7 авг 03, 13:25    [291861]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
2 Ещё не зарегестрировавшемуся.

Так может ваще весь проект писать в одной форме, уважаемый?
7 авг 03, 13:27    [291866]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
Я вообще не понимаю, зачем перерисовывать неактивную форму?

Процессорного времени не жалко? А если там запрос долго выполняется?
Пользователь ждать будет?

И еще, чтобы перерисовать, надо переключиться, т.е. пользователь будет скажем каждые три минут видеть мырг на экране (переключение в форму), потом ждать пока форма перерисуется (данные перезапросятся), потом мырг обратно (переключение в старую форму).

Если форма неактивна, значит пользователю не нужны ее данные, станут нужны - переключится, вот тогда и обновляй.

ЗЫ: автору топика, опиши задачу, может покрасивее решение найдем?
7 авг 03, 13:36    [291888]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Pups The RAPtor

Можно я?
Вы рейтеровское окошко видели?
Дилер пьёт кофе, а котировки у него на экране прыгают и скачут...

Идея.
На сервере случилось Событие.
( добавился платёж, сделка, изменилась котировка..., админ сказал что через пять минут случился абзац... )
Клиент должен по этому событию перечитать НЕОБХОДИМЫЕ формы.
Их может быть несколько.
В зависимости от того, что случилось, перечитывать нужно РАЗНЫЕ формы
и культурненько вернуться в текущую.

Есть идеи?
7 авг 03, 13:45    [291900]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
На самом деле, мой вопрос надо формулировать так:
Как неактивной форме передать сообщение?
Как заставить неактивную форму выполнить команду?
( хоть триггерок какой-нть)
7 авг 03, 14:01    [291933]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
Идея такая: не писать подобные программы на Developer'е.

Во первых (тут я конечно не уверен на все 100%, я сейчас это проверю) таймеры действуют в текущей форме, в неактивной таймеры не действуют.

На сервере случилось Событие.
( добавился платёж, сделка, изменилась котировка..., админ сказал что через пять минут случился абзац... )
Клиент должен по этому событию перечитать НЕОБХОДИМЫЕ формы.
Их может быть несколько.
В зависимости от того, что случилось, перечитывать нужно РАЗНЫЕ формы
и культурненько вернуться в текущую.


Получить событие от сервера - это сама по себе веселая достаточно проблема, а уж при написании приложения на Developer'е - и вовсе цирк.
Так что либо не делать этого, либо переодически обновлять все формы (о, какая будет нагрузка на сеть и сервер!).

ЗЫ: Первое я сейчас проверю и вернусь :).
7 авг 03, 14:12    [291958]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Первая идея мне нравится.
Но предлагаю её не обсуждать, ибо корпоративный стандарт не оставляет места для маневра.

Как получить сообщение от сервера - задача решаемая, так как
таймеры работают в неактивной форме.
7 авг 03, 14:19    [291967]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
ну да... инициировать событие со стороны сервера странно ), то есть это дать доступ к станции чему-л. со стороны....

вот по таймеру обновлять данные во всех формах по инициативе клиента -- больш-менш понятно...
--------
а через WEB таймеры вообще работать не будут! (вроде как...)
7 авг 03, 14:28    [291984]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
ОК, верю. Даже проверять не буду. Тем более что у меня 4.5, может в 6i поменяли чего с таймерами :).

Ну так в чем вопрос? Пусть по истечениии таймера выполняется go_form в ту где сработал таймер и запрос к серверу. Таймер повторяющийся. Единственное, на экране все моргать будет периодически, так что полноэкранные формы лучше не использовать :). Да и пользователь будет недоволен что прервался его ввод в какое-нибудь поле :).

Так что ИМХО лучше не использовать такое с формами для редактирования.

Кстати, может это сделать через HTML? Намного практичнее, не требует программирования на всяких там Дельфях и т.п. Обновление сделать намного проще.

ЗЫ: Если не секрет, ты где работаешь?
7 авг 03, 14:30    [291985]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Если Вы мне укажете другой канал связи между клиентами...

Зачем же ВО ВСЕХ?
Надо там, ГДЕ НАДО!

Справочник клиентов, даже, если он открыт, не надо перечитывать, если изменился остаток на счете!
7 авг 03, 14:33    [291997]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
2 Pups The RAPtor

1. Да ясен пень!
Всё дело в тонкостях - чтоб не моргало, чтоб не мешало, чтоб не глючило...
ТратьТарарать! Какие-то чертовы таймеры...
Хочется что-то типа
send_message( 'MeinLiebeForm', 'REFRESH' );

2. Через HTML - это как?

3. www.inversion.ru
7 авг 03, 14:45    [292034]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
muller
Спасибо, кое-что получилось.Вот только с таймером не все гладко, после выполнения команды Go_Form, он сбрасывается.

Неактивной форме сообщение можно передать через обычный insert, select.
7 авг 03, 14:49    [292046]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
2 acrobat
"Неактивной форме сообщение можно передать через обычный insert, select."

Поясните пожалуйста
( вдруг - чудо !)
7 авг 03, 14:54    [292068]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
1. Так не получится. Моргать - будет, мешать - может, глючить - практически наверняка. Кстати, я заметил что рантайм с запущенными одновременно несколькими формами падает намного чаще чем с одной-двумя. Я для себя поставил максимум - не более трех открытых форм одновременно :).

2. Ну это элементарно. Если сервер восьмерка - использовать поставляемый с ней веб-сервер и mod_plsql. Гененрируешь страничку с данными, в заголовках странички ставишь через сколько секунд она обновляется. Пользователь запускает браузер, заходит на эту страничку и все. Котировки ( или что там еще ) обновляются, формы работают отдельно, никто друг другу не мешает. Если семерка - то отдельный изврат, но тоже можно. Хочешь подробностей - пиши в мыло pups-the-raptor [ doggy } yandex.ru.

3. Знакомое место. Примерно год назад чуть не устроился к вам работать.
7 авг 03, 14:56    [292074]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
2 muller
Insertom передавать за ранее определенные команды, которые конечно необходимо обработать в WHEN-TIMER-EXPIRED.
Встречный вопрос - можно ли перейти в другрую форму и не сбить timer, у меня не получилось. После Go_To, таймер отключается...
7 авг 03, 15:06    [292114]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
Естественно собьется. Таймер работает только если пользователь неактивен. А ты делаешь go_form, это типа переход в форму => пользователь активизировался :) И Developer'у плевать что это не пользователь, а сама форма перешла.

Я вижу только один выход. Таймер должен работать в неактивной форме. Хотя как потом переходить обратно, хз ...
7 авг 03, 15:10    [292130]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
2 Pups The RAPtor
Если навигация осуществляется мышью, то таймер не сбивается.
7 авг 03, 15:16    [292144]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
ДА? Странно. У меня сбивается ...

Надо проверить ..
7 авг 03, 15:19    [292149]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
2 acrobat
То есть, куда-то в табличку писать
'go_block('BLOCK1'); execute_query;'
и дальше исполнять строчку
в триггере
"WHEN-TIMER-EXPIRED"

Я Вас правильно понял?
7 авг 03, 15:22    [292161]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
Кстати, а действительно, зачем всетаки в разных формах это делать?

Может форма - одна, но в ней много окошек, как тут кто-то уже предлагал.

Для просмотра котировок - самое оно.

ЗЫ: Конечно всеь проект в одной форме писать - это не есть хорошо, но подобную мониторинговую форму вполне можно сделать.
7 авг 03, 15:27    [292179]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
SAA_
Member

Откуда: Латвия, Рига
Сообщений: 283
Создается ощущение, что все немножко на грани бреда.

Никогда не использовал глобальные переменные.

Если произошло событие... то не понимаю зачем нужен таймер?

Если тебе надо узнать, из какой формы произошел вызов, то почему бы не воспользоваться формовским хелпом?
v_pform := get_application_property(calling_form);
7 авг 03, 15:31    [292188]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Тут наш человек говорит, сто успехов вроде как добился.
Путём применения виндусовых библиотек.
Пока подробностей не знаю ( я в курсе задачи, но пишу не сам - типа курирую ).
Так что тему пока закрываю.
7 авг 03, 15:32    [292190]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
1. Навигация по формам открытым через call_form - невозможна.

2. Что вернет get_application_property(calling_form); если форма открыта через open_form или new_form?

3. Таймеры будут нужны и при использовании глобальных переменных.

ЗЫ: Закрыта, так закрыта ....
7 авг 03, 15:36    [292198]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
muller
Member

Откуда: Москва
Сообщений: 925
Не могу молчать
8))
2SAA

Уверяю Вас, Вы просто не въехали!

С уважением
muller
8))

PS
1. Событие случилось в чужой сессии ( общий случай - в чужой сессии случился коммит )
2. Формы открывались не call_form, a open-form и их более двух ( открытых )
3. Как кроме использования глобальных переменных вернуть данные из вызываемой формы в вызывающую - через объекты на сервере?
7 авг 03, 15:41    [292207]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
SAA_
Member

Откуда: Латвия, Рига
Сообщений: 283
To Pups The RAPtor:

Насчет GET_APPLICATION_PROPERTY - достаточно убедительно. Но тогда возникает вопрос, а в чем приемущество OPEN_FORM по сравнению c СALL_FORM?

To acrobat:
А чем не нравится использование DBMS_ALERT, вместо того, чтобы нагружать клиентскую часть таймером. Произошло некоторое событие - послали алерт. Нужные клиентские апликухи отмониторили и сделали необходимые действия. Для этой задачи врядли потребуется навигация по окнам.
7 авг 03, 16:08    [292279]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
2 muller:
Все правильно, можно например передать имя блока и имя триггера, а потом выполнить его Execute_Trigger. Здесь можно проявить фантазию.
Всем:
Вопрос остался открытым, как выполнить переход и не сбить таймер?
7 авг 03, 16:13    [292290]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
2 SAA
Может быть и понравится, поэтому и обсуждаю. Можно поподробней.
7 авг 03, 16:18    [292302]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
Pups The RAPtor
Member

Откуда: Москва
Сообщений: 212
А кто сказал что у какой-то команды есть преимущества ;))? Это принципиально разные подходы к навигации по формам.
open - для многофромового приложения, где РАЗРЕШЕНА навигация по формам в процессе работы.
call - для многофромового приложения, где НЕ РАЗРЕШЕНА навигация по формам в процессе работы.
Я наоборот стараюсь уйти от open.

DBMS_ALERT, хмм, там судя по описанию пакета
"
-- A waiting application will be blocked in the database and cannot do
-- any other work.
"
я не думаю что это покатит.
7 авг 03, 16:24    [292327]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
SAA_
Member

Откуда: Латвия, Рига
Сообщений: 283
To Pups The RAPtor:
Точно, написано :( Приложение блокируется на время тайм-аута в waitone/waitany. DBMS_ALERT довольно простой пакет, транзакционный. Есть вариант использовать DBMS_PIPE. Но он не транзакционный и посложнее. С алертом работал, с пайпом нет.

Насчет OPEN_FORM/CALL FORM. Я использую CALL FORM и проблем не наблюдаю.

To acrobat:
В схеме SYS пакеты DBMS_ALERT и DBMS_PIPE. В них же содержится и описание + есть же документация. Таймер наверняка останется в форме ;) (некоторое лукавство, допущенное ранее). Но менее тяжеловесно с определенным интервалом проверять наличие сообщения и если пришел сигнал об обновлении, то обновить данные в форме, чем каждый раз по таймеру обновлять данные.

Производитель нашего програмного обеспечения использует DBMS_PIPE, для того чтобы демонстрировать работоспособность JOBs в системе. Получается все очень наглядно и прям-таки реальное время :)

А почему нельзя использовать CALL_FORM в вашем случае и пользоваться навигацией CALL_FORM/GET_APPLICATION_PROPERTY(CALLING_FORM)? Где подводный камень?
7 авг 03, 19:27    [292619]     Ответить | Цитировать Сообщить модератору
 Re: Oracle Forms, навигация между формами  [new]
acrobat
Member

Откуда:
Сообщений: 283
2 SAA_
Если таймер прийдется использовать, то смысла в dbms_pipe я не вижу. Ведь данные вовсе не обязательно обновлять по таймеру. Лично я в таймере сначало делаю проверку на событие, а по событию уже обновляю данные. Call_Form, в моем случае, неудобно использовать из-за ограничения навигации между формами.

2 muller
Если будет возможность, напиши о вашем варианте решении этой проблемы.
acrobat@newmail.ru

Всем спасибо.
8 авг 03, 10:22    [292975]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Oracle Forms Ответить