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

Откуда: Москва
Сообщений: 88
Здравствуйте! Не могу побороть такую проблелу: в блоке есть поля из таблицы, и поля, которые заполняются из post-query триггера из др. таблицы. А проблема в том, что при закрытии формы вываливается диалог сохранения изменений хотя никто этих изменений не делал. Если триггер выключить и не трогать соответствующие итемы, то этого сообщения нет. Как убедить forms'ы не понимать изменения в этих итемах как изменения данных. В свойствах поставил "database item No" не помогает. Заранее всем большое спасибо.
13 апр 06, 12:22    [2557544]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Не может быть. Если форма спрашивает, значит где-то что-то изменяется или переопределяется. В чем вопрос? Не нужен диалог или не нужно само сохранение? Что делается в триггерах Post-query?
13 апр 06, 12:40    [2557712]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Кстати, что показывает :SYSTEM.FORM_STATUS при выходе из формы?
13 апр 06, 12:42    [2557732]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Кудрявцев Леонид
Guest
Bilbo13
Здравствуйте! Не могу побороть такую проблелу: в блоке есть поля из таблицы, и поля, которые заполняются из post-query триггера из др. таблицы.

А поля в которые ты пытаешся писать в POST-QUERY случайно не из БД (Database Item = Yes). Тогда все правильно, POST-QUERY модифицирует данные в таблице, о чем Forms при выходе и предупреждает.

Tolmachov Dmitiry
Не может быть...

Было нечто подобное. Но, что конкретно пытались делать, хоть убей не помню :=), как-то _очень сильно_ изгалялись над блоком.
13 апр 06, 13:19    [2558040]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
Блин, :SYSTEM.FORM_STATUS говорит- changet, post-query содержит код примерно следующий:
select field
into item
from ...
where ...;
где item- "database item No". Причем если в самом начале триггера поставить return, то такого дурацкого эффекта нет. Сейчас попробую пробежаться по блоку посмотреть какие записи не query.
13 апр 06, 14:20    [2558509]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
Tolmachov Dmitiry
Не может быть. Если форма спрашивает, значит где-то что-то изменяется или переопределяется. В чем вопрос? Не нужен диалог или не нужно само сохранение? Что делается в триггерах Post-query?

Может-может. Формсы большие затейники...

Bilbo13

В свойствах поставил "database item No" не помогает

Попробуй в пост-квери в самом конце принудительно ставить статус строки в query. Может помочь.
13 апр 06, 14:23    [2558530]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Двоюшник
Member

Откуда: Киев
Сообщений: 1135
В тригере post-query
Set_Record_Property( :System.Cursor_Record, 'BLOCK', STATUS, QUERY_STATUS);
---
Ну ты заходи ежели чё...
13 апр 06, 14:25    [2558548]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
gaden0k
Member

Откуда: Не местный
Сообщений: 41
Если Forms просит сохранить то ты в любом случае редактировал/добавлял/удалял items'ы базы.
13 апр 06, 14:26    [2558562]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
pamir
Может-может. Формсы большие затейники...

Вернее, так. Может быть небазовое поле, к которому привязан LOV с Validate from list=yes. При вводе в небазовое поле значения происходит валидация и в базовое кладется ключик... На первый взгляд разработчик ничего базового не трогает. Это происходит косвенно.
В принципе Tolmachov Dmitiry прав
Tolmachov Dmitiry
где-то что-то изменяется или переопределяется
13 апр 06, 14:27    [2558567]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
Этот item вообще display item, никакой валидации не происходит просто выгребаются данные.
13 апр 06, 14:39    [2558682]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
Bilbo13
Этот item вообще display item, никакой валидации не происходит просто выгребаются данные.

