Create Wizard-Based Order Processing Module in Oracle Application Express
Part IV of IV
Section 6.2 – Page 4 and 29
While creating a new page, Oracle APEX offers an option to create Master Detail Form. A master detail form reflects a one-to-many relationship between two tables in a database. Typically, a master detail form displays a master row and multiple detail rows within a single HTML form. With this form, users can insert, update, and delete values from two tables or views. When running a master detail form, data is rendered as a report using various form elements.
In section 6.2 you create a Master Detail Form to show records from two tables – Orders and Order Items.
Section 6.3 – Page 4
Section 6.3.1 – During the Master Detail form creation process (section 6.2), you specify page numbers for Master and Detail pages. Oracle APEX creates these two pages (in this scenario - Page 4 and Page 29) with some default functionalities. In order to provide some more professional touch to your application, you replace some of these default functionalities with that of yours like section 6.3.1 where a default region, Orders, is deleted and replaced with a new region in 6.3.2 to fetch data from multiple tables in an Oracle APEX Master Detail form and to provide interactive functionality.
Section 6.3.2 – In this section an Interactive Report is created based on a SQL SELECT statement which fetches data from three tables i.e. Orders, Customers, and Users. Interactive reports enable end users to customize reports. Users can alter the layout of report data by choosing the columns they are interested in, applying filters, highlighting, and sorting. They can also define breaks, aggregations, different type of charts, group bys, and add their own computations.
Users can also set up a subscription so that an HTML version of the report will be emailed to them at designated interval. Users can create multiple variations of a report and save them as named reports, for either public or private viewing.
On Order Master page, an attribute called Link Column is set to Link to Custom Target which is used to link to a specific page. You set this value to link to Page 29 - Order Details. Item 1 is set to page item P29_ORDER_ID with value #ORDER_ID# from Orders table to set session state for the item specified.
Section 6.3.3 – This section demonstrates how to remove columns from an interactive report and how to sort the columns.
Section 6.3.4 – You're guided how to create an Alternative Report in Oracle APEX. Alternative report enables developers to create multiple report layouts. Only developers can save, rename, or delete an Alternative Report. Here, you create different views of the alternative report such as; Report, Chart and Group By and learn the following techniques:
Once you define a report, you can switch between the report, chart, and group by views using the View Icons on the Search bar.
Group By View:
Section 6.3.5 – Similar to the previous section, this one creates the three views of a Public Report. In Oracle APEX, a public report is a type of report that can be saved, renamed, or deleted by the end user who created it. Other users can view and save the layout under a different name.
Section 6.3.6 – During Master Detail from creation, Oracle APEX creates a button, named CREATE, to add new records. In this section, you modify some attributes of this default button by providing a meaningful name, label, position, and action when clicked.
Section 6.3.7 – Deleted a computation that is not required in our process.
Section 6.3.8 – Create a branch to move to Page 11 when the button Enter New Order is clicked to start order wizard.
Section 6.4 – Page 29
Page 29 – Order Details is the second page of the master detail form that is created by Oracle APEX page creation wizard. This form is used to modify or delete an order and is called when you click the Edit icon in the Order Master page.
Section 6.4.1 – Section 6.4 is devoted to modify Order Details page (Page 29). Initially, you modify the attributes of the page itself. Each Oracle APEX page has a security section where you apply an Authorization Scheme. Authorization schemes are defined at the application level and can be applied to many elements within the application. In this section, you apply Verify Order Ownership, a scheme created under Shared Components in chapter 2, section 2.5.6 (c). The purpose of this authorization scheme is to allow order manipulation only to the user who created the order.
Section 6.4.2 – You learn how to display the value of a page item as the page title. In this case, you set the page title to Order #&P29_ORDER_ID where Order# is a string and &P29_ORDER_ID is a substitution string referencing a page item holding the Order ID.
Besides, you create a custom SQL statement to show desired columns in specific format. An important segment in the SQL statement is worth mentioning and that is the APEX_UTIL package. This package provides utilities you can use when programming in the Oracle Application Express environment. You can use the APEX_UTIL package to get and set session state, get files, check authorizations for users, reset different states for users, get and purge cache information and also to get and set preferences for users. A function from this package, GET_BLOB_FILE_SRC, is used to more specifically format the display of the product images with height, width, and alt tags.
Section 6.4.3 – Modified the Add Row button by setting its Action value to Submit Page when it is clicked.
Section 6.4.4 – Created a new Display Only item named P29_CUSTOMER_INFO on the page and associated a SQL query with it to show customer information.
To prevent Cross-Site Scripting (XSS) attacks Escape Special Characters attribute should always be set to Yes! Only if you want that HTML tags which are stored in the page item or in the entries of a list of value are actually rendered, you should set this flag to No.
An onchange="htmldb_item_change(this)" event is declared in HTML Form Element Attribute for P29_ORDER_TIMESTAMP and P29_ORDER_TOTAL. The onChange specifies script code to run when the data in the input field changes. The onChange happens whenever anything changes the value of the field, not just when the user enters a value. The this object, is a reference to the two page items. Since the two items are marked as Display Only, that makes the values unchangeable on the form, therefore, the above event could be ignored. Try by removing the event from both items and observe any change in the application behavior.
Section 6.4.5 – After processing an order, a user might want to add few more items to it at a later stage. To provide this functionality create a Data Manipulation process under Page Processing section to allow adding more items to the order and associate it with Apply Changes button on the page.
This ends my effort to expose facts in Chapter 6 of my book “Create Rapid Web Applications Using Oracle Application Express”. I hope that you have grabbed the knowledge and would apply the techniques presented in this multi-part post to your own projects. Please do provide your valuable comments and let me know of any overlooked area.