Master-detail basics

The JD3 "Creating a Tree Control" example found under Help/Help Topics/Tree Control and other Master/Detail examples work completely when used with with the Oracle 8i DEPT & EMP tables but not with tab1 & tab2 tables below. When using DEPT & EMP, JD see the data in both Master and Detail tables; When using tab1 & tab2, JD see only the data in Master (tab1).
In contrast, SQL*PLUS sees the contents of both tab1 and tab2.
drop table tab2;
drop table tab1;
create table tab1
(col1 number(2) primary key,
col2 varchar2(18));
insert into tab1 values (1,'A');
insert into tab1 values (2,'B');
create table tab2
(col1 number(2) primary key,
col2 varchar2(18),
col3 number(2) references tab1(col1));
insert into tab2 values (1, 'X', 1);
insert into tab2 values (2, 'Y', 1);
How are tab1 and tab2 different from DEPT and EMP as far as JD is concerned? That is, how can I modify the the script above to create a tab1 and tab2 so that JD can see the contents of both.

Are you sure you have defined an
association (Join Condition) in the
JDeveloper wizard which generated this.
The Script which creates the default
Scott/Tiger schema (Scott.sql) has the
following:
DROP TABLE DEPT;
CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;
DROP TABLE EMP;
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
You may want to look at scott.sql for more details.
Sincerely,
Oracle JDeveloper Team http://technet.oracle.com

