0
votes

I have created a report and form on top of a table. The form page is "Tabular Form", in which all columns are editable. In the "Form" page, i have a Lookup button. On clicking this button it will navigate to new page which has a report on top of view with "Row selector".

When user can select list of rows and clicks submit, then the selected rows should get insert in to Tabular Form page. Can you please explain how I can achieve this.

1

1 Answers

0
votes

As noone replied to your question (yet), let me say a few words, based on my current knowledge & experience. Note that someone might have another, better idea and opinion.

A tabular form is created on a table, its source is a SELECT statement. Saying that you want to check row selector checkboxes on some report page and those values will then be transferred into a tabular form on another page is make-a-wish statement. I'd say that those values should be INSERTED into a table (on which that tabular form is created upon), and tabular form should then perform re-query in order to fetch those rows.

As of "checking row selector checkboxes" in a report and doing "something" with those rows: boy, I don't know how to do that. Yes, I have manipulated with rows selected by my own checkbox items in a tabular form (note the difference: not in a report, but in a tabular form) and it was much more a pain than a joy.

I'd suggest you to read the following Patrick Wolf's article: Which Tabular Form Column is mapped to which Apex_Application.g_fxx array?. Why? Because it explains what to do with g_fxx array. It is a mean to manipulate values in a tabular form. Just to show an example I used in one of 4.x Apex versions (no, I don't have any more recent code) so that you'd get the idea of how it is supposed to be done; this is a page process which fires on Submit.

  • "01 - ID" represents "apex_application.g_f01"
  • "02 - CB_NEDOSTATAK" represents "apex_application.g_f02"

and so forth; those are items in a tabular form

/* 01 - ID
   02 - CB_NEDOSTATAK
   03 - CB_HITNOST
   04 - CB_OTKLONJEN
   05 - NAPOMENA
*/
begin
  for i in 1 .. apex_application.g_f01.count loop

    update dg_pregled set
      cb_nedostatak = case when apex_application.g_f02(i) = 1 or
                                apex_application.g_f03(i) = 1 then 1
                           else 0
                      end,
      cb_hitnost    = decode(apex_application.g_f03(i), 1, 1, 0),
      cb_otklonjen  = case when apex_application.g_f02(i) = 1 and
                                apex_application.g_f04(i) = 1 then 1
                           else 0
                      end,
      napomena      = apex_application.g_f05(i)
    where id = apex_application.g_f01(i);

  end loop;   
end;

Basically, you'd do something like that; instead of UPDATE, you'd do INSERT.

As I said: this doesn't have to be an optimal solution to your problem, but that's what I can say about it. Good luck!