Он там один? Все остальные базовые?
13 апр 06, 14:41    [2558693]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
По идее их там несколько, но в целях отладки я заюзал пока один, остальные не трогаю. Еще фигня- поставил в конце post-query
Set_Record_Property( :System.Cursor_Record, 'BLOCK', STATUS, QUERY_STATUS); одна фигня- опять домогается с вопросом сохранить изменения.
13 апр 06, 14:49    [2558761]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
Bilbo13
По идее их там несколько, но в целях отладки я заюзал пока один, остальные не трогаю. Еще фигня- поставил в конце post-query
Set_Record_Property( :System.Cursor_Record, 'BLOCK', STATUS, QUERY_STATUS); одна фигня- опять домогается с вопросом сохранить изменения.

Надеюсь, что 'BLOCK' это реальное имя вашего блока?
13 апр 06, 14:55    [2558811]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
Конечно заменил реальным именем блока.;-) Удалось еще выяснить, что все record'ы не query...
13 апр 06, 14:58    [2558833]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
Bilbo13
Конечно заменил реальным именем блока.;-) Удалось еще выяснить, что все record'ы не query...

Осталось выяснить - почему. Какие еще триггеры на блоке есть? Что они делают?
13 апр 06, 15:00    [2558851]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Если форма небольшая и нет никаких Restricted, то выложи, а мы посмотрим
13 апр 06, 15:09    [2558934]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
Форма довольно большая... Кроме того, к ней еще надо библиотек кучу привинчивать, короче довольно геморройно. А триггеры- on-populate-details, on-check-delete-master, pre/post-insert, post-query. Триггеры, относящиеся к синхронизации подчиненного блока стандартные, в pre/post-insert заводятся первичный ключь и записываются данные в др. таблицу с соответствующим внешним ключом, а принципиальный текст post-query я приводил выше. Но весь цимус как мне кажется в этих итемах т.к. если истребить post-query, то все ok.
13 апр 06, 15:23    [2559038]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
pamir
Member [скрыт]

Откуда:
Сообщений: 27433
Bilbo13
Форма довольно большая... Кроме того, к ней еще надо библиотек кучу привинчивать, короче довольно геморройно. А триггеры- on-populate-details, on-check-delete-master, pre/post-insert, post-query. Триггеры, относящиеся к синхронизации подчиненного блока стандартные, в pre/post-insert заводятся первичный ключь и записываются данные в др. таблицу с соответствующим внешним ключом, а принципиальный текст post-query я приводил выше. Но весь цимус как мне кажется в этих итемах т.к. если истребить post-query, то все ok.

А when-validate-item на уровне айтема, блока, формы не делает ничего?
Мдя, на уровне блока его нет, судя по описанию. Но мож на элементе или на уровне формы есть?
13 апр 06, 15:29    [2559093]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Может прогнать форму в Debug Mode? Хотя для большой формы довольно-таки гемморойное занятие, но может всплыть какой-нибудь "забытый" триггер.
13 апр 06, 15:34    [2559139]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
Триггере post-query после заполнения полей используйте
set_item_property (item_name, item_is_valid, property_true);
для каждого измененного поля
На том проблемы и закончатся :-)
13 апр 06, 16:02    [2559390]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
Довольно долго ковырялся, в итоге глюк удалось побороть следующим способом:
1. сделал блок не на таблице, а на запросе (Query data source type: from clause query), связав проблемные итемы внешним соединением с основной таблицей;
2. соответствующие проблемные итемы сделал базовыми;
3. в свойствах итемов поставил Query only Yes.
Такая конструкция работает как надо без лишних вопросов.
20 апр 06, 16:59    [2585630]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
А я бы просто выполнял commit перед закрытием :)
20 апр 06, 17:50    [2585972]     Ответить | Цитировать Сообщить модератору
 Re: forms сообщение при закрытии  [new]
Bilbo13
Member

Откуда: Москва
Сообщений: 88
Безусловный commit как-то боязно выполнять... Мало ли какие случайные изменения вкрались. Одно ясно- если изменений произведено не было, то и глупых вопросов задавать не надо, а если все-таки что-то было изменено пользователем, то лучше бы его спросить перед выходом из формы.
20 апр 06, 18:46    [2586235]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить