Текущата версия на данните в базата данни се е променила след инициирания от потребителя процес на актуализиране

Имам формуляр за основен детайл в моето приложение Oracle APEX. Когато се опитвам да актуализирам данните в този формуляр, получавам грешка по-долу.

Текущата версия на данните в базата данни се е променила след инициирания от потребителя процес на актуализиране. идентификатор на версията на текущия ред = "26D0923D8A5144D6F483C2B9815D07D3" идентификатор на версията на ред на приложението = "1749BCD159359424E1EE00AC1C3E3FCB" (Ред 1)

Изчистих кеша на браузъра и се опитах да актуализирам. Но не проработи.

Как мога да разреша това?


person Bishan    schedule 15.08.2013    source източник
comment
Това може да е трудно - опитайте да обновите страницата (т.е. презаредете от сървъра) и опитайте отново. В противен случай някои съвети тук може да помогнат: forums.oracle.com/message/11029554   -  person Jeffrey Kemp    schedule 16.08.2013
comment
Ключова стойност е декларирана като „скрита“ в раздела „Атрибути на отчета“ на декларацията за регион. Наличието на колона, декларирана като „Скрита“, причинява конфликт с масива apex_application.g_f0x! Този масив се използва по време на фазата на MRU или „актуализация“. Ето защо грешката се появяваше при мен. За тези, които може да са предекларирали първичния си ключ, той може да е бил зададен на „скрит“! Ако не искате да показвате първичния си ключ, задайте стойността на „Показване като текст, записва състояние“, след което задайте Показване на колона на „Не“.   -  person Jeffrey Kemp    schedule 16.08.2013
comment
@JeffreyKemp Благодаря за информацията. ще проверя това   -  person Bishan    schedule 16.08.2013
comment
@Bishan - Имам табличен формуляр (не Master-Detail като оригиналната бележка), където изпробвах вашето предложение за ключовата стойност като скрита, засягаща процеса на MRU. Това не помогна. Странична бележка: Потребител току-що ми съобщи за тази грешка за първи път на табличен формуляр, който работи в производствения режим в продължение на 2 години без промяна. Отначало имах чувството, че ако филтрирам данните до малък набор от редове (под 1200), работи, но над това се провали? Но не е последователно. Опитах да коригирам максималния брой редове на отчета, но това не помогна.   -  person StewS2    schedule 06.07.2016
comment
Забелязах също, че грешката при запазване се появява, когато променя първите няколко показани записа. Но ако променя 4-ти, 5-ти или повече запис, Save работи! Странно. Така че моето краткосрочно решение в момента е да се уверя, че потребителите филтрират резултатите под 1000 записа. Мисля, че в по-дългосрочен план ще променя това от табличен формуляр на формуляр за отчет, така че формулярът да актуализира само един ред наведнъж.   -  person StewS2    schedule 07.07.2016


Отговори (8)


Срещал съм подобен проблем, при който моят набор от подробни записи има полета за клеймо за време. По подразбиране съветникът за основни детайли създава полетата за клеймо за време като полета за избор на тип на дата. Ако зададете формата на датата за тях, това ще реши проблема.

person sangam    schedule 15.11.2014
comment
Освен това, ако желаете да показвате тези колони за дата/час, показването само като дисплей не запазва състоянието. - person sangam; 16.11.2014

Тази публикация в блога се опитва да адресира този проблем в табличен формуляр (знам, че това не е първоначалният проблем, но реших, че може да е свързано). Казва същото като @sangam по-долу.

Кратка версия: Ако имате актуализирано поле, което е тип данни за клеймо за време, трябва да зададете формат за дата/час.

http://apexbyg.blogspot.com/2015/05/tabular-form-bug.html

Моят табличен формуляр има поле, което е тип данни за клеймо за време, но вече бях задал формат за дата, така че това не ми помогна.

person StewS2    schedule 06.07.2016

Ето още една възможност, която открих в моята кандидатура.

Това би било, ако данните, върху които е изчислена първоначалната контролна сума, са наистина различни от изчислението на контролната сума преди актуализацията, поради дефект в дизайна на вашата заявка!

