How to validate detail columns on a Master-Detail page

How do you add validation to the detail columns/items on a Master-Detail page? For example I want to execute a 'not null' validation on a column in a detail row when the user attempts to add a new row.
Edited by: user9108091 on Oct 12, 2010 8:58 AM

Is the detail a tabular-form style?
If you are in version 4.x you can add it like any other validation.
If you are in version 3.x and below, you have to write your own PL/SQL validation using the wwv_flow.g_f01, g_f02, etc. arrays and make the validation a type of "function returning error text". A not-null return value will be your error message. A null return value will be synonymous with passing validation. Unfortunately this method is a bit inelegant in that if you display the error on the same page, the screen usually repaints as part of the whole process and since the row was not saved (nor any other changes the user may have made to existing rows) the new row will disappear. If you display on the error page, the error is a bit inconvenient/inconsistent for the end user relative to item-level error display, but the page will usually be cached in the browser's cache and the state of what the user entered is retained.
The error page also usually defaults to the "login" template. If it did, this is rather unattractive, IMHO. If you switch it to your current page tempate for most of your application pages (e.g.: two level tabs), even though it doesn't have tabs it will look a little more consistent with your other application pages.

Similar Messages

  • How to remove the Detail column programmatically in Master detail table

    Hi,
    I have a master detail table.
    I want to remove the show Hide (Detail) link from the table programmatically based on some serach criteria. Is it possible to do that.
    Thanks in Advance,
    Kaushik Rambhiya

    Set the Vertical Elasticity property of the master frame to Variable.

  • How to prevent user keyin wrong in master-detail

    How to prevent user keyin wrong in master-detail.
    Example : User click button to created mster with out crete detail then they going to another master record for created detail for that master,
    How to control user keyin master-detail currect record finish first then can go to another master?
    Is it posible if I will disable another record of master and enable only current record after they finish to keyin master and detail of this record then I enable all.
    If posible can you give me step-by-step and coding.
    Thank you very much

    I'm not able to understand the scenario. You probably will have to provide more detail of the issue.
    --Shiv                                                                                                                                                                                                                           

  • How to create 1-1 relation in Master Detail link?

    How to create 1-1 relation in Master Detail link?
    I've attached the screen shot in the link below (a Microsoft powerpoint file)
    http://us.f1f.yahoofs.com/bc/6a8130cf/bc/My+Documents/dataerror.ppt?bf2WKfABbW_fzjVn

    Hi,
    I can't reach the file at the link you gave (bcvrf.yahoo.com not found) so I can't tell quite what you're trying to do. Can you provide a bit more detail? Are you using the ER modeler or the schema diagram? If you're modeling tables in the schema diagram then the answer is you can't - there must be a foreign key at one end and that is always represented as a 'many'. To enforce a 1:1 relationship you must add code (probably in the server), for example, db triggers.
    I hope this is helpful,
    Keith.

  • How to bring all columns in a single/first page in report painter

    Hi Experts,
    There are 9 columns in a report painter which includes 1 lead column.
    7 columns comes in a first page including lead column and rest 2 columns goes to second page. This report is copied from another report where all columns comes in a first page only. if the original report comes in one page then why not the new report.
    Please suggest how to bring all columns in a single/first page in the new report.
    Please revert if I'm confused anywhere.
    Thanks in advance
    Arabinda

    Hi Rajneesh,
    Thanx for the quick reply. When I change the column width to 10 it comes in one page. But the requirement is to keep the column width to at least 12 or 14 and moreever the original report from where this report is copied having the same no of columns and the column width for original report is 14 and it comes in one page only.
    Do I need to do something more to achieve this. My question is how the original reports data comes in one page where as the current report having issue with same number of columns.
    Pls suggest.
    Thanx,
    Arabinda

  • How to add a column in Item Master form with chooselist

    Hi Experts
    I add a column in Item Master Form in Stock Data Tab. In this column I want to add Choose list. For this I use AfterFormLoad event. It gives Error "Matrix Line Exist" . My code is given below
    If pVal.FormType = "150" Then
                    form = B1Connections.theAppl.Forms.GetForm(150, pVal.FormTypeCount)
                    form.PaneLevel = 3
                    oItem = form.Items.Item("28")
                    oMatrix = oItem.Specific
                    Dim chooseObj As ChooseListClass
                    chooseObj = New ChooseListClass
                    chooseObj.AddChooseFromListBinCode(form.UniqueID)
                    oColumns = oMatrix.Columns
                    oColumn = oColumns.Add("BINCODE", BoFormItemTypes.it_EDIT)
                    oColumn.Width = 100
                    oColumn.DataBind.SetBound(True, "OITW", "U_BINCODE")
                    oColumn.TitleObject.Caption = "Def BinCode"
                    oColumn.Editable = True
                    oColumn.ChooseFromListUID = "CFL5"
                    oColumn.ChooseFromListAlias = "U_BinCode"
                    oColumn = oColumns.Item("U_BINCODE")
                    oColumn.Visible = False
                End If
    please give your suggestion
    Regards
    Jitender

    Hi Noor
    Thanks for reply
    I tried your suggestion but problem still there. I am using after form load event. Here matrix has 9 lines (all warehouse). If remove the line then how can I reload warehouse data. Can you suggest in more detail.
    my code is given below
    form = B1Connections.theAppl.Forms.GetForm(150, pVal.FormTypeCount)
                    form.PaneLevel = 3
                    oItem = form.Items.Item("28")
                    oMatrix = oItem.Specific
                    MsgBox(oMatrix.RowCount)
                    oMatrix.DeleteRow(1)
                    Dim chooseObj As ChooseListClass
                    chooseObj = New ChooseListClass
                    chooseObj.AddChooseFromListBinCode(form.UniqueID)
                    oColumns = oMatrix.Columns
                    oColumn = oColumns.Add("BINCODE", BoFormItemTypes.it_EDIT)
                    oColumn.Width = 100
                    oColumn.DataBind.SetBound(True, "OITW", "U_BINCODE")
                    oColumn.TitleObject.Caption = "Def BinCode"
                    oColumn.Editable = True
                    oColumn.ChooseFromListUID = "CFL5"
                    oColumn.ChooseFromListAlias = "U_BinCode"
                    oColumn = oColumns.Item("U_BINCODE")
                    oColumn.Visible = False
                    oMatrix.AddRow(1)
    Thanks
    Waiting for reply
    Regards
    Jitender

  • How to determine the ROWNUM in a Master Detail Form

    Hello,
    I am working in a Master Detail Form with Orders and Order Items Information; and I created a process that allows the users to select a Product ID on a tabular form, and the next column is populated automatically with the Product Description.
    To achieve that, I followed some instructions by Denes Kubicek (http://apex.oracle.com/pls/otn/f?p=31517:241), but my case is slightly different:
    <ul>I am using a wizard-created tabular form, instead of a manual tabular form; and </ul>
    <ul>Instead of using another page as a Popup to pass the parameter of the ROWNUM, I am using a plug-in called “Tabular Form Super LOV” which is a modified version of the SkillBuilders’ Super LOV that works on Tabular Forms. </ul>
    The Product ID is returned in the correct row by the plug-in; but in the case of the Product Description, it is always returned into the first row; and my problem is that I don't know how to determine the row where the user clicked to call the plug-in.
    I set up an example in apex.oracle.com in case someone would like to look at it:
    Workspace: ediazjorge
    Username: test
    Password: test
    App Name: Sample App
    App Number: 1550
    BTW, I am using Apex 4.1.1.00.23 and Oracle DB 10.3.2.
    Thanks in advance,
    Erick

    Hello VC,
    Thank you for your time and help.
    Unfortunately, it is still not working properly:
    1. When the Popup LOV opens, the first row of the tabular form is 0, the second row is 1, and so on. How can I assign the values starting with 1 and in the format *0001* ? (I am still a novice on Apex and new to JavaScript :-), sorry about that).
    --2. Also, when I close the Popup LOV, the value of P1_ROWNUM is ‘undefined’ again so I'm not sure if the Product Name column will be populated.--
    3. And finally, you are using the jQuery Selector uPopupLOVIcon, which is an attribute of the Cloudy Theme. In my real application (Apex 4.1.1.00.26), my element looks like: *<img src="/i/lov_16x16.gif" width="16" height="16" alt="Popup Lov" alt="List" style="vertical-align:middle;" align="middle" />*. What do you recommend me to use as a jQuery Selector?
    Again, I really appreciate your help and time. I think you solved the most difficult part.
    Thank you so much,
    Erick
    Update: I just found out that the problem with my comment 2 is because I didn’t delete the previous dynamic action that set the value to P1_ROWNUM.
    Edited by: ediazjorge on Sep 18, 2012 11:20 AM

  • Dynamically show and hide detail columns according to master column value

    i want to create a page where 2 level master detail.
    that is main master region with search option for query (query region)
    2nd detail with table
    and 3rd detail. (1-2-3)
    Here in 3rd detail region, some fields should be shown and some fields hide according to the value of one filed in 2nd detail table(for the current selected row).
    please advice
    or
    please point me to any similar posts

    Zam,
    show/hide is only beneficial if its optioanl for user to hide or show the fields at your detail region.If it is not , you will have to use PPR and transient VO approach.
    --Mukul                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • More than one Detail table in the Master Detail forms!

    Hi,
    I need to have more than one Detail table in Master Detail Forms.
    I want to see the details of the rows of the first Detail table in the Second Detail table. Please guide me to do this.
    Sincerely yours,
    Mozhdeh

    You can do one of two things
    1) Depends on the nature of your data model. I was able to manage many to many
    relationships using views and instead of triggers. This solution is somewhat complex but can work in certain situations.
    2)Works for situations where master record exists. create a page with mulitple portlets syncronized on some related key.
    create the following package to use on the md forms to place on the one page to be rendered.
    -- this package will facilitate the storage and retrieval of keys used by the related forms.
    create or replace package session_var
    IS
    session_parms portal30.wwsto_api_session;
    g_domain varchar2(2000) := portal30.wwctx_api.get_user;
    function get_id (id in varchar2) return number;
    PROCEDURE SET_ID
    (ID in VARCHAR2
    ,p_val in VARCHAR2
    ,P_URL in VARCHAR2
    END SESSION_VAR;
    create or replace package body session_var
    IS
    --pkg body
    function get_id(id in varchar2) return number is
    l_store_session portal30.wwsto_api_session;
    l_id number;
    begin
    l_store_session := portal30.wwsto_api_session.load_session(
    p_domain => session_var.g_domain,
    p_sub_domain => 'your domain');
    l_id := l_store_session.get_attribute_as_varchar2( p_name => id);
    return l_id;
    end get_id;
    PROCEDURE SET_ID
    (ID in VARCHAR2
    ,p_val in VARCHAR2
    ,P_URL in VARCHAR2
    IS
    l_store_session portal30.wwsto_api_session;
    begin
    l_store_session := portal30.wwsto_api_session.load_session(
    p_domain => session_var.g_domain,
    p_sub_domain => 'your domain');
    l_store_session.set_attribute(
    p_name => id,
    p_value => p_val );
    l_store_session.save_session;
    * Redirect to the page using p_url;
    portal30.wwv_redirect.url(P_URL);
    end set_id;
    END SESSION_VAR;
    --the form master detail form, section  before display page enter the following code and publish as portlet.
    declare
    l_fs varchar2(4000);
    l_s varchar2(4000);
    v_con_id number;
    begin
    v_con_id :=rfq.session_var.get_id('CON_ID'); -- primary key and key used to relate details
    p_session.set_shadow_value( p_block_name => 'MASTER_BLOCK',
    p_attribute_name => 'A_CON_ID', -- attribute on form related to primary key
    p_value => '= '|| v_con_id,
    p_language => portal30.wwctx_api.get_nls_language ,
                   p_index => 1
    l_fs := p_session.get_value_as_varchar2(p_block_name => 'MASTER_BLOCK', p_attribute_name => '_FORM_STATE');
    l_s := p_session.get_value_as_varchar2(p_block_name => 'MASTER_BLOCK', p_attribute_name => '_STATUS');
    if l_fs = 'SAVE' and l_s is null then
    WWV_MASTER_GENSYS_1(p_block_name => p_block_name,
    p_object_name => p_object_name,
    p_instance => p_instance,
    p_event_type => p_event_type,
    p_user_args => p_user_args,
    p_session => p_session);
    p_session.save_session;
    end if;
    if l_fs = 'QUERY_AND_SAVE' and l_s is null then
    WWV_MASTER_GENSYS_1(p_block_name => p_block_name,
    p_object_name => p_object_name,
    p_instance => p_instance,
    p_event_type => p_event_type,
    p_user_args => p_user_args,
    p_session => p_session);
    p_session.save_session;
    end if;
    exception
    when others then
    PORTAL30.wwerr_api_error.add(PORTAL30.wwerr_api_error.DOMAIN_WWV,'app','generic','onLink', p1 => sqlerrm);
    raise;
    end;
    --then create other md forms and publish as portlets in a similar manner.
    -- create a form (form_session_vars) to call procedure session_vars and place the following code in the
    addiontional pl/sql tab
    WWV_GENSYS_1(
    p_block_name => p_block_name ,
    p_object_name => p_object_name,
    p_instance => p_instance ,
    p_event_type => p_event_type ,
    p_user_args => p_user_args ,
    p_session => p_session);
    --then create a page and place the md forms created above as portlets on the page.
    --create a link and target the form_session_vars and in the link target inputs
    enter the values for your user parameters
    id= CON_ID --"your primary key name"
    p_url= url/page/"your_page"
    --finally create a report (QBE or standard).
    in the column formation section use the link created earlier to direct the user to the target page.
    How it works.
    When the link is selected the form_session_Var is called and automatically runs setting the primary key values
    in the user session store. The step is required or the resulting page will not render properly. Then the user is redirected to the page where the portlets are rendered. The portlets start rendering, the before display page calls the session vars package to retrieve the key and put the form into query_update mode returning the data.
    The portlets finish in query_and_save mode with details in update mode, the allowable insert, delete and none actions will be available for the details.
    benefits: The session_Var package code is resuable as well as the form form_session_Var and the link. passing the key name and values are done at the report level and detailed in the report links. the md forms will need to reference their related keys.

  • Detail-Disclosure problem with Master- Detail VO

    Hi,
    I have UIX pages based on Master - Detail VO, detail data being shown when you press Detail button on the left, detail data display in the BC4J Table correctly, but I am able to update only the last record of the rowset. when I click on the first master detail and press update button i get Null Pointer Exeception error and other problem is that my detail data has sorted headers, when i click on the sorted column header, it close the Detail portion on the Table.
    Here is UIX page listing, please any one review the code and let me what is wrong
    Thanks
    View Page
    <?xml version="1.0" encoding="windows-1252" ?>
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:bc4j="http://xmlns.oracle.com/uix/bc4j"
    xmlns:html="http://www.w3.org/TR/REC-html40"
    xmlns:viewpage="http://www.example.org/siriusbilling/templates">
    <ctrl:head xmlns="http://www.w3.org/TR/REC-html40">
    <title>View Properties</title>
    </ctrl:head>
    <templates xmlns="http://xmlns.oracle.com/uix/ui">
    <templateImport source="templates/SiriusBilling.uit"/>
    </templates>
    <bc4j:registryDef>
    <bc4j:rootAppModuleDef name="PropertiesForeignKeyLink1AppModule"
    definition="siriusbilling.SiriusBCModule"
    releaseMode="stateful" >
    <bc4j:viewObjectDef name="PropertyTypesMasterView"
    rangeSize="2" />
    <bc4j:viewObjectDef name="PropertiesDetailView"
    rangeSize="5" />
    </bc4j:rootAppModuleDef>
    </bc4j:registryDef>
    <ctrl:content xmlns="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui">
    <viewpage:siriusPageLayout>
    <pageHeader>
    <globalHeader selectedIndex="0">
    <contents>
    <link text="View Properties" />
    </contents>
    </globalHeader >
    </pageHeader>
    <contents>
    <try xmlns="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui" >
    <catch>
    <displayException />
    </catch>
    <contents>
    <!-- this will contain any validation errors after form
    submission -->
    <messageBox automatic="true" />
    <bc4j:rootAppModuleScope name="PropertiesForeignKeyLink1AppModule" >
    <contents>
    <header text="Properties Search" >
    <contents>
    <form name="search" method="POST" >
    <contents>
    <inlineMessage prompt="Search by:" vAlign="middle" >
    <contents>
    <bc4j:viewObjectScope name="PropertiesDetailView" >
    <contents>
    <flowLayout>
    <contents>
    <choice name="attrName"
    data:selectedValue="attrName@ctrl:page"
    shortDesc="Search Column">
    <contents>
    <option text="Property Id" value="PropertyId" />
    <option text="Property Name" value="PropertyName" />
    <option text="Property Description" value="PropertyDescription" />
    <option text="Unit Of Measure" value="UnitOfMeasure" />
    </contents>
    </choice>
    <textInput prompt="Criteria" name="attrValue" columns="20"
    data:text="attrValue@ctrl:page"
    shortDesc="Search Criteria for Propeties"/>
    </contents>
    </flowLayout>
    </contents>
    </bc4j:viewObjectScope>
    </contents>
    <end>
    <submitButton text="Go" ctrl:event="search" />
    </end>
    </inlineMessage>
    </contents>
    </form>
    </contents>
    </header>
    <spacer width="10"/>
    <separator />
    <header text="Property Types" >
    <contents>
    <form name="viewForm" method="POST" >
    <contents>
    <bc4j:viewObjectScope name="PropertyTypesMasterView" >
    <contents>
    <bc4j:table name="viewPropertyTypeTable" automatic="false"
    width="100%" alternateText="No rows found"
    formSubmitted="true"
    partialRenderMode="self"
    data:detailDisclosure="tableDetails@ctrl:eventResult">
    <!-- the key identifying the current row in the table -->
    <bc4j:keyStamp>
    <bc4j:rowKey name="key" />
    </bc4j:keyStamp>
    <contents>
    <!-- placing the region in automatic mode will cause the key
    named child to be rendered, followed by each attribute
    in the ViewObject using the attrStamp named child. -->
    <!-- A bc4j:column element is added for each attribute
    in the ViewObject. -->
    <bc4j:column attrName="PropertyType">
    <columnHeader>
    <bc4j:sortableHeader text="Property Type"/>
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    <bc4j:column attrName="TableName">
    <columnHeader>
    <bc4j:sortableHeader text="Table Name"/>
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    <bc4j:column attrName="Comments" >
    <columnHeader>
    Comments
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    </contents>
    <detail>
    <flowLayout>
    <contents>
    <header text="Properties Detail">
    <contents>
    <spacer width="10"/>
    <bc4j:viewObjectScope name="PropertiesDetailView" >
    <contents>
    <!-- placing the table in automatic mode will cause the table
    to contain the keyStamp named child followed by the
    columnStamp named child for each attribute in the
    ViewObject. -->
    <bc4j:table name="viewTable" automatic="false"
    width="100%" alternateText="No rows found"
    formSubmitted="true"
    partialRenderMode="self">
    <tableSelection>
    <!-- single selection for each row in the table -->
    <singleSelection selectedIndex="0" text="Select Row and ...">
    <contents>
    <submitButton text="Create" ctrl:event="create" />
    <!-- the update button causes the currently selected
    row to be sent to the update page -->
    <submitButton text="Update"
    ctrl:event="update" />
    <!-- the delete button causes the currently selected
    row to be removed -->
    <submitButton text="Delete"
    ctrl:event="delete" />
    </contents>
    </singleSelection>
    </tableSelection>
    <!-- the key identifying the current row in the table -->
    <bc4j:keyStamp>
    <bc4j:rowKey name="key" />
    </bc4j:keyStamp>
    <contents>
    <!-- A bc4j:column element is added for each attribute
    in the ViewObject. -->
    <bc4j:column attrName="PropertyId">
    <columnHeader>
    <bc4j:sortableHeader text="Property Id"/>
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    <bc4j:column attrName="PropertyName">
    <columnHeader>
    <bc4j:sortableHeader text="Property Name"/>
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    <bc4j:column attrName="PropertyDescription">
    <columnHeader>
    <bc4j:sortableHeader text="Property Description"/>
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    <bc4j:column attrName="UnitOfMeasure">
    <columnHeader>
    <bc4j:sortableHeader text="Unit of Measure"/>
    </columnHeader>
    <contents>
    <bc4j:input readOnly="true"/>
    </contents>
    </bc4j:column>
    </contents>
    </bc4j:table>
    </contents>
    </bc4j:viewObjectScope>
    <formValue name="disclosed" value="true" />
    </contents>
    </header>
    </contents>
    </flowLayout>
    </detail>
    </bc4j:table>
    </contents>
    </bc4j:viewObjectScope>
    </contents>
    </form>
    </contents>
    </header>
    </contents>
    </bc4j:rootAppModuleScope>
    </contents>
    </try>
    </contents>
    </viewpage:siriusPageLayout>
    </ctrl:content>
    <handlers>
    <event name="search" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertiesDetailView" >
    <!-- search for the view criteria -->
    <bc4j:findByExample>
    <bc4j:exampleRow ignoreCase="true" >
    <bc4j:exampleAttribute>
    <bc4j:nameBinding><bc4j:parameter name="attrName" /></bc4j:nameBinding>
    <bc4j:valueBinding><bc4j:parameter name="attrValue" /></bc4j:valueBinding>
    </bc4j:exampleAttribute>
    </bc4j:exampleRow>
    </bc4j:findByExample>
    <bc4j:executeQuery/>
    <!-- store the current search criteria as page properties -->
    <bc4j:setPageProperty name="attrName" >
    <bc4j:parameter name="attrName" />
    </bc4j:setPageProperty>
    <bc4j:setPageProperty name="attrValue" >
    <bc4j:parameter name="attrValue" />
    </bc4j:setPageProperty>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="first" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertyTypesMasterView" >
    <!-- navigate to the first department -->
    <bc4j:first/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="previous" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertyTypesMasterView" >
    <!-- navigate to the previous department -->
    <bc4j:previous/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="next" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertyTypesMasterView" >
    <!-- navigate to the next department -->
    <bc4j:next/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="last" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertyTypesMasterView" >
    <!-- navigate to the last department -->
    <bc4j:last/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="sort" source="viewTable" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertiesDetailView" >
    <!-- sort by the submitted attribute name -->
    <bc4j:sort/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="sort" source="viewPropertyTypeTable" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertyTypesMasterView" >
    <!-- sort by the submitted attribute name -->
    <bc4j:sort/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="goto" source="viewPropertyTypeTable" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertyTypesMasterView" >
    <!-- navigate to the submitted range -->
    <bc4j:goto/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="goto" source="viewTable" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertiesDetailView" >
    <!-- navigate to the submitted range -->
    <bc4j:goto/>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    <event name="create" >
    <!-- forward to the create page -->
    <ctrl:go name="InsertProperties" redirect="true" />
    </event>
    <event name="update" >
    <!-- forward to the update page, passing the selected key
    as a page property -->
    <ctrl:go name="UpdateProperties" redirect="true" >
    <ctrl:property name="key" >
    <ctrl:selection name="viewTable" key="key" />
    </ctrl:property>
    </ctrl:go>
    </event>
    <event name="delete" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertiesDetailView" >
    <!-- find the selected Row -->
    <bc4j:findRowByKey>
    <bc4j:keyBinding>
    <bc4j:selectionKey name="viewTable" key="key" />
    </bc4j:keyBinding>
    <bc4j:handlers>
    <!-- remove the selected ViewObject row -->
    <bc4j:removeRow />
    <!-- execute the query to eliminate dead row access -->
    <bc4j:executeQuery/>
    </bc4j:handlers>
    </bc4j:findRowByKey>
    </bc4j:findViewObject>
    <!-- commit the transaction, forwards to self automatically -->
    <bc4j:commit/>
    </bc4j:findRootAppModule>
    </event>
    <event name="show">
    <method class="servlet.showDetails" method="doHideShowEvent" />
    </event>
    <event name="hide">
    <method class="servlet.showDetails" method="doHideShowEvent" />
    </event>
    </handlers>
    </page>
    Update View
    <?xml version="1.0" encoding="windows-1252" ?>
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:bc4j="http://xmlns.oracle.com/uix/bc4j"
    xmlns:html="http://www.w3.org/TR/REC-html40"
    xmlns:updatepage="http://www.example.org/siriusbilling/templates">
    <ctrl:head xmlns="http://www.w3.org/TR/REC-html40">
    <title>Update Properties</title>
    </ctrl:head>
    <templates xmlns="http://xmlns.oracle.com/uix/ui">
    <templateImport source="templates/SiriusBilling.uit"/>
    </templates>
    <bc4j:registryDef>
    <bc4j:rootAppModuleDef name="PropertiesForeignKeyLink1AppModule"
    definition="siriusbilling.SiriusBCModule"
    releaseMode="stateful" >
    <bc4j:viewObjectDef name="PropertiesDetailView" >
    <bc4j:rowDef name="UpdatePropertiesDetailView" autoCreate="false" usesCurrency="true">
    <bc4j:propertyKey name="key" />
    </bc4j:rowDef>
    </bc4j:viewObjectDef>
    <!-- Display only 20 rows -->
    <bc4j:viewObjectDef name="PropertyTypesView" rangeSize="20" >
    <bc4j:rowDef name="UpdatePropertyTypesView" autoCreate="false">
    <bc4j:propertyKey name="key" />
    </bc4j:rowDef>
    </bc4j:viewObjectDef>
    </bc4j:rootAppModuleDef>
    </bc4j:registryDef>
    <ctrl:content xmlns="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui">
    <updatepage:siriusPageLayout>
    <pageHeader>
    <globalHeader selectedIndex="0">
    <contents>
    <link text="Update Property" />
    </contents>
    </globalHeader >
    </pageHeader>
    <contents>
    <try xmlns="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui" >
    <catch>
    <displayException />
    </catch>
    <contents>
    <switcher childName="default">
    <boundAttribute name="childName">
    <if>
    <comparison type="equals">
    <dataObject select="key" source="ctrl:page"/>
    <dataObject source="ui:null"/>
    </comparison>
    <fixed text="error"/>
    </if>
    </boundAttribute>
    <case name="error">
    <header text="Required page property 'Property Type' missing. Cannot display page."/>
    </case>
    <case name="default">
    <flowLayout>
    <contents>
    <!-- this will contain any validation errors after form
    submission -->
    <messageBox automatic="true" />
    <script>
    <contents>
    function UOMLovCallBack(lovwin, event)
    var value = lovwin.returnUOMValue;
    if (value!=(void 0))
    document.updateForm.UnitOfMeasure.value = lovwin.returnUOMValue;
    </contents>
    </script>
    <form name="updateForm" method="POST" >
    <contents>
    <!-- we cannot implicitly determine that events
    will be triggered because submit buttons are
    outside the form scope, so add the placeholder
    explicitly -->
    <formParameter name="event" />
    <!-- layout the fields in two columns -->
    <spacer width="10"/>
    <tableLayout width="80%"
    cellPadding="2"
    hAlign="center">
    <contents>
    <bc4j:rootAppModuleScope name="PropertiesForeignKeyLink1AppModule" >
    <contents>
    <bc4j:viewObjectScope name="PropertiesDetailView" >
    <contents>
    <bc4j:rowScope name="UpdatePropertiesDetailView" >
    <contents>
    <bc4j:messageChoice prompt="Property Type" attrName="PropertyType" name="PropertyType">
    <contents>
    <bc4j:optionList voName="PropertyTypesView" attrName="PropertyType" textAttributeName="PropertyType" size="30"/>
    </contents>
    </bc4j:messageChoice>
    <bc4j:messageInput prompt="Property Id" vAlign="left" attrName="PropertyId" size="30"/>
    <bc4j:messageInput prompt="Property Name" attrName="PropertyName" size="30"/>
    <bc4j:messageInput prompt="Property Description" attrName="PropertyDescription" size="30" />
    <bc4j:messageLovField prompt="Unit Of Measure"
    attrName="UnitOfMeasure"
    name="UnitOfMeasure"
    onClick="openWindow(window,
    'UOMLov.uix',
    'lovwin',
    {width:480, height:300},
    true,
    'dialog',
    UOMLovCallBack);
    return false;" />
    </contents>
    </bc4j:rowScope>
    </contents>
    </bc4j:viewObjectScope>
    </contents>
    </bc4j:rootAppModuleScope>
    </contents>
    </tableLayout>
    </contents>
    </form>
    </contents>
    <contents>
    <contentFooter>
    <contents>
    <html:center>
    <!-- place a row of buttons below the content -->
    <pageButtonBar>
    <contents>
    <!-- the cancel button performs a transaction rollback -->
    <button text="Cancel" ctrl:event="cancel" />
    <!-- the update button submits the user-entered
    form data -->
    <submitButton text="Update" formName="updateForm"
    ctrl:event="apply" />
    </contents>
    </pageButtonBar>
    </html:center>
    </contents>
    </contentFooter>
    </contents>
    </flowLayout>
    </case>
    </switcher>
    </contents>
    </try>
    </contents>
    </updatepage:siriusPageLayout>
    </ctrl:content>
    <handlers>
    <event name="cancel" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- rollback the current transaction -->
    <bc4j:rollback/>
    <!-- forward to the summary page -->
    <ctrl:go name="ViewProperties" redirect="true" />
    </bc4j:findRootAppModule>
    </event>
    <event name="apply" >
    <!-- using the ApplicationModule causes it to be checked out from the
    ApplicationPool. It is released using stateful mode. -->
    <bc4j:findRootAppModule name="PropertiesForeignKeyLink1AppModule" >
    <!-- establish the ViewObject scope -->
    <bc4j:findViewObject name="PropertiesDetailView" >
    <!-- find the row by key, falling back on a new default
    row if the key is not found -->
    <bc4j:findRow name="UpdatePropertiesDetailView" >
    <!-- set each attribute explicitly -->
    <bc4j:setAttribute name="PropertyId" />
    <bc4j:setAttribute name="PropertyType" />
    <bc4j:setAttribute name="PropertyName" />
    <bc4j:setAttribute name="PropertyDescription" />
    <bc4j:setAttribute name="UnitOfMeasure" />
    <!-- commit the transaction -->
    <bc4j:commit/>
    <bc4j:executeQuery/>
    <!-- forward to the summary page -->
    <ctrl:go name="ViewProperties" redirect="true" />
    </bc4j:findRow>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    </handlers>
    </page>

    I think the detailDisclosure state needs to be saved and retrieved from the session.
    I'm not sure using a table with singleSelection inside a detail disclosure is supported. Are you doing master-detail inside of detail disclosure? Detail disclosure is not really meant for that. In jdev 10g preview we make hooking up a master-detail easy. Here's a link to some doc about it.
    http://otn.oracle.com/products/jdev/collateral/tutorials/9050/adfuix_tut.html#Create%20a%20Master-Detail%20page

  • More than 5 rows in the detail table for a Master Detail Portlet

    I have a Master Detail Portlet.   I originally had 5 fields in the detail portlet.  I have added a column to the detail portlet and now the last column is wrapped around in the portlet.  I do not see a way to force it to be on the same line as the rest of the columns for the detail table.
    Do I need to just delete it and re-create the portlet?
    Below is the from the browser when executing the portlet.
    function show_context_help(h) {   newWindow = window.open(h,"Help", "menubar=1,toolbar=1,scrollbars=1,resizable=1,width=700, height=500"); }  
    Master action:
    [None]
    Insert
    Update
    Delete
    Carrier
    Carname
    Line Haul Carrier?
    Detail actions
    Warehouse
    Carrier
    Service
    Ship To
    Country Code
    Hold for
    Pickup
    Service?
    Associate LPN
    Required?
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete
    [None]
    Insert
    Update
    Delete

    Easy, The default on the detail field had the Begin on New Line flag set to on.   By unchecking it I got the desired behavior.

  • How to validate similar columns fetched by the cursor

    Hi,
    I have one table which has columns like COMP_PART_NUMBER_1 , COMP_PART_NUMBER_2 up to COMP_PART_NUMBER_50
    Need to validate columns as shown below,I want to know how to make create dynamic script for the below validation so that there is no need to add same logic for 50 times.
    IF rec_SCR_assy.COMP_PART_NUMBER_1 IS NOT NULL THEN
    IF LENGTH(rec_SCR_assy.COMP_PART_NUMBER_1) > 8 THEN
         v_error_description := NVL(v_error_description,'') || 'The Component 1 Part Number length should not be greater than 8| ';
    ELSE
    v_upd_script := ' COMP_PART_NUMBER_1 = ''' || rec_SCR_assy.COMP_PART_NUMBER_1 || '''';
    END IF;
    END IF;
    I have tried to create pl sql block as :-
    FOR vcnt IN 1..50
    LOOP
    VFIELD_COMP_PART := 'COMP_PART_NUMBER_' || VCNT;
    v_exec_query:=' begin
    IF rec_SCR_assy.'||VFIELD_COMP_PART ||' IS NOT NULL THEN
    IF LENGTH(rec_SCR_assy.'||VFIELD_COMP_PART||') > 8 THEN
    :v_error_description := NVL(:v_error_description,'''') || ''The Component 1 Part Number length should not be greater than 8| '';
    ELSE
    :v_upd_script := '' rec_SCR_assy.'||VFIELD_COMP_PART||' = '''''' ||rec_SCR_assy.'||VFIELD_COMP_PART ||'||'''''''';
    end if;
    END IF; end;';
    execute immediate V_EXEC_QUERY using v_error_description,v_upd_script;
    This code is giving an error as it is not possible to create a bind variable to the cursor in dynamic script.
    Please help me to find the solution for it.Thanks in advance.

    Try like this ...
    DECLARE
       v_exec_query   VARCHAR2 (4000);
    BEGIN
       FOR i IN (SELECT column_name
                   FROM all_tab_cols
                  WHERE table_name = 'EMP')
       LOOP
          v_exec_query :=
                ' begin
    IF rec_SCR_assy.'
             || i.column_name
             || ' IS NOT NULL THEN
    IF LENGTH(rec_SCR_assy.'
             || i.column_name
             || ') > 8 THEN
    :v_error_description := NVL(:v_error_description,'''') || ''The Component 1 Part Number length should not be greater than 8| '';
    ELSE
    :v_upd_script := '' rec_SCR_assy.'
             || i.column_name
             || ' = '''''' ||rec_SCR_assy.'
             || i.column_name
             || '||'''''''';
    end if;
    END IF; end;';
          DBMS_OUTPUT.put_line (v_exec_query);
       END LOOP;
    END;
    --Output
    BEGIN
       IF rec_scr_assy.emp_info IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.emp_info) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                   ' rec_SCR_assy.EMP_INFO = ''' || rec_scr_assy.emp_info || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.deptno IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.deptno) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                       ' rec_SCR_assy.DEPTNO = ''' || rec_scr_assy.deptno || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.comm IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.comm) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                           ' rec_SCR_assy.COMM = ''' || rec_scr_assy.comm || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.sal IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.sal) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                             ' rec_SCR_assy.SAL = ''' || rec_scr_assy.sal || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.hiredate IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.hiredate) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                   ' rec_SCR_assy.HIREDATE = ''' || rec_scr_assy.hiredate || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.mgr IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.mgr) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                             ' rec_SCR_assy.MGR = ''' || rec_scr_assy.mgr || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.job IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.job) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                             ' rec_SCR_assy.JOB = ''' || rec_scr_assy.job || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.emp_no IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.emp_no) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                       ' rec_SCR_assy.EMP_NO = ''' || rec_scr_assy.emp_no || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.sys_nc00009$ IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.sys_nc00009$) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                   ' rec_SCR_assy.SYS_NC00009$ = '''
                || rec_scr_assy.sys_nc00009$
                || '''';
          END IF;
       END IF;
    END;
    BEGIN
       IF rec_scr_assy.ename IS NOT NULL
       THEN
          IF LENGTH (rec_scr_assy.ename) > 8
          THEN
             :v_error_description :=
                   NVL (:v_error_description, '')
                || 'The Component 1 Part Number length should not be greater than 8| ';
          ELSE
             :v_upd_script :=
                         ' rec_SCR_assy.ENAME = ''' || rec_scr_assy.ename || '''';
          END IF;
       END IF;
    END;Regards,
    Friend

  • How to validate a field in Asset master?

    Hi,
    I have requirement like need to validate field ANLA-TYPBZ,
    Data uniquely passing to this field, i need to check whether data already exist or not while creating asset master using AS01 transaction.
    eg: suppose ANLA-TYPBZ = 12345' entry is there in the table, if i tried to post the data using AS01 as '12345', it should give error message.
    Thanks.

    hi,
    Follow the below steps:
    1. create a validation in GGB0 at node Assets - > Master Data
    2. create a routine in program where these validations were written. It is a copy from RGGBR000
    3. activate validation: append a record in transaction OACV
    http://wiki.sdn.sap.com/wiki/display/ERPFI/Validations
    Regards
    Alok
    Edited by: alpatr on Nov 21, 2011 8:12 AM

  • How to validate date columns in tabular forms?

    Hi,
    I have two date columns in a tabular form
    1.Start_date 2.End_date so here i need to validate the end_date as should not be lesser value than start_date column
    so any solution for this?

    Hi,
    use a validation of type "Function returning boolean" and the following code:
    IF to_date(:YOUR_END_DATE,'YYYY-MM-DD') < to_date(:YOUR_START_DATE,'YYYY-MM-DD') THEN RETURN FALSE;
    ELSE RETURN TRUE;
    END IF;The date format is of course in your choice.
    Hope this helps...
    Thanks
    Sandro

  • How to validate lov column

    Hi All,
    its very urgent.
    i have one page,page having lov,create and clear buttons.
    normally user select lov in list of values and click on the create button it ll navigate to next page.
    and also click on the clear button it ll clear the column.
    but my requirement is,in lov column user enter manually(this value not in list of values).
    and user click on the create button at that time page ll not move to next page i need to open list of values page.
    how to reslove this issue.
    please guide me
    Thanks in advance.
    Edited by: its urgent on Mar 13, 2012 6:51 AM

    If this value is false, then it pops up the LOV if the value is not valid.
    Not sure why you are not getting it. Try to play with other properties.
    Regards,
    Peddi

Maybe you are looking for

  • Cutting Off Songs

    Ok. So in this forum I recently learned about the Shared Music function of iTunes. so I tried it out, worked great. However, Front Row would switch to the next song with 5 seconds left! I mean, a song is playing, and with 5 seconds left, it would go

  • Chrome is not loading images

    Chrome is not loading images (especially in slideshows) only on my computer. The website works fine on other browsers and computers. I cleared the browsing data and cache, but I still have this problem. Any thoughts? Thanks!

  • Cash Flow Template Set Up

    I am trying to set up a cash flow template using GL Accounts (not cash flow line items). In making the Cash Flow Statement some items should show up as a negative and some should show as a positive Eg: Cash from receivables + and Cash to vendors - .

  • Cpu has 4 usb's on the rear. 2 are 2.0 and 2 are 3.0. how can you tell which one is which

    Just bought new HP PAV p7 1380t.  It has four USB's in the rear.  According to specs 2 are 2.0 and 2 are 3.0  How do you tell which one is which? This question was solved. View Solution.

  • How to execute a store procedure

    Hi Forum I have a store procedure with 4 variables in and 1 out, how to execute via sql this procedure for obtain the result in the out variable. Thanks and regards