Гость
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / получить id созданной записи / 9 сообщений из 9, страница 1 из 1
11.06.2014, 16:00
    #38667817
чучундра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
Привет всем!

Интересует такой вопрос:
- Forms 10
- блок на основе таблицы (с полями id, name , к примеру)
- на канве поле name и кнопка Сохранить
- в базе, на таблице висит триггер, Before Insert/Update, где поле id автоматом заполняется из сиквенса.

Вопрос. Как, при нажатии кнопки Сохранить, или где в триггере на форме, например on-commit,
проверить и выдать сообщение, что мол, сохранение прошло успешно, и самое главное, id,
создавшейся записи узнать/получить?

Спасибо.
...
Рейтинг: 0 / 0
16.06.2014, 07:17
    #38669977
OldBoyOdeSu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
чучундра,

проверить и выдать сообщение, что мол, сохранение прошло успешно - в триггере POST-DATABASE-COMMIT, выдавай сообщение;

как вариант: если есть возможность то подправить триггер, чтоб если id is null тогда он присваивал значение, иначе оставлял то, которое пришло из формосв, в формсах в триггере PRE-INSERT присвоить новое значение из той же секвенции id := seq.nextval
т.о. ты будешь знать id до вставки.
...
Рейтинг: 0 / 0
16.06.2014, 10:34
    #38670072
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
чучундра,

Смотри свойство блока "DML Returning Value" со значением "Yes"
...
Рейтинг: 0 / 0
16.06.2014, 12:30
    #38670237
чучундра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
OldBoyOdeSuпроверить и выдать сообщение, что мол, сохранение прошло успешно - в триггере POST-DATABASE-COMMIT, выдавай сообщение;
как вариант: если есть возможность то подправить триггер, чтоб если id is null тогда он присваивал значение, иначе оставлял то, которое пришло из формосв, в формсах в триггере PRE-INSERT присвоить новое значение из той же секвенции id := seq.nextval
т.о. ты будешь знать id до вставки.

с этим всё ясно, интересует вариант без вставки id в формах..

OldBoyOdeSuСмотри свойство блока "DML Returning Value" со значением "Yes"

ок, поставил Yes, откуда/где брать возвращаемые значения?
...
Рейтинг: 0 / 0
16.06.2014, 12:39
    #38670254
чучундра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
.. ещё в справке по "DML Returning .." сказано: "Forms uses the DML Returning clause only with an Oracle8 database server. This property is ignored when using a non-Oracle8 server."
Как быть с базой 11 версии?
...
Рейтинг: 0 / 0
16.06.2014, 13:36
    #38670355
OldBoyOdeSu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
чучундра,

DML Returning clause only with an Oracle8 or later database

У нас все блоки на процедурах, но предположу, что прям в id поле и возвратится
Then this property is set to Yes, Forms will automatically update the client-side version of the data , and the user will not need to re-query the database to obtain the changed values.
...
Рейтинг: 0 / 0
16.06.2014, 21:23
    #38670971
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
чучундраок, поставил Yes, откуда/где брать возвращаемые значения?
Ну так в поле id и бери.

Установка этого свойства заставляет Формс генерировать следующую команду INSERT (если нет триггера ON-INSERT):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
INSERT INTO tab 
   (id, name) 
VALUES 
   (:BLOCK.id, :BLOCK.name)
RETURNING 
   id, name 
INTO 
   :BLOCK.id, :BLOCK.name;



Фраза RETURNING появилась в СУБД Oracle в 8-й версии. Отсюда и ограничение.
...
Рейтинг: 0 / 0
17.06.2014, 09:07
    #38671251
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
Павел ЛузановФраза RETURNING появилась в СУБД Oracle в 8-й версии. Отсюда и ограничение.
Точнее, в 8i (8.1). В 8.0 еще не было
...
Рейтинг: 0 / 0
17.06.2014, 09:54
    #38671316
чучундра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить id созданной записи
Спасибо всем за участие.
Оставил вариант как было (id присваевается в формах)..
А вот по поводу проверки на "успешное сохранение", тут как я понял несколько решений, какие Вы используете, - я сделал на триггере формы ON-MESSAGE, если MESSAGE_CODE=40400, то сообщение об "успехе". Есть смотрю Form_Success, но это как я понял проверка на заполнение данных форм?
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / получить id созданной записи / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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