В моето приложение източникът за едно от актуализираните полета беше COALESCE(name_calced, name_preferred). В изходната таблица името на лицето вече може да бъде заредено в записа от външен процес и ние го запазваме в едно поле - name_calced. Но крайният потребител може да въведе предпочитано име, което искахме да запазим в полето name_preferred. Искахме първоначално да попълним показаното поле на табличен формуляр с възможност за актуализиране с name_calced, ако съществува такъв, или name_preferred, ако потребителят вече е предоставил предпочитано име. След това те биха могли да променят тази стойност и да я запишат обратно в базата данни.

Най-накрая открих, че действието Запазване извежда съобщение за грешка, ако name_calced не е null, но name_preferred е null. Разбрах, че първоначалната контролна сума е изчислена въз основа на name_calced, но контролната сума преди актуализацията е базирана на name_preferred, така че приложението реши, че някой е променил стойността на заден план и показа съобщението за грешка.

Това, което не разбирам е как този проблем не се е появил през последните 3 години, когато приложението работи в производствена среда!

Моето решение е да направя полето източник само на name_preferred, което веднага реши този проблем. Също така мисля, че процесът на задния край също ще бъде променен, за да попълни предварително това поле на таблицата от name_calced, така че потребителят винаги да вижда базовата стойност, ако има такава.

person StewS2    schedule 10.07.2016

Току-що имах този проблем. Сега разбирам, че табличните форми са отхвърлени в момента, но имам приложение, което е разработено предварително и все още ги използва. Възникна този проблем и трябваше да взема един от нашите големи оръжия в Oracle, за да ми помогне. Върша много работа с DB и прилично количество разработка на Apex, но съм по-скоро Java, WebLogic и т.н. и наистина не можах да разбера това.

В моя случай се оказа много просто. Една от колоните в моята таблична форма беше скрито поле, генерирано чрез подзаявка. Тъй като е скрита, тази колона не може да се редактира от потребителя и не трябва да бъде част от актуализацията на MRU. Настроих полето на „Скрита колона (запазва състояния)“ и задаването на типа му на „Скрита колона“ реши проблема. И така, това води до изпълнение на подзаявки по такъв начин, че да се промени контролната сума за цялата заявка, преди да се натисне изпращане (запазване), причинявайки грешката.

За тези, които продължават да отстраняват този проблем, погледнете вашата заявка за всяко поле, което сте посочили, и отбележете кои колони могат да се редактират в табличния формуляр. Всички останали полета трябва да бъдат зададени по начин, който ги кара да не запазват състоянието, така че да не са част от актуализацията.

person Mark Lindros    schedule 13.04.2018

Имах тази грешка, когато имах два процеса на актуализиране, обработващи се при изпращане.

Моето решение беше да добавя условие към двете стъпки на обработка. Бях забравил да направя това, когато направих допълнителен процес за бутон A, но никога не актуализирах бутон B, за да огранича поведението му.

Навигация: Обработка -> Процеси -> [Име на вашия процес] -> Условие от страна на сървъра -> При натискане на бутон = [Име на вашия бутон]

person EdHayes3    schedule 21.03.2019

В моя случай имах колона от вторична таблица, която не беше зададена като Query Only и се актуализираше! Грешката ще възникне при опит за запазване на колона, която не е в актуализираната таблица. Отне ми половин ден, за да го разбера (имената на колоните бяха същите).

person Ralph177    schedule 02.08.2019

Задайте вашата колона за връзка скрита, за да се показва само във формуляра.

Задайте Send On Page Submit на „No“ или деактивирайте колоната за връзка, която е вашият първичен ключ (Rownum/rowid/id и т.н.).

Надявам се, че ще работи за вас.

person Md. Matiar Rahman    schedule 08.04.2021

Забелязах, че тази грешка идва, когато работех с табличен формуляр и деактивирах една от операциите на формуляра, т.е. като зададох условие от страна на сървъра на „Никога“ за бутони за добавяне, прилагане на промени (изпращане)

Когато възстанових първоначалното му състояние, той работи според очакванията.

В случай, че трябва да скриете бутона Добавяне/Актуализиране, използвайте друга опция.

https://compknowledgebase.blogspot.com/2018/12/oracle-apex-error-current-version-of.html

person Pankaj Singh    schedule 10.12.2018