Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Использование формы в качестве LOV (Oracle Developer)  [new]
Oval
Member

Откуда:
Сообщений: 8
Добрый день!
Разрабатываю приложение в Form Builder 6.0 (из Oracle Developer)
В одной из форм решил использовать для выбора значений не стандартные элементы LOV, а формы с аналогичной функциональностью. Проблема заключается в том, что при вызове списка значений в уже измененной строке эта форма-LOV отказывается запускаться. Ругается: FRM-40702. Невозможно вызвать форму с изменениями для фиксации. При добавлении - все ОК.
Подскажите, как обойти проблему?
Спасибо!
14 авг 06, 11:23    [2998565]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Sqaimes
Member

Откуда: Украина, Мариуполь
Сообщений: 443
если я правильно понял, перед запуском ттвоего "LOV" Forms требует фиксации изменеий в форме?
Ну так делай их перед запуском твоего "LOV"...
14 авг 06, 11:58    [2998853]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
Ага. Вот редактирует он свою строку. Теперь понадобилось ему в одно из полей выбрать значение из формы... Предлагаешь зафиксировать эти частичные изменения? А потом что? Опять начать редактировать?
14 авг 06, 12:04    [2998909]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Oval
Member

Откуда:
Сообщений: 8
С commit_form вариант понятен.
Но с точки зрения пользователя нехорошо получается. Он завершения транзакции не запрашивал, а все измененные данные сохранились сами
:(
14 авг 06, 12:07    [2998934]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
anvano
Member

Откуда: Москва
Сообщений: 986
А какой функцией вы вызываете свою вложенную форму?

У меня почему-то таких проблем не возникает (я использую CALL_FORM) другая форма нормально вызывается, нормально возвращается в основную форму без всяких промежуточных коммитов.
14 авг 06, 12:12    [2998973]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Oval
С commit_form вариант понятен.
Но с точки зрения пользователя нехорошо получается. Он завершения транзакции не запрашивал, а все измененные данные сохранились сами
:(


Не обязательно COMMIT. Можно просто Post, при этом данные записываются, но не фиксируются и далее вполне возможен откат
14 авг 06, 12:20    [2999032]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
В хелпе сказано:
"You attempted to call a form with changes in the current form with savepoint mode off."
В Forms 4.5 у формы было свойство Savepoint Mode, а вот в Forms6 в хелпе оно описано, а в самом Formse в палитре свойств я его что-то не вижу :(
14 авг 06, 12:35    [2999141]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Mr_Frost
В хелпе сказано:
"You attempted to call a form with changes in the current form with savepoint mode off."
В Forms 4.5 у формы было свойство Savepoint Mode, а вот в Forms6 в хелпе оно описано, а в самом Formse в палитре свойств я его что-то не вижу :(


Дык в help написано Set Form Builder, programmatically (через SET_FORM_PROPERTY) и что default = yes
14 авг 06, 12:46    [2999239]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
anvano
Member

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

About Savepoints and Rollbacks

When all of the forms in an application have the Savepoint Mode property On (the default), Oracle Forms issues a savepoint each time a form is loaded into memory at form startup, or via NEW_FORM or CALL_FORM (no savepoint is issued when a form is invoked with OPEN_FORM). When an application invokes multiple forms, these savepoints separate database transactions into segments that correspond to specific form modules.


Скорее всего автор использует OPEN_FORM для вызова вложенной формы.
Попробуйте использовать CALL_FORM (как я уже писал выше) тогда Savepoint устанавливается автоматически и данная ошибка возникать не будет.
14 авг 06, 12:46    [2999240]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Oval
Member

Откуда:
Сообщений: 8
Вызываю именно через CALL_FORM:
call_form('DCLOVSTO',NO_HIDE,NO_REPLACE,QUERY_ONLY,pl_id);
Проверил программно свойство savepoint mode, оно установлено в OFF, но все равно ругается
14 авг 06, 12:51    [2999266]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
tru55

Дык в help написано Set Form Builder, programmatically (через SET_FORM_PROPERTY) и что default = yes

читайте внимательней - Set Form Builder
В палитре свойств БЫЛ такой property "Savepoint Mode".
14 авг 06, 12:51    [2999275]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
anvano
Member

Откуда: Москва
Сообщений: 986
Oval
Вызываю именно через CALL_FORM:
call_form('DCLOVSTO',NO_HIDE,NO_REPLACE,QUERY_ONLY,pl_id);
Проверил программно свойство savepoint mode, оно установлено в OFF, но все равно ругается


Так должно быть ON :) судя по документации. При OFF savepoint не устанавливается, именно на это и ругается.
14 авг 06, 12:53    [2999287]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Sqaimes
Member

Откуда: Украина, Мариуполь
Сообщений: 443
avano
У меня почему-то таких проблем не возникает (я использую CALL_FORM)

действительно как ты форму вызываешь, при call_form такого нет... ни каких фиксаций не требует..
14 авг 06, 12:54    [2999292]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Oval
Member

Откуда:
Сообщений: 8
В вызывающую форму для проверки вставил конструкцию:
Msg_Alert(get_form_property(:System.Current_Form, SAVEPOINT_MODE),'W',false);

Выводит сообщение: PROPERTY_OFF
14 авг 06, 12:55    [2999303]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Mr_Frost
tru55

Дык в help написано Set Form Builder, programmatically (через SET_FORM_PROPERTY) и что default = yes

читайте внимательней - Set Form Builder
В палитре свойств БЫЛ такой property "Savepoint Mode".


С 4.5 не работал, м.б. и было. Но в 6 нет (как и некоторых других, перечисленных в help в Module Properties)
14 авг 06, 12:56    [2999307]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
Oval
В вызывающую форму для проверки вставил конструкцию:
Msg_Alert(get_form_property(:System.Current_Form, SAVEPOINT_MODE),'W',false);
Выводит сообщение: PROPERTY_OFF

Предлагаю перед вызовом CALL_FORM написать
Set_form_property(:System.Current_Form, SAVEPOINT_MODE, Property_True);
все заработает :-)
14 авг 06, 13:07    [2999397]     Ответить | Цитировать Сообщить модератору
 Re: Использование формы в качестве LOV (Oracle Developer)  [new]
Oval
Member

Откуда:
Сообщений: 8
[quot Mr_FrostSet_form_property(:System.Current_Form, SAVEPOINT_MODE, Property_True);
все заработает :-)[/quot]
Заработало :)
Всем спасибо!!!
14 авг 06, 13:16    [2999449]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить