Form based on a denormalized table

I have a denormalized table. And the form has 2 data blocks, header and detail.
The header is a 'From clause query', which is actually distinct of a few columns. Detail is direct to the table.
Understanding that it is not possible to update the header directly, is there any method that can simulate a header-detail relationship. That is when user change something on the header, that change will automatically propagate to the related detail records.
Thanks in advance!

Hello,
Well, the task can be achieve by following the below steps. But i would like to know the need of this task.
Anyway if you need it badly here is a way. Not very pretty. But you can use.
1. Go to the property pallet of From Clause Query block and set the DML TARGET TYPE to NONE and DML TARGET NAME to blank (do not specify any value).
2. On From Clause Query block which is header create two trigger (block-level) called ON-UPDATE and ON-LOCK and write the code inside like this.
NULL;3. In last create one trigger on form-level called KEY-COMMIT and use the code like this...
IF :header_block.customer_id!=:detail_block.customer_id THEN
  UPDATE table_name
  SET customer_id = :header.customer_id
  WHERE order_number = :header_block.order_number
  AND customer_id = :detail_block.customer_id;
END IF;
COMMIT;So, while updating the header block and when you will press save it will execute this update statement which is on form-level trigger. And will update the data in actual table which is detail table. So, no need of query again. It will work as it is. And if you want to update the detail table as normal form's practice you can also it will work as normal behaviour and will not execute that update statement.
Keep the relation between blocks as it is.
In addition if you don't use form then through backend it is very easy to create one view using the query which you are using for block and then use INSTEAD OF trigger to update the actual table.
-Ammad

