Странное взаимодействие таблицы и ФормсБилдера;)

VarV
Дата: 30.09.2004 16:43:22
Значит, имеется простая форма по Таблице1. Делаю вставку/апдейт записи, сохраняюсь. Теперь в сохраненной записи при попытке что-т изменить выскакивает сообщение: "FRM-40654Record has been updated by another user. Re-query to see change".
Такое в общем бывает, когда на таблице собственно висит какой-нить пре-инсерт, они иногда не ладят с формой. Но в данном случае на таблице триггеров нет, в форме я тоже отключил все, кроме изменения размера окна;)
Не подскажете, из-за чего такая хрень может случиться? Кто-то из юзеров держит таблицу? Да вроде как нет...
UK0IAI
Дата: 30.09.2004 16:59:03
не понятно что вы делаете........

обычно так бывает если форма вызвала хранимую процедуру что сама изменяет данные в таблице формы... если вы вставку делали "ручками" (процедурой своей), то вам надо вызвать хранимую процедуру из одной строки
procedure do_commit is
begin
commit;
end;
а затем делать (??? ) execute_query в формы

другой вариант - вы в форме создали новую запись, сохраняетесь, сработал триггер БД и из секвенса изменил поляну, что в форме есть. Все - вы попали.
я тогда всегда ручками , из формы выполняю присвоение сексенса....(ну что бы триггер не сработал)
VarV
Дата: 30.09.2004 17:20:45
В том и крЫсота ситуации, что никаких проц и секуенсов не затрагивается (иначе и вопроса бы не было). Вот счас экспериента ради создал новую форму, выкинул в новую канву все поля таблицы, с ходу скомпилировал и запустил файл (вообще без всяких триггеров, и на таблице тоже ничего нет). Запросил все поля таблицы, изменил одно из них, нажал стандартную кнопку сейва, сейв прошел. Фсё, теперь это поле до перезапроса не изменишь - вылетает вышеуказанная ашипка...:)
DBGroup Consulting
Дата: 01.10.2004 05:23:45
Если установить свойство блока DML Returning Value=Yes ошибка уходит?


Успехов,
DBGroup Consulting
John.D
Дата: 01.10.2004 05:45:28
VarV
выскакивает сообщение: "FRM-40654Record has been updated by another user. Re-query to see change".
Такое в общем бывает, когда ...

при вставке/апдейте число округляется. Например: когда в NUMBER(10,2) всовывают 345,423432, значение округляется до 345,42 пользователем ORACLE.

VarV
пре-инсерт, они иногда не ладят с формой.

Да, когда написаны тупо. Например, проводят изменения значения на тоже самое без какой-либо проверки.
alex_bf
Дата: 01.10.2004 06:29:26
На табло висит триггер, кот. заполняет поля(кто и когда вставил запись),
на форме эти поля тож есть(Display Item)...
DBGroup Consulting
Если установить свойство блока DML Returning Value=Yes ошибка уходит?


Ошибка-то уходит, но значения на форме не меняется.

В чем прикол?

Forms [32 Bit] Version 6.0.8.11.3 (Production)
Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production

--Brgds, @lex
VarV
Дата: 01.10.2004 10:45:44
2 DBGroup Consulting

Нифига не уходит. В общем, эт какой-то глюк с таблицей. Сделал Табл1_темп as select * from Табл1. Переключил форму на Табл1_темп, и форма, что характерно, заработала как часы, без намеков на глюки. Счас буду пытать админа;)
UK0IAI
Дата: 01.10.2004 10:50:46
VarV
2 DBGroup Consulting

Нифига не уходит. В общем, эт какой-то глюк с таблицей. Сделал Табл1_темп as select * from Табл1. Переключил форму на Табл1_темп, и форма, что характерно, заработала как часы, без намеков на глюки. Счас буду пытать админа;)



Точно на Табл1 в БД триггер висел....что менял строки..а в Табл1_темп его нету.
VarV
Дата: 01.10.2004 10:53:31
Блин, ларчик открывался просто. От одного юзера, имеющего админские полномочия (пусть будет юзер Офис) на Табл1 был повешен триггер, который не видел основной юзер (который, между прочим, эту таблицу и создавал;) ). Этот триггер невинно автоматом вставлял дату обновления записи. Млин, млин, млин!
)
UK0IAI
Дата: 01.10.2004 10:53:48
alex_bf
На табло висит триггер, кот. заполняет поля(кто и когда вставил запись),
на форме эти поля тож есть(Display Item)...
[quot DBGroup Consulting]Если установить свойство блока DML Returning Value=Yes ошибка уходит?


Ошибка-то уходит, но значения на форме не меняется.

В чем прикол?

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