Similar Messages

  • OBIEE 11g:  Inconsistencies with Master-Detail events and Navigate to BI

    Hi everyone,
    I'm getting some pretty annoying inconsistencies with the Navigate to BI Content action as well as the Master-Detail events. Basically the main issue I get is that 90% of the time, the click does nothing.
    It's a pretty simple setup, I am setting up bulb gauges to act like a fancy column selector. The bulb gauges are setup to pivot based on a Metric Type column. The goal is that if you click on "Metric 1" bulb a trend report should refresh to show Metric 1. If you click on the "Metric 2" bulb, the same trend report will show that metric.
    Here's how I implemented it:
    Dashboard Tab A -- Uses Navigate to BI Content
    1) I have a prompt on Fiscal month in dashboard tab A.
    2) I created the bulb gauge and put it in dashboard tab A
    3) Setup the interaction on the bulb measure to navigate back to Dashboard Tab A.
    3) Prompted the trend on Metric Type column and put it in dashboard tab A.
    4) In theory, clicking on the bulb, should navigate back to the same tab and update the trend report appropriately
    5) In reality, nothing happens.
    6) The only way I can get the navigate to work is if I first change the value in the fiscal month prompt and click Go. Then I click on the bulb and the navigation will work ONCE. After that it's broken again.
    Dashboard Tab B -- Use Master Detail -Events
    1) Pretty much same situation as dashboard A, but instead of navigate to BI Content, I use the master-detail events.
    2) Pretty much the same results. I cannot get it to consistently work, in fact the trick with the filter didn't do anything.
    3) One thing I tried was cleared my browser history completely (Mozilla Firefox) and then launched the page. It work for about 5 clicks and then stopped.
    Either way, neither of these are working properly for me.
    Has anyone else had these issues?
    -=Joe
    Has anyone else had an issue with this?

    So someone explained to me that master-detail events only occur within a single report. They cannot be used to communicate across two different reports.
    That is significantly less useful than I originally thought. I honestly that it was a method of communication for one report to update other target reports that are all listening on the same channel. That would have been a powerful feature. A single report refreshing other views in the same report is still useful, but not as much.
    That being said, I still don't understand what the heck is going on with the navigate to BI content feature. I've been testing it out. It works with pivot tables and regular tables. But the moment I add a graph, gauge or even a "Filter" view into the dashboard page, the click stops working. Really really strange stuff.

  • Creating a new row in a master detail VO relation and its consequences.

    Hi,
    I'm currently facing a lot of problems which make me doubt if my perception about the whole ADF entity-view object mechanism is right.
    I have a page which displays data from a master detail VO relation (master offer - detail officeinfo). I also have a small dialog LOV window which makes it possible for me to select an office to match up with the current offer... Both the office LOV and the officeInfo detail use the same Office entity object.
    This worked perfectly fine until I wanted to add create NEW offers. I created my own insert method which basically performs a createRow on the master VO and inserts the newly created row in this VO. On a sidenote, I also fill out some default data read from a property file, which is why I decided to implement my own insert method in the first place.
    Initially, the problem was that the inputText fields of the detail VO (OfficeInfo) were not displayed at all. I imagined that I also had to perform the create and insert methods on the detail VO and indeed, from that point on all inputText fields were displayed and my page was ready for input.
    Yet today, I notice that in my Office LOV which is based on the same entity as the one my detail OfficeInfo VO uses, this newly created row is ALSO visible. To me this is quite unwanted and surprising behavior. I did not expect the row already to be visible in the LOV, since basically it's just an empty row ready for input...
    Am I perceiving things wrong? Or anyone has a nice solution to fix this?
    Thanks,
    Douglas

    Hi Douglas,
    It is happening because you have created an updateable office LOV which is based on same entity object used to save your newly created records.
    Use readonly LOV based on plsql query in your page and you can keep rest of the thing as it is.
    I think it will solve your problem.
    Cheers,
    Suyog

  • Master/detail/detail

    using jsf/adf bc. I've got a jspx which needs to display data from a master/detail/detail setup. In a 'create' mode, i'm programmatically handling the create/insert stuff for the new master and detail rows. I'll try to explain my problem using a Departments/Employees/EmployeeAddresses example.
    I've created a view link between Departments and Employees. I've created a view link between Employees and EmployeeAddresses. These have all been added to the active data model so that it looks like this:
    DepartmentView
    -Employees via Employees1
    -EmployeeAddresses via EmployeeAddresses1
    The code i use to create/insert the master and subsequent detail rows is as follows:
    //create master (department) row
    ViewObjectImpl vo = getDepartmentView();
    Row departmentRow = vo.createRow();
    vo.insertRow(departmentRow);
    //create the detail (Employees) row to be associated with its master (Department)
    ViewObjectImpl employeesVO = getEmployees();
    Row newEmployeeRow = employeesVO.createRow();
    employeesVO.insertRow(newEmployeeRow);
    //create the detail/detail (EmployeeAddresses) row to be associated with its master (Employees)
    ViewObjectImpl employeeAddressVO = getEmployeeAddresses();
    Row newEmployeeAddressRow = employeeAddressVO.createRow();
    employeeAddressVO.insertRow(newEmployeeAddressRow);
    The problem seems to be with the last level detail row, the one for EmployeeAddresses. creating in this fashion doesn't seem to associate the new EmployeeAddress row to it's master, Employees. Although when the page is rendered, i can see that new rows have indeed been created/inserted for each of these view objects. After filling in valid values and committing, i get the JBO-27014 (Attribute is required) error for each attribute in the EmployeeAddresses table. So, it's as if this EmployeeAddress row that was created is not tied in with the Employees row, which is in turn tied in to the Department row.
    Note: if i remove the create/insert code for this last detail row (EmployeeAddress) and simply have a basic master/detail setup between Department and Employee, everything works great when i create new rows this way and save. It seems that my problem stems from the fact that i'm adding another detail level onto my master/detail setup. Is there something different i should be doing?

    Hi,
    Thanks guys for your response.. i did it myself following way..
    created 2 view links. having same source.
    added both vos to same source in application module it self.
    Regards,
    Santosh.

  • Master / Details Regions with yui Calendar

    I have a Calendar of Events that I need to display.  I have put a yui Calendar in my Master Region, and need it to control the Details Region.  I can get the Details Region to show a single event per day.
    Is there a way to let the Details Region show multiple Events if they are scheduled on the same date?
    I do not have access to an external web server to post my page to, but here is the code to the Master/Details Region on my site:
    <div id="sidebar2">
        <div id="yuicalendar1"></div>
    <script type="text/javascript">
    // BeginWebWidget YUI_Calendar: yuicalendar1   (function() {
        var cn = document.body.className.toString();
        if (cn.indexOf('yui-skin-sam') == -1) {
          document.body.className += " yui-skin-sam";
      })();  var inityuicalendar1 = function() {
        var yuicalendar1 = new YAHOO.widget.Calendar("yuicalendar1");    // The following event subscribers demonstrate how to handle
        // YUI Calendar events, specifically when a date cell is
        // selected and when it is unselected.
        // See: http://developer.yahoo.com/yui/calendar/ for more
        // information on the YUI Calendar's configurations and
        // events.
        // The YUI Calendar API cheatsheet can be found at:
        // http://yuiblog.com/assets/pdf/cheatsheets/calendar.pdf
        //--- begin event subscribers ---//
        yuicalendar1.selectEvent.subscribe(selectHandler, yuicalendar1, true);
        yuicalendar1.deselectEvent.subscribe(deselectHandler, yuicalendar1, true);
        //--- end event subscribers ---//
    yuicalendar1.cfg.setProperty("title", "Calendar of Events", false);    yuicalendar1.render();
      }  function selectHandler(event, data) {
      // The JavaScript function subscribed to yuicalendar1.  It is called when
      // a date cell is selected.
      // alert(event) will show an event type of "Select".
      // alert(data) will show the selected date as [year, month, date].
      var formattedDateString = data[0][0][1] + "/" + data[0][0][2] + "/" + data[0][0][0];
      var r = dsCalendar.findRowsWithColumnValues({"Date": formattedDateString }, true);
      var region = Spry.Data.getRegion("classDetail");
      if(r){
       dsCalendar.setCurrentRow(r.ds_RowID);
       region.setState("showClass", true);
       } else {
        region.setState("ready", true);
      };  function deselectHandler(event, data) {
      // The JavaScript function subscribed to yuicalendar1.  It is called when
      // a selected date cell is unselected.
      };      // Create the YUI Calendar when the HTML document is usable.
      YAHOO.util.Event.onDOMReady(inityuicalendar1);
    // EndWebWidget YUI_Calendar: yuicalendar1
    </script>
    <div spry:detailregion="dsCalendar" spry:setrow="dsCalendar" id="classDetail">
    <div spry:state="showClass">
    <table width="100%" border="0" cellpadding="1">
       <tr>
         <td colspan="2"><h4>{Class}</h4></td>
        </tr>
       <tr>
        <td colspan="2">{Description}</td>
        </tr>
       <tr>
         <td>{Location}</td>
         <td>{Date}</td>
       </tr>
    </table>
        </div>
        <div spry:state="ready">
    There are no classes on this date. Please select another date.
    </div></div>
      <!-- end #sidebar2 --></div>
    And, here is the code to my "schedule.htm" file:
    Class
    Logo
    Description
    Location
    Date
    Dreamweaver CS4 Intermediate
    Take your skills to the next level with this training.
    Austin, TX
    12/15/2008
    InDesign CS4 Advanced
    This class is for experienced users that want to go beyond the basics.
    Phoenix, AZ
    12/18/2008
    Flex CS4 Data Services
    Learn about Live Cycle Data Services in this training.
    Austin, TX
    12/19/2008
    Flash CS4 Rich Content Creation
    From beginning to intermediate, learn how to animate with the latest tools.
    Austin, TX
    12/30/2008
    Photoshop Advanced
    Experienced Photoshop users will learn how to use advanced tools for image manipulation.
    Phoenix, AZ
    12/20/2008
    Dreamweaver CS4 Intermediate
    Take your skills to the next level with this training.
    Austin, TX
    12/01/2008
    InDesign CS4 Advanced
    This class is for experienced users that want to go beyond the basics.
    Phoenix, AZ
    12/08/2008
    Flex CS4 Data Services
    Learn about Live Cycle Data Services in this training.
    Austin, TX
    12/25/2008
    Flash CS4 Rich Content Creation
    From beginning to intermediate, learn how to animate with the latest tools.
    Austin, TX
    12/26/2008
    Photoshop Advanced
    Experienced Photoshop users will learn how to use advanced tools for image manipulation.
    Phoenix, AZ
    8/21/2009
    Short Course
    Seminar where the engineers come together to discuss TxDOT.
    Austin, TX
    8/26/2009
    Long Course
    Around the cementary, down to the high school, and back.
    Wolfforth, TX
    8/21/2009
    No Class
    No classes on this date.
    n/a
    Notice on the schedule.htm file, there are some classes that have the same date.  I would like the Details region to show multiple classes based on the date.  Is that even possible?
    Thanks!

    @strick,
    Don't know if you got this sorted out already, but I'll add an answer since I looked here when trying to figure this out.
    I had the same problem.
    You can get this to do what you want in two steps:
    1.)  Just below the line in your code that reads
    var formattedDateString = data[0][0][1] + "/" + data[0][0][2] + "/" + data[0][0][0];
    add the following code:
    function myFilterFunc(dataSet, row, rowNumber)
    // Filter all rows with date = selected date
    if (row['Date'] == formattedDateString){
    return row;   }
    else {
    return null;}
    // Filter the data.
    dscalendar.filter(myFilterFunc);
    2.) Just after the line in your code that reads
    <table width="100%" border="0" cellpadding="1">
    add the following code:
    <tr spry:repeat="dscalendar">
    Ok, one last step for the code that you've listed here.  You should be able to get rid of all the <tr> tags except for the outermost ones.  So, it could
    look like this:
    <table width="100%" border="0" cellpadding="1">
       <tr spry:repeat="dscalendar">
        <td colspan="2"><h4>{Class}</h4></td>
        <td colspan="2">{Description}</td>
        <td>{Location}</td>
        <td>{Date}</td>
       </tr>
    </table>
    You can see a working example of this at http://www.coloradogreenline.com/YUISpryCalendar/sprytest6.html.  October 13, 2009 has more than one event scheduled.  This one doesn't display the data in table format, but you can still it working.
    Hope this helps.

  • Master Detail on same page

    Hi,
    I have a custom master detail requirement. The page is currently only for CREATE, no query requirement. There are 2 custom tables involved and a common column (process_id).
    When I only have the MASTER detail on the page (VO-EO) and save it is fine, saves to table1.
    Now I want to add the ability to save 1..* records in the detail table.
    So I navigate to page, enter the master data as above, tab down to the detail section and enter a number of fields (say 3 new rows of detail).
    What are the basic steps to go about this. I appreciate there is some information in the Dev guide but it is a bit complex for what I require I think.
    I am thinking (and currently tying).
    Create new EO for detail table
    Create new VO for detail
    Create an EO association (is this needed???)
    Create a View Link between master and detail.
    Associate the VO with the same AM as the master.
    Add a new table region to the form...
    Now this all works in that I can display above. What is required to allow me to save successfully after entering the data.
    This is an urgent request, so any help much appreciated.
    Robert

    PPR to the rescue!
    Try changing the singleSelection element to include your additional field in it's targets list. eg:
    <singleSelection
      model="${bindings.OtherView1Iterator}"
      text="Select and ">
      <primaryClientAction>
        <firePartialAction
             targets="_uixState MyOtherFantasticField"
             source="OtherView112"
             event="select"/>
      </primaryClientAction>
    </singleSelection>And you'll need to add an id to your field such as:
    <messageTextInput
      model="${bindings.blah}"
      id="MyOtherFantasticField"/>Hope this helps.
    CM.

  • Problem with primary key violation in master-detail screens

    Hi,
    I found a problem/bug in master-detail screens in which the PK of the detail table consist of the PK of the master table and an additional column. E.g. a manually entered sequence 'in parent'.
    I will use the following simple scenario to explain the problem (it's easy to reproduce):
    PROJECT table
    # id (PK)
    * name
    PROJECT REQUIREMENTS table
    # prj_id (PK)
    # sequence_id (PK)
    * description
    Just create the BC EO, VO and AM and set both display properties of the prj_id attribute of the project requirements VO to hidden.
    Create a new screen in the application structure file in which you can select a project (table-form layout) and display the details (table layout) on the same page.
    With this basic setup you can generate the app to enter, update and delete projects and their requirements.
    The problem occurs if you have a project with a least 1 requirements stored in the database and you try to enter a second requirement with an existing sequence_id within the project. This is an use case in which a end-user enters wrong data.
    So assume we have in the database:
    prj_id sequence_id description
    ====== =========== ===========
    1 1 req1
    and the end-user enters (prj_id is entered automatically as it's not displayed):
    1 1 req2 >> user should have enterd sequence_id 2...
    Step 1. If you try to save an error will be displayed:
    JBO-25013: Too many objects match the primary key oracle.jbo.Key[227300 1 ].
    And the sequnece_id is emptied automatically.
    Step 2. So the end-user re-enters the sequence_id but fills in 2 now and saves.
    Another error is displayed: JBO-27014 sequence_id in AppModule is required
    How strange? Everything is filled in already.
    Step 3. If you just hit save again (without changing anything) you got a transaction completed successfully.
    I checked the logfiles and noticed an exception during after executing step 2.
    oracle.jbo.AttrValException: JBO-27014: Attribute SequenceId in AppModule.ProjectRequirementsView2 is required     at oracle.jbo.AttrValException.<init>(AttrValException.java)     at oracle.jbo.server.JboMandatoryAttributesValidator.validate(JboMandatoryAttributesValidator.java)     at oracle.jbo.server.EntityDefImpl.validate(EntityDefImpl.java:2051)     at oracle.jbo.server.EntityImpl.validateEntity(EntityImpl.java:1373)     at mypackage1.ProjectRequirementsImpl.validateEntity(JwTekeningnummerImpl.java:273)     at oracle.jbo.server.EntityImpl.validate(EntityImpl.java:1508)     at oracle.jbo.server.EntityImpl.validateChildren(EntityImpl.java:1232)     at oracle.jbo.server.EntityImpl.validateEntity(EntityImpl.java:1339)     at oracle.jbo.server.EntityImpl.validate(EntityImpl.java:1508)     at oracle.jbo.server.DBTransactionImpl.validate(DBTransactionImpl.java:3965)     at oracle.adf.model.bc4j.DCJboDataControl.validate(DCJboDataControl.java:967)     at oracle.adf.model.binding.DCBindingContainer.validateInputValues(DCBindingContainer.java:1683)     at oracle.jheadstart.view.adfuix.JhsInitModelListener.validateInputValues(JhsInitModelListener.java:193)     at oracle.jheadstart.view.adfuix.JhsInitModelListener._doModelUpdate(JhsInitModelListener.java:166)     at oracle.jheadstart.view.adfuix.JhsInitModelListener.eventStarted(JhsInitModelListener.java:92)     at oracle.cabo.servlet.AbstractPageBroker._fireUIXRequestEvent(Unknown Source)     at oracle.cabo.servlet.AbstractPageBroker.handleRequest(Unknown Source)     at oracle.cabo.servlet.ui.BaseUIPageBroker.handleRequest(Unknown Source)     at oracle.adf.controller.struts.actions.StrutsUixLifecycle$NonRenderingPageBroker.handleRequest(StrutsUixLifecycle.java:325)     at oracle.cabo.servlet.PageBrokerHandler.handleRequest(Unknown Source)     at oracle.adf.controller.struts.actions.StrutsUixLifecycle._runUixController(StrutsUixLifecycle.java:215)     at oracle.adf.controller.struts.actions.StrutsUixLifecycle.processUpdateModel(StrutsUixLifecycle.java:106)     at oracle.jheadstart.controller.strutsadf.action.JhsStrutsUixLifecycle.processUpdateModel(JhsStrutsUixLifecycle.java:140)     at oracle.adf.controller.struts.actions.DataAction.processUpdateModel(DataAction.java:317)     at oracle.jheadstart.controller.strutsadf.action.JhsDataAction.processUpdateModel(JhsDataAction.java:622)     at oracle.adf.controller.struts.actions.DataAction.processUpdateModel(DataAction.java:508)     at oracle.adf.controller.lifecycle.PageLifecycle.handleLifecycle(PageLifecycle.java:112)     at oracle.adf.controller.struts.actions.StrutsUixLifecycle.handleLifecycle(StrutsUixLifecycle.java:70)     at oracle.adf.controller.struts.actions.DataAction.handleLifecycle(DataAction.java:223)     at oracle.jheadstart.controller.strutsadf.action.JhsDataAction.handleLifecycle(JhsDataAction.java:389)     at oracle.adf.controller.struts.actions.DataAction.execute(DataAction.java:155)     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1485)     at oracle.jheadstart.controller.strutsadf.JhsActionServlet.process(JhsActionServlet.java:127)     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:527)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:765)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)     at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)     at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)     at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)     at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:239)     at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)     at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:239)     at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)     at oracle.jheadstart.controller.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java)     at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:645)     at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)     at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)     at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)     at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)     at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)     at java.lang.Thread.run(Thread.java:534)
    This also explains why I got a error message within the application at step 2, but not an expected error message!
    From the logfile I can see something is going wrong in the oracle.jbo.server.EntityImpl.validateEntity method.
    To get more insight what was goning on I overridden the validateEntity method in my VO Impl class:
    protected void validateEntity()
    System.out.println("MARCEL>> sequenceId=" + getSequenceId());
    System.out.println("MARCEL>> description=" + getDescription());
    super.validateEntity();
    In step 1 the validateEntity is not called.
    In step 2 the sequeceId = null (and description = reg2)
    I expected the sequeceId to be 2 now as I entered this. Furthermore if I look at the (JhsActionServlet) request parameters in the log, I can see that the value of the sequenceId was 2. I guess something is going wrong at this point in converting the request parametes to the EO.
    In step 3 the sequeceId = 2 (as expected)
    Note that I'm using the evaluation copy version of JHeadstart 10.1.2.
    If this was patched in any later build, could you please tell which changes I have to make to the JHS sources to solve this problem.
    Regards,
    Marcel

    Marcel,
    I cannot reproduce this in version 10.1.2.2. We did not "fix" this, although changes in the runtime might have fixed this "silently". I suggest you upgrade to 10.1.2.2 and see whether you still get the error.
    Steven Davelaar,
    JHeadstart Team.

  • Master Detail Form Question

    I would like to create a master detail form that is essentially 2 tabular report regions. Is this possible?
    Basically I would like to have region A that shows all of the relevant information for higher level items (there are multiple of these higher level items). I would then like to have region B which would show me all of the lower level details for the higher level item that was selected in region A. Is there a way to read the row that you are on in region A and only show those related items in region B?
    Thank you!
    Amber

    Are you asking to create two tabular reports on one page (Reports that are editable), or do you just want two reports on one page (non editable) where you select a row in the first and the second displays the detail records of the selected row in the first, highlighting the the selected row in the first report?
    If you want the two editable reports, then the answer is no, you can only have one tabular form on a page.
    If you only want two reports, or perhaps the top report as a non editable report and the second as an editable report, then it is possible to do this.

  • Master/Detail form with modal edit

    I have a master/detail form that I generated using the wizard that I want to change to have a modal Edit button; i.e. the behavior I want is that the form view is initially read-only and you then have to click an Edit button to make the form editable.
    I figured out how to do this for the master row by making the edit button redirect back to the same page with the request set to 'EDIT' and then making all the page items read-only with a condition REQUEST <> 'EDIT'.
    I cannot find a good way to do this for the detail rows, which are actually a report with editable columns. The problem is that the 'Tabular Form Element' section of the 'Column Attributes' page does not have a read-only condition.
    The only work around I can come up with so far is to have a second read-only report region with the same SQL query and then display either the editable or non-editable report region conditionally depending on whether the request is EDIT. But this obviously not ideal (having same SQL in two places, etc.).
    If anyone can think of a better way to do this, I'd be grateful.
    HTML DB Team: Can you log the addition of a read-only condition attribute on editable report columns as an enhancement request?

    Simply add the lookup table to the FROM clause and join its PK with the FK in the master table in your query. That's basic SQL, and you definitely must get a good grasp of SQL to do more than very basic work in APEX.
    For a good example, please see http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/build_app.htm#BCEBJJGB
    While you're at it, read and implement the tasks outlined in the 2 Day + Application Express Developer's Guide - http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/toc.htm. After that, read the "Oracle Application Express 3.0-- Building a Functional Application" OBE in http://www.oracle.com/technology/obe/apex/obe30/apexdev30.htm - great stuff.
    Georger

  • Master-Detail Form - implementing some thing like Post-Query trigger

    Hi all,
    I am struggling to implement an eqivalent of a post-query trigger in Oracle Forms. Please bear with me as I am trying to explain in detail what the problem is.
    Here is my situation.
    I have three tables EMP, DEPT and LOCATION. I created a Master/Table pages on EMP and DEPT.
    Basic relationships.
    Each LOCATION has one or more DEPTs; Each DEPT is at one and only one LOCATION.
    Each DEPT has one ore more EMPs; Each EMP is assigned to only and only DEPT.
    Not getting too complicated, here are the table layouts:
    LOCATION:
    ID number(10,0) not null,
    NAME varchar2(20) not null
    DEPT
    ID number(10,0) not null,
    NAME varchar2(20) not null,
    LOC_ID number (10,0) not null foreign key from LOCATION
    EMP
    ID number(10,0) not null,
    NAME varchar2(20) not null,
    DEPT_ID number (10,0) not null foreign key from DEPT
    Assume I have all the constraints, BIU triggers, sequences defined properly.
    I am using the APEX page wizard to create a Master/Detail Form on DEPT and EMP. The first page is the Master Report on DEPT. I want to display the Location Name on this page also. Because the Master Report allows
    you to change the query, I was able to add the Location Name as part of the
    query. This was very simple.
    Select a.name "Department_Name",
    b.name "Location"
    from dept a, location b
    where a.loc_id = b.id
    Moving on, In the Master Detail Form, I would like to get the Location Name as part of the first Region (Dept Region).
    In this region, I would like to include the Location Name also. So my first region on the Master Detail form includes:
    Dept Id: ________
    Dept Name: _______
    Location Name: __________
    As Region are automatically populated using using a Fetch Row from EMP table (Automated Row Fetch) on an After Header process point, I don't have a way of including the Location as part of query. So I created a Region level Item called Location Name, made it Display only.
    In the old SQL*Forms, or Oracle Forms days, I used to use a Post-Query trigger, or Post-Change trigger to fire on the Loc_Id column to populate the Location Name. Simple fetch like:
    Select name
    into :P80_location_name
    from location
    where loc_id = :P80_loc_id
    However, I am struggling to implement some thing simple like this in APEX. Tried creating a processes, computatations etc, but nothing is working.
    I have seen some previous responses to fetching values from a foreign table
    using a button or AJAX script, but this should be very basic. What am I
    missing here?
    Appreciate any insights.
    Thanks.
    John

    Hi John,
    I'm not too familiar with the post-query triggers in Oracle Forms, but the use of a List of Values (LOV) on your LOCATION table might do the trick for you. If you create a dynamic LOV based on your LOCATIONS table, it can then be referenced by the LOC_ID item on the Master-Detail page, to display the Location Name. You could try doing the following:
    1. Create a new dynamic LOV, LOCATIONS, using a query similar to the following:
    select Name d, ID r
    from LOCATION
    order by 1
    2. Edit the "Create" button on the Master report page, and in the "Optional URL Redirect" section set "Request" to CREATE. Click Apply Changes, to save the setting.
    3. Edit the LOC_ID item on your Master-Detail page, and set the following:
    * in the "Name" region change the "Display As" setting to Select List
    * in the "Label" region change the Label to Location Name.
    * in the "List of Values" region set the "Named LOV" to LOCATIONS
    * in the "Read Only" section, set the condition to Request != Expression 1, and set Expression 1 to CREATE.
    Click Apply Changes to save the settings.
    When you run the pages now, the Location Name field will appear as Read-Only when editing a selected Master row. The item will appear as a Select List when the user clicks "Create" on the Master page, to create a new Master row.
    I hope this helps.
    Regards,
    Hilary

  • Master Detail Form - Update Statement for Column in the Detail Section

    Hello,
    I've posted a demo application to apex.oracle.com
    Application# 49298
    Application Name: Street_Inventory
    Basically, on page 3 I have a Master Detail Form. In the Detail section, I want the value of On_hand to save to table ITEMS. Here's my code below.
    SOURCE
    select
    "CONSUME_DETAIL"."CONSUME_DETAIL_ID",
    "CONSUME_DETAIL"."CONSUME_HEADER_ID",
    "CONSUME_DETAIL"."ITEM_ID",
    "CONSUME_DETAIL"."CONSUMED_QUANTITY",
    ("ITEMS"."ON_HAND" - "CONSUME_DETAIL"."CONSUMED_QUANTITY") as "ON_HAND"
    from "CONSUME_DETAIL",
    "ITEMS"
    where "CONSUME_HEADER_ID" = :P3_CONSUME_HEADER_ID
    and "CONSUME_DETAIL"."ITEM_ID"="ITEMS"."ITEM_ID"
    UPDATE INVENTORY PROCESS
    UPDATE ITEMS
    SET ON_HAND = :P3_ON_HAND - :P3_CONSUMED_QUANTITY
    WHERE ITEM_ID = (select     ITEM_ID
    from     CONSUME_DETAIL
    where CONSUME_DETAIL_ID = :P3_CONSUME_DETAIL_ID);
    My code isn't working. What am I doing wrong?

    WReed,
    The first thing I see "off the bat" is that you don't have items named P3_ON_HAND and P3_CONSUMED_QUANTITY which are referenced in your code. Although it's possible to do what you want with just SQL, I updated your code with a little PL/SQL to make it easier to understand...
    As you'll see the problem now is that the design/db model is not quite right as your getting a too many rows error.
    Regards,
    Dan
    http://danielmcghan.us
    http://sourceforge.net/projects/tapigen

  • Master-Detail Form in Form6i Developer

    First of All Hi to all Respected Gurus.
    I am stuck in a very basic element and that is Primary-Key/Foreign-Key relation. I am trying to create a Master-Detail Form based on following structure. Records in Master Table and Child Table are saving (inserting) but Primary Key of Master Table is not saving (inserting) as "Foreign Key" in Detail Table.
    Here is Table Structure(s)
    Master Table Name : MGTC_EDM
    CREATE TABLE MGTC_EDM
    EDM_ID NUMBER, -- PRIMARY KEY
    BILLING_DATE DATE,
    CONSTRAINT PK_MGTCEDM_EDMID PRIMARY KEY (EDM_ID)
    CHILD TABLE : MGTC_EDD
    CREATE TABLE MGTC_EDD
    EDD_ID NUMBER; -- PRIMARY KEY
    EDM_ID NUMBER; -- FOREIGN KEY RELATION WITH MGTC_EDM
    MEM_ID NUMBER;
    AMOUNT NUMBER;
    CONSTRAINT PK_MGTCEDD_EDDID PRIMARY KEY (EDD_ID),
    CONSTRAINT FK_MGTCEDD_EDMID FOREIGN KEY (EDM_ID)
    REFERENCES MGTC_EDM (EDM_ID)
    TRIGGER OF "BEFORE_INSERT" IS APPLIED ON BOTH TABLES TO AUTO-POPULATE INCREMENTAL ID
    IN FORM6I, I'VE APPLIED A 'KEY_NEXT_ITEM' TRIGGER ON BILLING_DATE FIELD OF MASTER TABLE TO COMMIT THE RECORD AND TO MOVE THE CURSOR TOWARDS DETAIL BLOCK
    AND THERE ARE NO MORE TRIGGERS IN THE FORM.
    AS CURSOR MOVES TOWARDS DETAIL BLOCK, RECORD IN MASTER TABLE SAVES (COMMITTED) ON AUTO AND WHEN I PRESS "SAVE" BUTTON TO SAVE THE RECORD IN CHILD FORM DETAIL TABLE ALSO COMMITTED
    BUT WHEN I PRESS F8 TO EXECUTE THE QUERY ONLY MASTER RECORD SHOWS AND NO RECORD SHOWS IN THE DETAIL TABLE. WHEN I CHECKED IN DETAIL TABLE IN TOAD, IT FOUND THAT PRIMARY KEY OF MASTER TABLE (EDM_ID) NOT SAVED IN DETAIL TABLE.
    PLEASE HELP.

    Dear Mr. O.Developer, Many thanks for your reply.
    Yes, I've created relationship. Relationship exist in Master_Block and below is the detail
    Relationship Name = MGTC_EDM_MGT_EDD
    Relation Type = Join
    Detail Data Block = MGTC_EDD
    Join Condition = MGTC_EDD.EDM_ID = MGTC_EDM.EDM_ID
    Delete Record Behavior = Non Isolated
    Prevent Masterless Operations = No
    Deferred = No
    Automatic Query = No

  • Master Detail Form with Report - Referring a column in another table

    I have master detail form with a report option. The master table has a column that also references a look up table.
    When the report is displayed the lookup column id is displayed. Rather I want to get the look-up value from a lookup table
    and display in the report.
    When I see the report region Query definition , it just has the columns to add/remove only from the master table.
    Could you pls help me with this regard.
    Eg :
    Dept Table
    dept_id
    dept_name
    location_id
    Employee Table
    employee_id
    employee_name
    dept_id
    location
    location_id_id
    location_name
    Master is Dept, Detail is dept and lookup table is location.

    Simply add the lookup table to the FROM clause and join its PK with the FK in the master table in your query. That's basic SQL, and you definitely must get a good grasp of SQL to do more than very basic work in APEX.
    For a good example, please see http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/build_app.htm#BCEBJJGB
    While you're at it, read and implement the tasks outlined in the 2 Day + Application Express Developer's Guide - http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/toc.htm. After that, read the "Oracle Application Express 3.0-- Building a Functional Application" OBE in http://www.oracle.com/technology/obe/apex/obe30/apexdev30.htm - great stuff.
    Georger

  • Master / details pages set in a .htaccess protected directory

    Hi
    I am using Dreamweaver CS4 functionality to create a Master/Details page set. I have done this many times before without a problem, however, i am now trying to create the master / detail page set in the members area of a web site. The directory that contains both the master and the details page is .htaccess protected which means that the master page works fine but the details do not get passed to the details page. The details page remains blank where the echo statements should be. If i copy  the exact same master and detail pages and then paste them in to an unprotected directory the pages work fine and the details are passed from the master to the details page without a problem.
    I have been unable to find any information on this so any help would be gratefully received.

    I'm not using secure access (https). I started with the most basic configuration, standard http: on port 80, etc. The configuration works perfectly fine when tested on my home PC. The problem seems to be in Safari on the iphone it prompts me for a login, and accepts it.. then it fires up the media/movie player and I'm guessing it's not passing the authentication/credentials/whatever to the movie player. When the media tries to play, it notes it's an access controlled file and just quits out. The movie player doesnt seem to allow asking of login/password info. Thoughts??

  • Procedure in master/detail form

    NOTE: The basic purpose of this procedure is to return records from another table that match records that were just inserted in the detail table.
    My problem is that this procedure processes one set of values at a time. I would like to adapt this procedure to execute after processing a master/detail form that inserts multiple detail records. How and where in the form should I call this procedure to process all the detail records?
    INDT IN VARCHAR2,
    PRIM_REPORTER IN VARCHAR2,
    SEC_REPORTER IN VARCHAR2 DEFAULT NULL)
    as
    begin
    DECLARE
    cursor rpt_cursor is
    SELECT
    F_NAME,
    L_NAME,
    INDT,
    CO_DEFT,
    REPORTER,
    PROCD,
    PROCD_DATES
    FROM NYSPCR.RETURNED_TRANSCRIPTS
    WHERE NYSPCR.RETURNED_TRANSCRIPTS.INDT=INDT
    AND REPORTER=PRIM_REPORTER
    OR REPORTER=SEC_REPORTER;
    rpt_record rpt_cursor%ROWTYPE;
    BEGIN
    OPEN rpt_cursor;
    LOOP
    fetch rpt_cursor into rpt_record;
    exit when rpt_cursor%NOTFOUND;
    htp.p('Our records show that one or more of the transcripts you have just requested may already exist.<P>It appears that co-defendants '||rpt_record.F_NAME||' '|| rpt_record.L_NAME||' or '||rpt_record.CO_DEFT||' already had these minutes transcribed by Court Reporter '||rpt_record.REPORTER||' for this '||rpt_record.PROCD||'proceeding on these dates '||rpt_record.PROCD_DATES||'.<P> Get up off your ass and look for it!');
    end loop;
    end;
    end;

    UPDATE!!!!! I tried to amend the code to loop thru the detail records. Here it goes..feel free to jump in at any time.lol..
    // Set local variables to receive parameters being passed
    //from detail records
    declare
    INDTS VARCHAR2(15);
    PRIM_REPORTERS VARCHAR2(35);
    SEC_REPORTERS VARCHAR2(35);
    p_session portal30.wwa_api_module_session;
    i integer;
    rpt_record rpt_cursor%ROWTYPE;
    begin
    p_session := portal30.wwa_api_module_session.create_session
    ( p_module_id => 51078584518,
    p_version => 1
         i:=1;
    //Print first line of alert.
    htp.p('Our records show that one or more of the transcripts you have just requested may already exist.');
    //Loop through all details records to find any matches as long as INDTS is not null.
    while indts is not null LOOP
         INDTs:= p_session.get_value_as_varchar2
    p_block_name => 'DETAIL_BLOCK',
    p_attribute_name => 'A_INDT',
    p_index => i
    PRIM_REPORTERs:=p_session.get_value_as_varchar2
    p_block_name => 'DETAIL_BLOCK',
    p_attribute_name => 'A_PRIM_REPORTER',
    p_index =>i
         SEC_REPORTERs := p_session.get_value_as_varchar2
    p_block_name => 'DETAIL_BLOCK',
    p_attribute_name => 'A_SEC_REPORTER',
    p_index =>i
    cursor rpt_cursor is
    SELECT
    F_NAME,
    L_NAME,
    INDT,
    CO_DEFT,
    REPORTER,
    PROCD,
    PROCD_DATES
    FROM NYSPCR.RETURNED_TRANSCRIPTS
    WHERE NYSPCR.RETURNED_TRANSCRIPTS.INDT=INDTs
    AND REPORTER=PRIM_REPORTERs
    OR REPORTER=SEC_REPORTERs;
    OPEN rpt_cursor;
    LOOP
    fetch rpt_cursor into rpt_record;
    exit when rpt_cursor%NOTFOUND;<P>
    htp.p('It appears that co-defendants '||rpt_record.F_NAME||' '|| rpt_record.L_NAME||' or '||rpt_record.CO_DEFT||' already had these minutes transcribed by Court Reporter '||rpt_record.REPORTER||' for this '||rpt_record.PROCD||'proceeding on these date(s) '||rpt_record.PROCD_DATES||'.');
    i:=i+1;
    end loop;
    end;

Maybe you are looking for