Similar Messages

  • Multi row portal form based on a single table or view

    Hi,
    I have to create a multi row (tabular format) portal form based on a single table. Please help.
    Thanks

    Hi,
    A workaround to create multi row for based on single table has been discussed in the following :
    http://forums.oracle.com/forums/message.jsp?id=469778
    Thanks
    Vineet

  • How to create a Form based on a dynamic table?

    Hello,
    The Select statement below creates a table based on a string (string is a value of an item):
    select * from table (pkg_util.fn_get_table (:P18_VALUE))I need to create a region on a page with a Form based on this table.
    I was able to create a Report, but not a Form.
    I need to create a Form, which would return updated string to the page item.
    How can I solve this please?

    Hello Gentlemen,
    I have created a Tabular Form, based on APEX_ITEM API, as you suggested, here is the code below:
    SELECT apex_item.checkbox (30,
                               CATALOG_ID,
                               'onclick="highlight_row(this,' || ROWNUM || ')"',
                               NULL,
                               'f30_' || LPAD (ROWNUM, 4, '0')
                              ) delete_checkbox,
           CATALOG_ID,
              apex_item.hidden (31, CATALOG_ID)
           || apex_item.text (32,
                              LANG,
                              80,
                              100,
                              'style="width:100px"',
                              'f32_' || LPAD (ROWNUM, 4, '0')
           || apex_item.hidden (33, wwv_flow_item.md5 (LANG, DESCRIPTION)) LANG,
           apex_item.text (34,
                           DESCRIPTION,
                           80,
                           100,
                           'style="width:255px"',
                           'f34_' || LPAD (ROWNUM, 4, '0')
                          ) DESCRIPTION
      FROM V_SYSTEM_CATALOGS_PR
    UNION ALL
    SELECT     apex_item.checkbox
                              (30,
                               TO_NUMBER(9900 + LEVEL),
                               'onclick="highlight_row(this,' || ROWNUM || ')"',
                               NULL,
                               'f30_' || TO_NUMBER (9900 + LEVEL)
                              ) delete_checkbox,
               NULL,
                  apex_item.hidden (31, NULL)
               || apex_item.text (32,
                                  NULL,
                                  80,
                                  100,
                                  'style="width:100px"',
                                  'f32_' || TO_NUMBER (9900 + LEVEL)
               || apex_item.hidden (33, NULL) LANG,
               apex_item.text
                                               (34,
                                                NULL,
                                                80,
                                                100,
                                                'style="width:255px" '  ,
                                                'f34_'
                                                || TO_NUMBER (9900 + LEVEL)
                                               ) DESCRIPTION
          FROM DUAL
         WHERE :P180_TEMP = 'ADD_ROWS1'
    CONNECT BY LEVEL <= 1however, the update process doe not work on that form:
    DECLARE
      lc_string VARCHAR2(4000);
    BEGIN
      FOR i IN 1..APEX_APPLICATION.G_f*30*.COUNT
      LOOP
          lc_string := lc_string|| '[' ||APEX_APPLICATION.G_f*32*(i) || '|' || APEX_APPLICATION.G_f*34*(i) || ']';
      END LOOP;
      --Database processing using the concatenated string here
    END;Can you please see what's wrong with the code?
    Also, I tried to set a temp. item with the value, to see if the process returns something, like that:
    DECLARE
      lc_string VARCHAR2(4000);
    BEGIN
      FOR i IN 1..APEX_APPLICATION.G_f*30*.COUNT
      LOOP
          lc_string := lc_string|| '[' ||APEX_APPLICATION.G_f*32*(i) || '|' || APEX_APPLICATION.G_f*34*(i) || ']';
      END LOOP;
         :p18_temp := lc_string;
    END;and it did not work.
    Also, it is the second Tabular Form on this page. The first one is created using wizard, and it works perfect, with the same update process:
    DECLARE
      lc_string VARCHAR2(4000);
    BEGIN
      FOR i IN 1..APEX_APPLICATION.G_f*01*.COUNT
      LOOP
          lc_string := lc_string|| '[' ||APEX_APPLICATION.G_f*03*(i) || '|' || APEX_APPLICATION.G_f*04*(i) || ']';
      END LOOP;
      --Database processing using the concatenated string here
    END;Also, both forms are opening in a modal pop-up dialog window.
    I use a Dialog Region plug-in for that.
    May be this is causing a problem?
    But still, the first form works fine!?

  • APEX  How do I create a Form based on a Database Table from other schema

    My APEX schema is WISEXP. I have a database table that resides in WISDW schema on the same database. I want to create Tabular form based on this table.
    I am not able to create a FORM based on the table from WISDW schema. I am able to create a FORM based on SQL though from this table in WISDW schema - but it does not do any action on Update/Insert rows.
    Appropriate Synonyms and grants are created. Is there a limitation or am I missing something? Please advise.
    thanks
    Rupen

    If Rupen is using 2.2 or 2.2.1, it is likely he is running into the bug described here: Re: Workspace to Schema Assignments
    In that case, it may be a necessary and sufficient workaround to assign the foreign schema to the workspace.
    Scott
    Message was edited by:
    sspadafo

  • Forms based on  PL/SQL table/ref_cursor

    I fail to tetrieve selected records from a stored package.procedure(which I have created as a ref_cursor to PL/SQL table and specifying a criteria in the forms where clause)
    Please any one suggest ?

    I suggest you read the [url http://forums.oracle.com/forums/help.jspa]FAQ and [url http://blogs.oracle.com/shay/2007/03/02]The 10 Commandments on OTN Forum Posting
    Forms version and an error message would help us to help you, we don't have crystal balls, we cannot guess.

  • How to create Form based on a table to display multiple record

    Hello All,
    Would somebody please tell me how to create a Form based on a single table ,
    to view and insert multi record based on a single table.In other words I would like
    to have a form as shown below ,where the users can Insert,update,delete,query and so on
    Item Id PArt Number List Price
    100 Item-1 $120.oo
    200 Item-2 $150.00
    300 Item-3 $50.00
    I know I can do it as Single Record block using Tabular Format,but multiple record ?????
    Thanks in Anticipation
    Babu

    Try this method,
    1. Creat a Master Detail Form (Custom Layout and not tabular)
    and in the master block select one field.
    2. In the HTML layout for master remove the reference for
    that field(so that nothing will appear in the master block
    of the form).
    3. Before the update (in the Pl/SQL event handler select the 'Save' event and write the following code to avoid updating master block).
    p_session.set_value(p_block_name => 'MASTER_BLOCK',
    p_attribute_name => 'MASTER_ACTION',
    p_value => 'None');
    doSave;
    For eg, let's say
    Master is from 'Dept' table and Detail is from 'Emp' table(with join condition Dept.dept_id = Emp.dept_id). In the master remove everything except dept_id field and in the HTML layout for master remove the reference of the dept_id field(you cannot remove this field physically from the master layout). Now the form will look like multirow form rather than master detail form but only problem with this workaround is 'Detail Action' will be present in the detail block.
    I hope this will help you.
    Thanks
    -Krishnamurthy

  • 2 manually created tabular form on the same page based on 2 different table

    Hi, I followed the how to document on manually creating tabular form, including one extra row.
    The first form I created works fine, but when I attempt to create the second tabular form based on a different table on the same page, I get the following error message when I try to create the query:
    ORA-04045: errors during recompilation/revalidation of PUBLIC.X ORA-00980: synonym translation is no longer valid
    The logic behind both tabular forms I am using is the same, except that for the second query, I use 100 instead of 1, 300 instead of 3, etc:
    select htmldb_item.hidden(1,empno) empno,
    ename,
    htmldb_item.select_list_from_query(3,job,'select distinct job, job from emp') job,
    htmldb_item.popupkey_from_query(4,mgr,'select ename, empno from emp',10) mgr,
    wwv_flow_item.date_popup(6,null,hiredate) hiredate,
    htmldb_item.text(7,sal,10) sal,
    htmldb_item.text(8,comm,10) comm,
    htmldb_item.select_list_from_query(9,deptno,'select dname, deptno from dept') deptno
    from emp
    Can anybody help?
    Thanks a lot

    Hi,
    If by "100 instead of 1" you mean the column numbers, then this won't work as you can only have a maximum of 50.
    Andy

  • Error when updating data in a form based in a view

    Hi:
    i have 5 tables for enterprise data (telephone, fax and so on). i want to create a form based in all those tables, so i create a view over all the 5 tables and create the form. but when calling the portlet and trying to alter (update, insert, etc.) the data i get this error. Seems that i missed to do something with my tables but i don't know what does that non key-preserved thing mean.The error is the following:
    Error: Cannot link to the module: 1901051912 ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-16062)
    An unexpected error occurred: ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-16016)
    An unexpected error occurred: ORA-01445: cannot select ROWID from a join view without a key-preserved table-SELECT ROWID, IDBASE,NOMBRE,NOMBRE_FISCAL,NOTAS,BAJA,RETENCION,PREVISION_PAGOS,IVA,CIF,ID_DIRECCION,IDBASE_DIRECCION,CALLE,NUMERO,PISO,MANO,CODIGO_POSTAL,CIUDAD,ID_TELEFONO_EMP,IDBASE_TELEMP,TELEFONO_EMPRESA,ID_FAX_,IDBASE_FAXEMP,FAX,ID_EMAIL_EMP,IDBASE_EMAILEMP,E_MAIL FROM PTSS.A_VISTA where IDBASE=1 ORDER BY ROWID ASC (WWV-16016)
    Any help will be welcomed.
    Thanks in advance.
    Regards. Urko.

    You cannot update, insert, or delete records from a form that's based on a view. That is because rowid is not in the view, so it cannot lock records.

  • Master/Detail Form based on view(s) - Bug?

    I made a master/detail form that is based on two views, and later master was a view and detail was a table. The form opens OK, but when I click query-button, the following error appears on the screen:
    An unexpected error occurred: ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-16016)
    An unexpected error occurred: ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-16016)
    When you create a form you are offered three different choices:
    1. Form based on table or view
    Build a form based on a database table or view.
    2. Master-detail form
    Build a master-detail form based on two tables or views. <---- ?????
    3. Form based on procedure
    Build a form based on a database stored procedure
    Is it at all possible to use views with master/detail?

    View should have a rowid. To create a rowid tables have to have foreign key relation. And also in where clause you should have PK-Field-Name=FK-Filed-Name statement.
    null

  • How to create a form based on table@databaselink

    I have created a database link under OracleXe to access an Oracle 9i and it works very well. I can manually access the tables that I like to see. Want to experiment to create a form under HTMLDB based on a table from another database that I have created DataLink to. When I go choose Create Application in HMTLDB and then select Form from page type under table or view I tried to do this tablename@databaselink but it seems it can not find the table this way. Any idea how to do this?
    Thanks

    Mike,
    As I am trying to test and learn more about htmldb I was trying to get some data from oracle 9i to oracleXe, create some forms, reports and etc. At first I tried to use views and forgot to add the primary key, got the error so I posted the message on the board.
    Then I did try out the “long way” creating tables with package and procedure and some other fun stuff to create an application which by the way it worked very well. Then I created some users and changed some password. When I tried again to run the application I start getting “invalid login credentials”. After many attempts finally I went home, as I was driving home I thought about something and at home I tried it.
    I did some testing and noticed if I create a user under admin say userA+passwordA then login with userA+passwordA, create a table and then create an app base on that table and then run the app, with userA+passwordA I can login and app works perfectly. Then I logged out and as admin logged in, changed the userA password to passwordB. I logged out and logged in with userA+passwordB and then when I tried to run the app I get the “invalid login credentials”, when I change the passwordB to passwordA the app will works again. This is suppose to be this way!
    Again thanks to all

  • Creating a search form based on a table.

    Hello,
    I'm currently trying to create a search form which performs a searchquery in values stored in a table in my database.
    The table is filled peoples names,lastnames ,telephonenumbers and departments.
    I can use the sample application to make a form based on the tableview but this returns a search textfield for every column in the table. I just want 1 searchfield/textfield to search on ALL columns at the same time and display the other fields as labels when returning the queryresults.
    I tried searching the forums for an explanation on how to build said form and I checked Metalink but I have yet to find one. Anyone out there willing to help me out?
    thanks in advance,
    Melvin K.

    Why not use an instr with your data in a bind variable in your where clause for the select?? Page 1 sets an item called P2_Parameter with your value string slightly modified ('12345','345632','645534534','3434344')
    Select a,b,c,d,e from some_table where INSTR(TO_CHAR(Lookup_column,'099999999'),:P2_Parameter)
    Maybe that will work? Its off the top of my head, but should get you what you want.. (But to agree with one of the other posters, it is a BAD Design..) I would try like an interactive report to allow them to enter in acct #'s or whatever these are and let them access the rows that way..
    Thank you,
    Tony Miller
    Webster, TX

  • How to add a new row in Tabular Form based on a table

    Hi
    I have tabular form based on a table.
    I want the table to have an empty row when there is no data
    in the table so that I can enter data directly.
    But right now whenever the page is launched, its showing a no data found message and I have to press the 'Add Row' button to enter data.
    Can anyone help me out on this?
    Thanks

    Hi Leo
    Your suggestion works fine in the APEX 2.1
    But in 3.0.1 it gives this error :
    Error in add row internal routine: ORA-01476: divisor is equal to zero
    Error Unable to add rows.
    I am not sure why this happens.

  • Exception Handling for a Form Based on a Table

    I created a form based on a table. If a user tries to enter a
    record with key data that matches an existing record, Oracle
    Portal creates a page and displays:
    Error:
    An unexpected error occurred: ORA-00001: unique constraint
    (TIMETRACK.SYS_C007185) violated (WWV-16016)
    How can I capture this exception so that I can display a
    friendlier error message (via a JavaScript alert or other
    means) instead of this page?
    Fran

    James, I tried your suggestion as follows:
    doInsert;--- This is the default handler
    Exception
    when DUP_VAL_ON_INDEX then
    p_session.set_value(
    p_block_name => "_block",
    p_attribute_name => '_STATUS',
    p_value => ' Time has already been entered for this project on
    this date. Click the Back button to return to the MIM Time
    Entry page. ');
    Raise;
    end;
    It did nothing. All I got was the default message.
    I then changed '_STATUS' to 'A_STATUS'. The resulting error
    message was: "Error: (WWV-00000)"
    ON A RELATED NOTE...
    I discovered while testing this form on IE 5 on a Mac, that
    additional error messages are generated. With IE 5 on WindowsNT
    only a message regarding the unique constraint is produced. On
    the Mac there is an additional message "No conversion performed
    for type INTEGER, value is NsNu (WWC-49102)"
    Anyone have any thoughts as to why the output of system
    generated errors should differ between a PC and a Mac?
    Fran

  • Open Form Based On A Table in same window

    Hi All,
    First to make things clearer I'll explain what I CAN do:
    Create a page which queries a session variable at the start and then
    depending on its value outputs different HTML, but always in the same
    format and more importantly the same window, to keep the look and feel etc...
    I have a link in a page which when clicked opens a form using wwa_app_module.link
    so it auto queries the form. This works fine.
    What I CAN NOT do is:
    The form was created using the "form based on a table wizard" and always opens
    in a new window.
    Can I make the form open in the same window that contains my wwa_app_module.link?
    Is this possible in a newer version that I have (I got Release 1)
    Any Suggestions?
    Cheers,
    Barry

    Firstly thanks Rahul Dubey for responding.
    What I mean by " contains my wwa_app_module.link? " :
    I have a form which contains a link similar to the one below:
    http://xxx.co.uk:8015/pls/pod130/PORTAL30.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=1389245486&p_arg_names=EMPNO&
    p_arg_values=7654&p_arg_names=_empno_cond&p_arg_values=%3D%3E
    When I click on this link it opens the form and runs a query automatically.
    The problem is I want to click on the link and have the form appear in the
    same window, not a new one.
    Cheers,
    Barry

  • How to generate a form based on PL/SQL-procedures instead of tables?

    Hi all,
    I'm trying to generate a form based on a package, which has procedures for insert/update/delete/select. In Forms, this is no problem. It is unclear to me how to do this in Oracle Designer (10g). Online Help of Designer doesn't clear things up a lot, it seems I have to generate a table API and a module component API. But when I do this, these are generated as file and no definitions are created in Designer. So what do I base my block on?
    Can somebody assist me in this?
    Kind regards,
    Ronald

    Hi:
    Thank you for reply to my question.
    I have tried your codes and apply them the following the form. However, I always got the following error:
    Error: (WWV-00000)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    My codes is:
    declare
    request_no number;
    blk varchar2(30) := 'DEFAULT';
    l_url varchar2(4000);
    begin
    request_no := p_session.get_value_as_NuMBER(
    p_block_name => blk,
    p_attribute_name => 'A_WORK_REQUEST_ID');
    l_url := 'portal30.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=11880470335&p_arg_names=_sessionid&p_arg_values=&p_arg_names=work_request_id&p_arg_values='||request_no;
    portal30.wwa_app_module.set_target(l_url,'call');
    end;
    then,
    I created another form which has two fields and the dattype of pk is varchar2 and change manually put the pk's p_arg_value into the url.
    e.g.
    l_url:='PORTAL30.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=9029417810&p_arg_names=WORK_AREA_CD&p_arg_values=APP';
    portal30.wwa_app_module.set_target(l_url,'call');
    However, I still get the error message as below:
    Error: (WWV-00000)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    Your help would be highly appreciated.
    Wei Ye

Maybe you are looking for

  • IPhone 4 Unable to Load Network List & No SIM Connectivity Problems

    Hi, I have an iPhone 4. It has been working fine. Only recently, the phone goes off network giving an error message saying that the phone has lost the network. When trying to update the carrier list, the message "Unable to Load Network List" pops up.

  • Aperture 3.3.2 can't open the library after Mountain Lion upgrade

    Hi folks! I can't open my aperture library. The aperture crashed every time. I've just repair, clean the caches, reinstall aperture ... and nothing. The problem started after the upgrade to Mountain Lion. Anybody knows the solution? The crash/log....

  • How To Join Internal tablr

    I try to join 4 internal tables to move valut to t_output DATA: BEGIN OF t_inv_header OCCURS 0,        vbeln TYPE vbrk-vbeln,         "Billing No.        xblnr TYPE vbrk-xblnr,         "Tax Invoice.        vkorg TYPE vbrk-vkorg,         "Sales Org.  

  • Please help me start Tomcat

    hi, Im really struggling here. This is very frustrating. I need to write code and be able to test it, not just read read read from a book. I went to: http://tomcat.apache.org/tomcat-5.0-doc/setup.html, and that never helped. I just dont know how to g

  • From all the problems in the community, I think I will stay with Lion OS, LOL.

    From all the problems in the community with Mountain Lion, I think I'll stay with Lion. The upgrade just doen't seem worth the hassle!