Solved

Forms 6i, Form calling a Form without new form canvas being displayed

Posted on 2003-12-03
9
1,331 Views
Last Modified: 2007-12-19
We have a large Oracle Forms 6i and Reports 6i application with about 2000 Forms and 800 Reports; so we know a little about Oracle programming. We have a situation where one Form calls another and we wish that the change in Form would not cause the screen canvass of the called Form to be displayed. We have one Form that calls another Form (perhaps) 100 times and the problem we are describing causes the screen to 'flicker'; which is irritating. How can we avoid this screen flickering - Please.
0
Comment
Question by:DMay1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 48

Expert Comment

by:schwertner
ID: 9865346
"we wish that the change in Form would not cause the screen canvass of the called Form to be displayed"
What do you mean here? You call a new Forme to display one of the canvases. There is no other reason to call a Form.

OPEN_FORM to Invoke Additional Forms
This built-in procedure opens another form in a modeless fashion; that is, a
user can freely switch between open forms. You can open a form within the
same transaction scope or within a new transaction scope.
Syntax
OPEN_FORM(’form_name’, activate_mode, session_mode, data_mode,
paramlist);
You can set the parameter "activate_mode" Either ACTIVATE (the default) or NO_ACTIVATE
If you set session_mode to SESSION
the changes in the called form will not cause messy messages for the calling form

If you would like not to see the the CALLING form and have no access to it  
call the new form so:
CALL_FORM(’form_name ’, display,
switch_menu, query_mode,
data_mode, paramlist);

If you would like never to return to the calling form
call the new form so:
NEW_FORM(’form_name’, rollback_mode,
query_mode, data_mode,
paramlist);
0
 

Author Comment

by:DMay1
ID: 9866285
Firstly, many thanks for your prompt reply. The reason that we have built a called-Form within which we have many table updates etc, is that we have been building a very large application where there is a large and increasing number of Forms that capture data (from humans and other processes) that need to effect, or expect to effect many of a series of possible table updates. To try and keep the software maintenance and development to a minimum, we built a called-Form that could be called from as many places as required, within which all of the possible table updates could be catalogued. There is no requirement in this called-Form for any screen activity.

We cannot use Open_Form as we do not want another session , which would still cause the flashing and the called Form would not automatically Exit.

We cannot use New_Form because we always want to return to the calling-Form.

So we use Call_Form so as to be able to automatically get back to the calling-Form. However, we are under the impression that there MUST BE at least one variable field in the called Form that is displayed.  We have tried using the HIDE/NO_HIDE values in the 'display' parameter and this makes no difference. Notice with this, it is the calling-Form screen image that is under control, not the called Form screen image.  Is there a way in a Form of not having any variable field that HAS to be shown on a screen image?

Best Regards
DMay
Johannesburg
0
 

Author Comment

by:DMay1
ID: 9866452
Our tame geek, nurd, techy thinks that my explanation above is a bit 'flowery' and has asked me to include his versiion here, which reads:-

We have a FormA that calls FormB. FormB does a number of database table updates using a database record written by FormA, the identity of which is passed from FormA to FormB. There is no user interaction in FormB. Once FormB is completed, it automatically exists back to FormA, where the user has control once more.

The problem we have is that sometimes, FormA needs to call FormB more than 100 times, which causes a 'flickering' of the screen as FormB executes. This looks 'tacky', so my question is, is there a way for FormB to execute behind FormA?

Jim Sinclair
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 48

Expert Comment

by:schwertner
ID: 9866576
I wonder over this passage:

<We have a FormA that calls FormB. FormB does a number of database table updates using a database record written by FormA, the identity of which is passed from FormA to FormB. There is no user interaction in FormB. Once FormB is completed, it automatically exists back to FormA, where the user has control once more.>

It is either wrong explanation or you do not understood the real functionality of FormB.

Forms are intended for interaction with users. If you have no interaction with user you do not need forma. You can invoke a procedure which will do the job explained in your comments.

0
 
LVL 2

Accepted Solution

by:
AlbertYou earned 250 total points
ID: 9872139

Hi DMay1:

I would like to suggest you to move the SQL update statements as well as the business rules from form B into a PL/SQL library and/or a database package, and then the library/package can be reused in all forms/reports.


Albert.
 
0
 
LVL 48

Expert Comment

by:schwertner
ID: 9872766
What in fact was my suggestion.
0
 

Author Comment

by:DMay1
ID: 9873060
We are new to this site. It has occurred to us that by selecyting 'Accepted' against AlbertYou, we may have caused Albert to get the points and not yourself. If this is so, then we apologise after all of the time you spent with us and the issue. Please show this to the Helpdesk and get the situation corrected if it is wrong.

Regards
DMay
Johannesburg
0
 
LVL 2

Expert Comment

by:AlbertYou
ID: 9873068

Hi schwertner,DMay1 :

I agree with you.
You may take the points back from me if you would like to do so.

Albert.
0
 

Author Comment

by:DMay1
ID: 10246039
To  Schvertner (and Albert)

Many thanks, we spent the Xmas an New HYear Holiday;doing two things; on your recommendation. The first step was to take the active parts of FormsB and making a stored procedure out of it; this was very large task as the actual contents of FormB were extensive. Then we ran an AWK program/scrip against our source code library to obtain a list of FormA(s) that used to call FormB. Each of these FormsA was changed to access the stored procedure version of FormB. the old FormB was removed to a safe place and a 'Compile All' (Okay Generate All, but I come from the old school where we had directories and source decks) was run to confirm that we had completed the overall exercise.

The 'screen flickering', which was our original problem has gone and the updating of the online database tables is FAST; even to the extent that  we though the update components had no run!

We have learned another lesson regarding called Forms; Many Thanks.
 
0

Featured Post

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article started out as an Experts-Exchange question, which then grew into a quick tip to go along with an IOUG presentation for the Collaborate confernce and then later grew again into a full blown article with expanded functionality and legacy…
How to Unravel a Tricky Query Introduction If you browse through the Oracle zones or any of the other database-related zones you'll come across some complicated solutions and sometimes you'll just have to wonder how anyone came up with them.  …
This video shows how to copy a database user from one database to another user DBMS_METADATA.  It also shows how to copy a user's permissions and discusses password hash differences between Oracle 10g and 11g.
This video explains at a high level about the four available data types in Oracle and how dates can be manipulated by the user to get data into and out of the database.

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question