No commit-message (FRM-40400) == Bug in Headstart

Hello,
On committing on or more business rules are violated the 'message-window' appear.
After correcting the errors and committing the changes i'm not getting the usual
'commit-message' (FRM-40400). This only happens after on or more business rules are violated.
This is caused by a bug in the procedure 'QMS$FORMS_ERRORS.PUSH'. Below the solution i have implemented (the complete procedure is displayed). I'm using version 6.5.4.0 of the library 'qmslib65.pll.
PROCEDURE Push
( p_msg IN VARCHAR2
, p_error IN VARCHAR2 DEFAULT 'I'
, p_msg_type IN VARCHAR2 DEFAULT ''
, p_msgid IN NUMBER DEFAULT 0
, p_loc IN VARCHAR2 DEFAULT '') IS
-- Purpose Show message to the end-user, standard procedure for the Oracle Forms
-- Generator of Designer/2000 to pass the display and handling of a message
-- to a user created procedure.
-- Usage Called by the Oracle Forms Generator code
-- Parameters : msg Text message
-- error ERRor or WARNing
-- msg_type ORA, API or user TLA
-- msg_id Id of message
-- loc Location where error occured
-- Remarks
v_msg VARCHAR2(2000) := p_msg;
v_error VARCHAR2(2000) := p_error;
v_servermsg VARCHAR2(2000) := DBMS_ERROR_TEXT;
l_empty_errorrec hil_Message.message_rectype;
BEGIN
IF p_msgid != 0
THEN
g_errorrec.severity := p_error;
ELSIF ((SUBSTR (v_msg, 1, 11) = 'API Error: ')) OR
((INSTR (v_servermsg, 'ORA-20999') <> 0) AND (v_msg IS NULL)) OR
(INSTR (v_msg, 'ORA-20999') <> 0)
THEN
-- error returned from the API, just display no further action required ?
HandleServerAPIError (p_msg);
-- M. Kappel
/* 11-apr-2001
- Allow check of v_servermsg even if v_msg contains data.
- With new-style cdm ruleframe, v_msg contains 'ORA-20998'.
We never looked at v_servermsg because v_msg was not null.
- With old-style database trigger business logic, v_msg contains only text.
If we still never look at v_servermsg, we don't identify that the error is
a 20998 and therefore we raise an alert 'Transaction Failed' instead of
showing the 'Errors in this Transaction' window.
-- ELSIF ((INSTR (v_servermsg, 'ORA-20998') <> 0) AND (v_msg IS NULL)) OR
-- (INSTR (v_msg, 'ORA-20998') <> 0)
-- THEN
On committing on or more business rules are violated the 'message-window' appear.
After correcting the errors and committing the changes i'm not getting the usual
'commit-message' (FRM-40400). This only happens after on or more business rules are violated.
When one or more business rules are violated application error ORA-20998 is raised. To
detect this DBMS_ERROR_TEXT is used ==> DBMS_ERROR_TEXT contains ALWAYS the text of the
LAST (dbms-)error (the text contains 'ORA-20998').
Even when no business rules are violated it's possible that DBMS_ERROR_TEXT contains 'ORA-20998'.
In that case no FRM-, MNU-, PLS-, SRW-, ORA- or REP-messages are displayed, because the error is
treated as a voilation of one or more business rules. To avoid this 'v_error = E' is added to the IF-clause:
when one or more business rule are violated this procedure is called to display an error (p_error ==> E);
for displaying the FRM-, MNU-, PLS-, SRW-, ORA- and REP-messages this procedure is called to display an
information (p_error ==> I).
When Designer generates code to validate p.e. check-constraints it will call this procedure too. See the example
below:
IF (:FUNCTIES.MIN_LEEFTIJD < :FUNCTIES.MAX_LEEFTIJD) THEN
NULL;
ELSE
qms$forms_errors.push('CBB-00219', 'E', 'OFG', 0);
qms$forms_errors.raise_failure;
END IF;
In this case the procedure is called to display an error. To avoid that the error is incorecctly treated as a
violation of one or more business rules '(p_msg_type != 'OFG' or p_msg_type is null)' is added to the IF-clause.
ELSIF v_error = 'E'
AND (p_msg_type != 'OFG' or p_msg_type is null)
AND ( INSTR (v_servermsg, 'ORA-20998') <> 0
OR INSTR (v_msg, 'ORA-20998') <> 0
THEN
HandleServerApplError (p_msg);
-- error returned from the API, just display no further action required ?
ELSIF ((INSTR (v_servermsg, 'ORA-20000') <> 0) AND (v_msg IS NULL)) OR
(INSTR (v_msg, 'ORA-20000') <> 0)
THEN
-- error was raised by old Headstart code with raise_application_error
-- strip ora-20000 : , check if code (get message) or message
HandleOldHeadstart (v_servermsg);
ELSIF (SUBSTR (v_msg, 1, 3) IN ('FRM', 'MNU', 'PLS', 'SRW', 'ORA', 'REP'))
THEN
HandleOracleError (v_msg, v_error);
ELSE
     HandleApplError(v_msg, v_error);
END IF;
Display_Error (g_errorrec);
g_errorrec := l_empty_errorrec;
END Push;

you can create a KEY-COMMIT form level trigger with the following :
declare
msglvl varchar2(3) := :system.message_level ;
begin
:system.message_level := 5 ;
commit_form ;
:system.message_level := msglvl ;
end ;
or put instruction : clear_message; before the commit_form ;

Similar Messages

  • Display the FRM-40400 at the bottom not with popup

    Hi,
    I need help with one form i have to modify, after modifiying the form, i noticed that the message FRM-40400 is displayed as popup but i just want this message to be displayed at the bottom of the form. Do you have any idea?
    Thanks.

    What version of Forms are you using?  What changes did you make to the form?  Did you make changes to the ON-MESSAGE or ON-ERROR triggers?
    The most likely cause of the FRM-40400: Transaction Complete message being promoted to the Default Alert is that you are writting a new message to the status bar but you didn't call the CLEAR_MESSAGE() built-in first.  It is always good (and recommended) practice to call the CLEAR_MESSAGE() built-in before displaying a new message with the MESSAGE() built-in; this ensures the status bar is clear before the message is displayed.  If there is a message already displayed in the status bar when a new message is sent to the status bar then the current message is promoted to the default Alert so the new message can be displayed.
    What message is in the status bar after you click OK on the popup (default Alert)?
    Craig...

  • Replacing FRM-40400 message

    My user doesn't want FRM-40400 'Transaction completed ...' in an alert. I've added the message to the Headstart message table to override the default and made it a severity Message. But now I don't know how many records were inserted or changed.
    Is there another possibility ?

    Gerrit,
    If you are on headstart version 5 or above, do the following:
    Open your application library and change the line
    -- show oracle messages in alert
    qms$forms_errors.set_oracle_message_target('A');
    into
    -- show oracle messages in console
    qms$forms_errors.set_oracle_message_target('M');
    Now this message pops up in the console instead of in an alert that the user has to acknowledge (only when forms needs to display another message after the first one, the first message will still pop up in an alert).
    Regards, Marc Vahsen
    Headstart Team

  • Need to show frm-40400 message

    Hi,
    I would like to show this FRM-40400 message for non database field update to another table .
    Message should display in the status bar as "Frm-40400 Transaction Complete. 1 record applied and saved"
    Please tell me how can i handle this issue.
    Thanks in advance,

    Hi
    While updating the table, counts the record saved to a variable SQL%Rowcount;
    Like below
    Declar
    Cts number ;=0;
    Begin
    Update Table..
    cts := Sql%rowcount;
    Message('Total Record Affected is '||CTS);
    End ;

  • Getting FRM-40400 but data is not in table

    I have a form with three data blocks. The first one is Database Data Block = no because it is used for query purposes only. The second one is Database Data Block = yes and is the only data block in which data gets entered into a table. The final data block is Database Data Block = no because it is a control block that houses my display items and buttons. Now, I am trying to get the data to save by way of a SAVE button. On the button I have code to GO_BLOCK() to the second database block and then perform a commit; I get a message back FRM-40400 which says Transaction complete: 1 records applied and saved. However when I open up the table in the database, nothing is there.... I imagine that this tells me that the form is not actually committing as it says. So, how do I find out what exactly my form is doing?
    Thanks!

    I've modified my form a bit since I posted this...I created a master-detail relationship between my first data block and the second one. I had a suggestion from someone else on this topic that when I press the save button, I should go_block('detail block') before performing the commit and that should work. Well, that didn't work either. It's still trying to commit the first data block. I used commit and commit_form because I wasn't sure which one was appropriate for my form.

  • FRM-40400: Transaction complete: 1 records applied and saved

    Dear All,
    Hope all of you are doing well,
    Pls go through my problem...
    here is an application developed based on Oracle Forms & Reports 6i.
    I wrote a code, like for some specific Users, various permissions.
    Ex: User A (Payroll Person), User B (HR)
    for employee Master Data HR is the right person to modify master data and all the remain are not permissible.
    I query one person (from Non HR user), try to modify Master Data  then it given user defined message -
    "you are not authorized person to modify Master Data" [OK] - so no changes done
    then I clicked the Query button directly,
    it gave the message - "Do you want to save the changes you have made"  [Yes] [No] [Cancel]
    when I clicked Yes :
    " FRM - 40400 : Transaction complete : 1 records applied and saved "
    In database also it is saving the record..
    Mean for unotherised user also It's modifying the data.
    Please help me the way to handle this issue..
    Thanks in Advance...

    As salamualikum, Md Sirajoddin
    You wrote
    I query one person (from Non HR user), try to modify Master Data  then it given user defined message -
    "you are not authorized person to modify Master Data" [OK] - so no changes done
    That means your code works in some condition. Right ?
    Place your code at Pre-Commit trigger at form level.
    Hope this helps
    Hamid

  • FRM-40501 Error and HeadStart 3.4.2W

    I'm migrating and old application made with Designer 1.3.2 and HeadStart 3.4.2W to Oracle 8i Release 8.1.6 and in many forms screens at commit time i'm receiving the message FRM-40501 "Unable to reserve records to update or delete". Any Clue, Anyone.

    This is the same problem as posted by Chuck, right?
    ORA-01410
    <p>I am not familiar with using instead-of triggers, so maybe someone else will help out here... Can you describe -- what does the instead-of trigger do?
    <p>But: I am sure the problem is in the form, and not with corrupt indexes.
    <p>Your Add_Table procedure is just setting up the record in the block to be added to the database. Everything looks normal there.
    <p>But what have you changed in the form since it was working? Have you added some SQL statements? Maybe added a trigger to the block? Commit-time processing? Answer these things and maybe someone can help some more.
    <p>It sounds like the rowid that Forms automatically sets after an insert is not being set, and you have added something (maybe inadvertently) that tries to update the record immediately after it is inserted. And the first thing that happens when you change a record is that Forms automatically issues a lock on the record (the select for update). This process uses a rowid, but your form has bypassed the process that sets the rowid.
    <p>Good luck with Forms. It is frustrating at first, but it gets better. And Oracle is a great dbms to work on.

  • FRM-40400 No changes to apply

    Dear friends,
    I'm using a button to do a commit_form, i have 3 blocks (2 database blocks, 1 non database block).
    when ever i push the button for the first time it commits the form without any messages, but after that it always shows (FRM-40400 No changes to apply).
    i used :system.message_level like following:
    N:= :SYSTEM.MESSAGE_LEVEL;
    :SYSTEM.MESSAGE_LEVEL := 0;
    COMMIT_FORM;
    CLEAR_FORM(NO_VALIDATE);
    :SYSTEM.MESSAGE_LEVEL := N;
    but the message still appears after 1st push for the button.
    can any one help me on this issue.
    Please note that this issue happens only if i open the form using open_form method, but if i use new_form it works without any messages.
    Best Regards
    I found the solution, if you use call_form, you will be able to set the message level as you want. without being overridden by the calling form.
    Edited by: Mohammad1981 on Feb 12, 2010 1:23 PM
    Edited by: Mohammad1981 on Feb 12, 2010 1:28 PM

    i'v found the answer after posing the question. you can find it above.

  • No commit message

    When i'm committing some changes and some business rules are violated the 'message-window' appear. After correcting the errors and commiting the changes i'm not getting the usual 'commit-message'. This only happens after i got the 'message-window'.
    P.S. I'm using the client-server-option of Headstart.

    Lauri,
    Which headstart-version i'm using: i've installed 6.5.0.1 from CD and applied the patches 6.5.2.1 and 6.5.2.2. At last i've installed the 6.5.2.2 client-server option.
    The messages are displayed in an alert. I think this is default because i didn't change it.
    Regards,
    Richard

  • Avoid from the error message: "FRM-41816: Attempt to create existing timer"

    Hi,
    I create a timer in "on-insert" trigger in data-block level, like this:
    timer_id := Create_Timer ('saving_inserting_timer' , 1 , NO_REPEAT);
    in the trigger "when-timer-expired" in form level,  I use this timer, like this: 
    timer_id := FIND_TIMER('saving_inserting_timer');
    I know  that I should write:
    DELETE_TIMER('saving_inserting_timer');
    to avoid the error message frm-41816, and I tried to  write this line in a several places in the code (in both triggers).  But I still get this error message.
    Thanks in advanced,
    Elad

    Hi Elad,
    in ON-INSERT trigger write
    timer_id := FIND_TIMER('saving_inserting_timer');
    IF NOT Id_Null(timer_id) THEN
      Delete_Timer(timer_id);
    END IF;
    timer_id := timer_id := Create_Timer ('saving_inserting_timer' , 1 , NO_REPEAT);
    in WHEN-TIMER-EXPIRED trigger wrote the below code
    IF NOT Id_Null(timer_id) THEN
      Delete_Timer(timer_id);
    END IF;
    No two timers can share the same name in the same form instance, regardless of case.
    Hope this will help

  • Error message:FRM-12001: Cannot Create the record group(check your query)

    Requirement: Need to get employee name and number in the LOV in search criteria.
    So I created LOV "full_name" and Record group Query under Employee Name property palette with
    select papf.title||' '||papf.last_name||', '||papf.first_name||' '||papf.middle_names emp_full_name
    ,papf.employee_number
    from apps.per_all_people_f papf, apps.per_person_types ppt
    where sysdate between papf.effective_start_date and papf.effective_end_date AND papf.person_type_id=ppt.person_type_id AND ppt.system_person_type IN ('EMP', 'OTHER', 'CWK','EMP_APL')
    AND PPT.default_flag='Y' and papf.BUSINESS_GROUP_ID=1
    order by papf.full_name
    I was unable to save and getting error message "FRM-12001: Cannot Create the record group(check your query)".
    I cant use PER_ALL_PEOPLE_F.FULL_NAME since full name here is last_name||title||middle_names||firstname.
    But my requiremnet is papf.title||' '||papf.last_name||', '||papf.first_name||' '||papf.middle_names emp_full_name .
    Can any one of you help me.

    First, Magoo wrote:
    <pre><font face = "Lucida Console, Courier New, Courier, Fixed" size = "1" color = "navy">create or replace function emp_full_name ( p_title in varchar2,
    p_last_name in varchar2,
    p_first_name in varchar2,
    p_mid_names in varchar2 ) return varchar2 is
    begin
    for l_rec in ( select decode ( p_title, null, null, p_title || ' ' ) ||
    p_last_name || ', ' || p_first_name ||
    decode ( p_mid_names, null, null, ' ' || p_mid_names ) full_name
    from dual ) loop
    return ( l_rec.full_name );
    end loop;
    end;</font></pre>
    Magoo, you don't ever need to use Select from Dual. And the loop is completely unnecessary, since Dual always returns only one record. This would be much simpler:
    <pre><font face = "Lucida Console, Courier New, Courier, Fixed" size = "1" color = "navy">create or replace function emp_full_name
    ( p_title in varchar2,
    p_last_name in varchar2,
    p_first_name in varchar2,
    p_mid_names in varchar2 ) return varchar2 is
    begin
    Return ( Ltrim( Rtrim ( p_title
    ||' ' ||p_last_name
    ||', '||p_first_name
    ||' ' ||p_middle_names )));
    end;</font></pre>
    And second:
    user606106, you did not mention how you got your record group working. However, you DO have an issue with spaces. If you change this:
    <pre><font face = "Lucida Console, Courier New, Courier, Fixed" size = "1" color = "navy">select papf.title||' '||papf.last_name||', '||papf.first_name||' '||papf.middle_names emp_full_name
    ,papf.employee_number </font></pre>
    to this:
    <pre><font face = "Lucida Console, Courier New, Courier, Fixed" size = "1" color = "navy">select Ltrim(Rtrim(papf.title||' '||papf.last_name||', '
    ||papf.first_name||' '||papf.middle_names)) AS emp_full_name,
    papf.employee_number</font></pre>
    it should work. The Ltrim(Rtrim()) removes leading and trailing spaces from the resulting full name.

  • How can I turn off the message that keeps bugging me to update to Firefox 6.0?

    How can I turn off the message that keeps bugging me to update to Firefox 6.0? Given the problems and incompatibilities with 5.0 I have no intention of upgrading until it's absolutely necessary!

    Settings>General>Accessibility>Voice Over change to off.
    PJRS

  • How to fetch a package's commit messages as text?

    I use a set of my own scripts for building everything from abs/aur from source.  I track dependencies, including makedepends, package groups, package splits, etc by scanning PKGBULDs to extract the info into my database.  My build script attempts to automatically show me the README and configuration options via "configure --help" or "cmake -LH", and after the package is built it shows me the namcap output so that I can approve the build and go on or change the PKGBUILD to correct errors.
    I would really like to have my build script also show me the changelog, as a text file, for the package by fetching the commit messages from the Arch web interface, such as http://projects.archlinux.org/svntogit/ … &showmsg=1, but I don't know how to fetch that dynamic page as a text file. 
    If it were a simple static page like the main page for archlinux.org I could get it with lynx -dump or html2text, but these don't give me anything useful for the package's "View Changes" pages.
    I hope that seems like a simple problem to someone.  Please give me a clue how to fetch dynamic pages like that as text...
    Last edited by sitquietly (2012-02-03 20:56:44)

    karol wrote:Have you seen https://bbs.archlinux.org/viewtopic.php?id=134591 ?
    Yes, of course, and it may be helpful if I have to dig into it's code, but by itself it gives markup (colorized text intended for a terminal emulator) rather than plain text.  If I dump its output into vim I still have what looks like trash.  I could filter out the markup.  Argh.
    Any other help out there??

  • Documentation for message FRM-41402

    Hi,
    I was getting message FRM-41402: Invalid type of visual attribute passed to Set_<object>_Property. I am looking for clues what can be causing this message, but I cannot find any documentation about it. I looked in Forms Builder Help (6.0.8), metalink and otn. Anybody??
    Thanks in advance, Hanneke

    Go to the Forms area on OTN. Click Documentation. Click the HTML link next to "Forms Online Help", towards the bottom of the page. Click Reference. Click All Forms Error Messages (frm-xxxxx). Error messages are there.
    It's the Oracle9i Help, but it should be the same as 6i.
    Regards,
    Robin Zimmermann
    Forms Product Management

  • Error message FRM-91113

    Hi all,
    When i try to run forms runtime on windows 8 it's giving me error message FRM-91113:Internal Error Cannot get default resource file name.
    Can anybody help me
    Thank in advance

    Hi Sarah,
    I used Form(32 bit) 6.0.8.25.2
    My problem when runtime on windows 7, and when call any report, the report give me print blank paper (White) , or some time give me rubbish data,
    or change place data..
    and when i run forms runtime on windows 8 it's giving me error message FRM-91113:Internal Error Cannot get default resource file name.

Maybe you are looking for

  • How do I make a playlist to resync my ipod?

    a couple weeks ago i was adding songs onto my ipod and i added too many *not enough room on my nano*, and my ipod added a new playlist to sync with *with only some songs on it*. i didnt like that idea so i deleted it. then my ipod was wiped clean, wi

  • Skype phone number with cordless phone

    Has anyone used this? How is the quality and how much does it cost to make calls worldwide? I currently use Skype when I can (when the other party has Skype), but I have Vonage with my small business and I need to make international calls. I am tryin

  • Roadmap / Overview / Steps/Tasks for 11gR2 DB and Fusion Middleware 11g

    hello all is there any website / URL that shows the roadmap or an overview of DB 11gR2 and Fusion Middleware 11g? I found this http://download.oracle.com/docs/cd/E14571_01/install.1111/e10421/overview.htm but lack of the overview together with Oracle

  • How to get the primary key generated by an Insert?

    My classpath is correct. So does anybody knows Why the following lines of code do not work? I get this message error. The line incorrect is line "6". Exception in thread "main" java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLSe rverCon

  • Question About Ship-To-Party from SAP ECC.

    Hello, In SAP ECC I have 2 Account Groups: 1. For Customers 2. For Ship-To-Party. My Question is: When I download the Customers from ECC to CRM I specify in PIDE both Account Groups. Is the relationship created during the download or it must be creat