I've converted some old Oracle 4.5 Form to 10G Form and I'm currently testing them one by one. I noticed that for those forms that were using the 'synchronize' commands to refresh text_item are no longer working. Not only their items were not refreshed but the forms have also thrown out the 'ORA-92102:Network Error'. Here is a snapshot of the code in 10G Form:
--- BEGIN ---
CURSOR FIND_CLIENTS IS
SELECT C.CLT_NUMBER, C.CLT_NAME CLT_NAME
FROM ALL_CLIENTS C
ORDER BY C.CLT_NAME;
FOR CLT IN FIND_CLIENTS LOOP
:block.item := 'Processing client: ' || CLT.CLT_NAME;
--- END ---
I've discovered that every execution of the 'synchronize' command will perform a network trip between the web server and the web form client and Oracle strongely discourages the use of it but it does not suggest any alternatives. Is there a solution to it? Thank you for your time and assistance.
Synchronize() is used to "refresh" the client screen (ensure it displays the most recent information). As we run in Web mode, the information about how to draw onto the client screen is get from the Application Server, so that the roundtrip needed.
It is still available in Web version, but needs this additional roundtrip each time it is invocated. So you have to choose between having a screen very close to the truth at any time, but time consumming, or choosing the faster way but displaying the final state only at the end of the process.
I've problem straight away running the sample form with the ORA-92102 error. I've used the same code as I've posted at the beginning of this post for the sample form and when it ran, it just failed with ORA-92102 without refreshing my text item for even once.