0% found this document useful (0 votes)
274 views95 pages

Apex

The document provides an overview of creating and managing APEX applications, which are HTML interfaces built on database objects. It details the components of an APEX application, including pages, regions, and session state management, as well as the use of the Create Application Wizard to assemble applications. Additionally, it explains the Universal Theme for user interface design and the importance of session IDs and URL syntax in navigating APEX applications.

Uploaded by

shifanas15
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
274 views95 pages

Apex

The document provides an overview of creating and managing APEX applications, which are HTML interfaces built on database objects. It details the components of an APEX application, including pages, regions, and session state management, as well as the use of the Create Application Wizard to assemble applications. Additionally, it explains the Universal Theme for user interface design and the importance of session IDs and URL syntax in navigating APEX applications.

Uploaded by

shifanas15
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 95

An APEX application is an HTML interface that exists on top of database objects,

such as tables or procedures. An APEX application is basically a collection of pag


es that are linked together using navigation menus, tabs, buttons, or hypertext li
nks. You use the Create Application Wizard to create an APEX application, wherei
n you declaratively assemble pages and navigation.
Now, let's learn about an application page. A page is the basic building block of a
n application. Every application consists of one or more pages. To view a rendere
d version of your APEX application, you run or submit it to the Oracle APEX engin
e. The APEX engine dynamically renders and processes pages based on the data
stored in database tables. Now, if you create new pages, you can either run them
individually or run an entire application.
Each page can hold buttons and fields called items that are grouped together int
o containers called regions. Pages can include application logic or processes. You
can branch from one page to another using conditional navigation.
On a page, you can perform calculations called computations. You can perform v
alidations, such as edit checks, and you can display reports, calendars, and chart
s. You can view and edit a page in Page Design. Page Designer is a fully featured
integrated development Environment to maintain your application pages.
Page processing and page rendering-- we already understood that the Oracle AP
EX engine dynamically renders and processes pages based on data stored in Ora
cle database tables. To view a rendered version of your APEX application, you
request it from the APEX engine with a URL. When you run an APEX application, t
he APEX engine relies on two processes-- show page, which is a page rendering p
rocess that assembles all the page attributes, including regions, items, and butto
ns into your viewable history HTML page. So when you request a page using a U
RL, the engine is running Show Page.
And then the next one is Accept Page, which performs forms page processing, in
cluding computations, validations, processes, and branching. So when you submi
t a page, the APEX engine is running Accept Page or performing Page Processing,
during which it saves the submitted values in the session cache and then perfor
ms any computations, validations, or processes.
You can use conditions in an application to control how your pages and page co
mponents display and when processes, competitions, and validations execute. A
condition basically, is a small unit of logic that helps you control the display of re
gions, items, buttons, and tabs, and the execution of processes, computations, a
nd validations.
Now, let's understand Application User Interface. Universal Theme is a user interf
ace for Oracle APEX that enables developers to build modern web applications wi
thout requiring extensive knowledge of HTML, CSS, or JavaScript. With some wor
king knowledge of APEX, you can use Universal Theme to easily build a responsiv
e application that is highly accessible, easily customizable, and easy to maintain.
Now let's understand the key advantages of Universal Theme. Universal Theme i
s designed to work just as well on small screen devices, such as smartphones an
d tablets, as it does on larger screen devices, including laptops and desktops, by
responding automatically to the dimensions of the screen on which it is running.
The UI components in Universal Theme work across varying screen resolutions w
hile maintaining the same or similar functionality.
Universal Theme provides all the components and building blocks necessary to b
uild practically any type of business application user interface. You can effortlessl
y customize and fully control the look and feel of your applications without beco
ming an expert in UI design, HTML, CSS, or JavaScript.
Session state management-- let's first understand what is session state. Session
state enables developers to store and retrieve values for a user as the user navig
ates between different application pages. Hypertext Transfer Protocol, HTTP, the
protocol over which HTML pages are most often delivered, is a stateless protocol.
A web browser is only connected to the server for as long as it takes to download
a complete page. Each page request is treated by the server as an independent
event unrelated to any page requests that happened previously or that may occu
r in the future.
To access form values entered on one page on a subsequent page, the values m
ust be stored as session state. Oracle APEX transparently maintains session state
and provides developers with the ability to get unset session state values from a
ny page in the application.
Now, what is a session ID? A session ID is a unique number assigned a specific us
er for the duration of the user's visit. The Oracle APEX engine establishes the ide
ntity of the user for each page request and the session ID to fetch session state f
rom the database. The most visible location of the session ID is in the URL for a p
age request. The session ID displays as the third parameter in the URL. In the slid
e example, you see hr-app is the application alias, update employees is the page
alias, and the third parameter is a session ID, which is 13766599855150.
So what is a session? A session is a logical construct that establishes persistence,
or stateful behavior, across page views. We already understood that each sessio
n is assigned a unique identifier. The Oracle APEX engine uses this identifier, or s
ession ID, to store and retrieve an application's working set of data, or session st
ate, before and after each page view. Because sessions are entirely independent
of one another, any number of sessions can exist in the database at the same ti
me.
A user can also run multiple instances of an application simultaneously in differe
nt browser programs. Sessions are logically and physically distinct from Oracle d
atabase sessions used to service page requests. A user runs an application in the
single APEX session from sign in to sign out, with a typical duration measure in m
inutes or hours. Each page requested during that session results in the APEX engi
ne creating or reusing an Oracle database session to access database resources.
Often, these database sessions last just a fraction of a second.
Now, let's understand application URL syntax. APEX application support two type
s of URL syntax, Friendly URL syntax and f?p syntax. Applications that are create
d using APEX release 20.1 or later use Friendly URL syntax. Now, if you have old
applications, you can change them to use Friendly URLs by editing the Friendly U
RLs attribute in the application definition.
Friendly URL syntax creates a URL structure that identifies the address of Oracle
APEX, the application, the page, and uses standard web parameter syntax. Frien
dly URL syntax creates a URL with the directory hierarchy and syntax as hostnam
e:port/ords/r/path_prefix/app_alias/page_alias?parameters.
In the slide example, hostname is the domain name of the server. Port is the port
number assigned when configuring Oracle REST data services. Ords is the servic
e name defined when configuring Oracle
REST data services. r is the router shortcut. This value is a constant and should n
ever be changed.
Mycompany is the Path Prefix which is a URL Path Prefix used to access RESTful s
ervices. When you create a workspace, this value defaults to workspace name. h
r-app is the application alias. In a new application, the application alias defaults t
o the application name.
update-employees is the page alias. In a new application, the page alias defaults
to the page name. And then you see the session ID here. You can customize a Fri
endly URL by editing the Path Prefix, Application Alias, or Page Alias. You can cus
tomize the URL Path Prefix by editing Path Prefix attribute in Workspace administ
ration. You can edit the application areas in the application definition. And you ca
n edit the Page Alias in the Page Designer.
In this lesson, you learned, what is an APEX Application, what is a page, Applicati
on User Interface, Session State, Page Processing and Page Rendering, and your
URL Syntax. This concludes the lesson at Builder Concepts. I hope you find it usef
ul. Thank you for watching.

Creating an APEX application


ello. Welcome to Oracle APEX developer professional learning path, creating an A
PEX application module App Builder and create App Wizard lesson. Now that you
have a solid understanding of App Builder concepts, it's time to go ahead and lea
rn how to access App Builder and get started with using the Create App Wizard t
o build your APEX applications.
In this lesson, you learn how to access APP Builder and then get started with usin
g the Create Application Wizard. We already learned that a database application,
also known as an APEX application, or simply an APEX App, is a collection of page
s linked together using navigation menus, tabs, buttons, or hypertext links. Appli
cation pages share a common session date and authentication.
To create an application, a developer runs Wizards to declaratively assemble pag
es and navigation. In an application, individual pages are organized using contain
ers called regions. Once created, you can modify an application by editing applic
ation attributes and add new pages using the Create Page Wizard. You can furthe
r manage the development process by creating page groups, locking and unlocki
ng pages, adding developer and application comments, and accessing a variety
of application, page, and cross page utilities and reports.
The screen shows an example of a database web application that is built using O
racle APEX. This shows the home page of the ideas and feature request applicati
on. Now, to access this particular application, go to your browser and enter apex.
oracle.com/ideas. Now, let's take a look at this particular application. So I would li
ke to go to my browser and then enter apex.oracle.com/ideas and then hit Enter.
This is the Ideas and Feature Request application homepage, and you can naviga
te across this application.
Now, to create an application using Oracle APEX, you run the Create Application
wizard in the App Builder. Now, how do you access App Builder? After logging int
o your workspace on the workspace home page, you click the App Builder icon. T
he App Builder home page displays all the applications installed in the current Or
acle APEX instance. You can use the App Builder home page to create new applic
ations, select an application to edit, import previously exported applications. You
can view the dashboard or access workspace utility.
So on the workspace homepage, click Add Builder. And if you have any APEX app
lications in the current APEX instance, they're all displayed for you on the App Bu
ilder home page. On the App Builder home page, you see Create, Input Dashboar
d, and Workspace Utilities. You click Create to create new applications. You can s
elect any of these applications to edit. You can import any of the previously expo
rted applications. You can view the dashboard, or you can access Workspace Utili
ties.
So how do you access a particular application's homepage? All you need to do is
to go to App Builder and then click the particular application's name, and then yo
u'll navigated to the applications page. From within the application homepage, y
ou can run the application. You can click Create Page to add additional pages to
your application. You can export your application. You can copy your application.
And if you don't want your application, you can delete the application. You can al
so click the Edit Application Definition to view the application definition.
Now, let's learn a little bit more about creating applications in App Builder. When
you log into your Oracle APEX workspace for the first time and navigate to App B
uilder, you see two areas at the bottom of the App Builder page. Create a new ap
p and install a Starter or Sample App. Click Create a New App to access the Creat
e Application Wizard and create a new application. Click Install a Starter or Sampl
e App to access the app gallery and install a Starter or a Sample Application.
Once you create an application or install a Starter or Sample Application, these r
egions no longer appear. You already learned how to install a Starter or Sample
Application. To create a new application, you can click either Create a New App h
ere or click Create. Let's create a new application. So click Create. You can use th
e Create Application Wizard to create an application with just a blank page or a c
omplete application containing multiple pages. On the Create Application page, y
ou see three different options, new application from a file and Starter App.
Click New Application to create a fully functional application based on tables you
select or by providing a valid SQL. You can add pages that include various compo
nents, including calendars, cards, charts, dashboards, forms, interactive grids, m
aster detail, or editable grids, and reports. You can also add application level feat
ures. Click from a file to upload a CVS, XLSX, XML, or JSON file or copy and paste
data and then create your application.
Click Starter App to navigate to the gallery page where you can install any Starte
r or Sample application. There
are additional options on the page Quick SQL and copy application. Using Quick S
QL, you can generate the SQL required to create a relational data model from an
indented text document. Quick SQL is designed to reduce the time and effort req
uired to create SQL tables, triggers, and index structures. Click Copy Application
to create a copy of an existing application.
In this lesson, you learned how to access APP Builder and get started with using t
he Create Application Wizard. This concludes the lesson App Builder and the Crea
te App Wizard. I'm sure you find that useful. Thank you so much for watching
Creating application based on existing tables
In this lesson, you'll learn how to create an APEX application based on existing ta
bles. Let's take a quick look at the steps involved in creating an application base
d on existing tables. In the first step, you log into your Oracle APEX workspace, a
nd then click App Builder, then click Create. Click New Application, and then ente
r your application name. Select an application icon, and then click Set Appearanc
e to change the appearance of your application. Save the changes to your applic
ation's appearance.
In the next step, click Add Page to add pages to your application. Select the page
of your choice, enter, or select the details, and repeat this particular step if you
want to add multiple pages to your application. Select features to include in your
application, review the settings and then click Create Application. Click Run Appli
cation, and then finally, log in to review your application.
Now let's watch a demo that shows these steps involved in creating an applicatio
n based on existing tables. Creating an APEX Application Based on Existing Table
s in the Database. On your workspace homepage, click App Builder, and then clic
k Create. You want to create a new application. Click New Application.
The Create Application Wizard appears. Enter a name to identify the application t
o developers. For example, in this case, let's enter Employee Details App. And th
en you want to set an icon for your application, so click Set Icon. Let's also chang
e the color, and then let's pick an icon. For example, let's pick the Cloud icon, an
d then click the Save Icon.
For appearance, you can actually accept the default appearance. But you want t
o change the appearance in this case, so let's click Set Appearance Icon, and the
n you'll see theme styles. Vita, Vita Dark, and Redwood Light. Let's click on Redw
ood Light, accept the defaults for navigation, and then let's save the changes for
appearance.
In the next, step let's add pages to your application. So click Add Page. The Add
Page dialogue appears. You can now see different page types. There is a Blank p
age, Calendar, Cards, Chart, Dashboard, Faceted Search, Smart Filters, Form, Int
eractive Grid, Interactive Report, Map, and Masked Detail. You can select a page
type of your choice. The user interface changes based on the page type you sele
ct.
Pages that you create will be displayed on the home page. After you create the a
pplication, you can modify the pages and add additional pages using the Create
Page Wizard. Now, in this example, let's add an interactive report. So select Inter
active Report, enter a name for page name. For example, lets enter Employees R
eport. Table or View-- let's select EMP table, which is already existing in the data
base.
Let's also select the Include Form checkbox, then expand Lookup Columns. For L
ookup Key 1, let's select Department Number, and for Display Column, let's selec
t Department Name. Now click Add Page. If you want to add additional pages, cli
ck Add Page again. You now see that the Employees Report interactive report ha
s been successfully added.
Now, scrolling down a bit, you see features that you can select to include with yo
ur application. Features provide application-level functionality, and can only be a
dded once per application. You can see the features such as, Install Progressive
Web App, which gives your application the ability to be installed. There is About
Page, which ads an "about this application" page. You also have Access Control,
Activity Reporting, Configuration Options, and then Feedback, which allows users
to provide feedback. You also have Theme Style Selection feature.
Now in this example, let's select all of the features, so let's click Check All. Scrolli
ng down, you see Settings. Now, the first one is Application ID, which is a unique
numeric identifier for your application. This field contains an automatically-
generated identifier by default. Let's accept the default for application ID. And th
en you see Schema here, Authentication, Language, Advanced Settings, and Use
r Interface Defaults. Let's accept the default settings as is, and then finally, let's
click Create Application.
You can now see the application creation progress. The application is now succes
sfully created. Let's run the application. Enter your workspace username and pas
sword, and then click Sign in. You can now see the application homepage. Click t
he left navigation menu. You can see Home, Employees Report, and Administrati
on. Lets click Employees Report. This displays the Interactive Report page for yo
u. In the Interactive report, lets click the pencil icon for any record, and that displ
ays the Employee Form Dialogue.
In this lesson, you learned how to create an APEX application based on your exist
ing database tables. This concludes the lesson, App Builder in the Create App Wi
zard. I'm sure you find that useful. Thank you so much for watching.
Creating App from a file
ello. Welcome to Oracle APEX Developer Professional Learning Path, Creating an
APEX Application Module, Creating an Application from a File lesson. So far, you l
earned how to create an APEX application based on existing database tables. No
w, let's go ahead and learn how to create an application from a file. You'll be am
azed to see how a spreadsheet is transformed into a beautiful, responsive web a
pplication in just minutes.
In this lesson, you'll learn how to create an APEX application from a file. You'll lea
rn how to convert a spreadsheet into a beautiful, responsive, secure and scalable
web application using Oracle APEX. Creating an APEX application from a file. To c
reate an APEX application from a file, navigate to your workspace homepage and
then click App Builder. Click Create, and then select From a File.
Now, let's watch a quick demo that showcases how to upload a spreadsheet and
convert that into an APEX application. The spreadsheet that you use in this demo
contains projects and associated tasks data, such as project name, task name, st
art date, end date, status, assigned to, cost, and budget. Once you upload the sp
readsheet data, APEX creates an underlying database table on top of which will b
e creating an APEX application.
Creating an APEX application from a file. On your workspace home page, click Ap
p Builder, and then click Create. Select From a File. The Load Data wizard appear
s with the Upload a File tab selected. Now, you have other option-- copy and past
e. You select Upload a File if you want to load data from a csv, xlx, xml, txt, or jso
n file. You click Copy and Paste if you want to copy and paste column delimited d
ata.
Now, clicking this option, you also see that you can select a sample data set from
the Select Sample list. Now, in our example, we want to upload a file and then cr
eate an APEX application. Notice that you can drag and drop file here, or click Ch
oose File to select and upload your file from your folder.
Now let's click Choose File, and select Project_Tasks.csv file, and then upload the
file. On the Load Data page, under Where do you want to load this data, you see
Load To New Table or Existing Table. In this example, let's accept the default, Ne
w Table. You also see Table Owner, and then for Table Name, let's enter a name.
For example, TASKS. Notice that the table names are by default converted into u
ppercase.
Now, for Primary Keys, you have two options. Either you can include SYS_GUID or
select Identity Column. Let's accept the default for Primary Keys as well, and the
n scroll down a little bit. You now see, Please select the columns to load, so let's
click Configure. In the Configure dialog, notice the column names and the column
types. You can also preview. We haven't made any changes, so let's close this di
alog.
Now, under Settings, notice that the "First line contains headers" checkbox under
Column Headers is selected. You can also choose to have a Column Delimiter, En
close By, and File Encoding settings. You can preview the data, and finally, click L
oad Data. Notice that the table tasks is created with 73 rows.
You can now click View Table to view this particular table in SQL Workshop. Alter
natively, you can click Create Application button that navigates you to the Create
Application wizard. Let's click the Create Application button. In the Create Applic
ation wizard, enter a name for the application. Lets enter Tasks App. And then fo
r appearance, let's click Set Appearance Icon, and then select Redwood Light the
me style. Exit the default for navigation, and then let's click Save Changes.
Now, if you scroll down, you can see Hone page, Dashboard page, Tasks Search
page, Tasks Report, and Calendar have been added by default to the application.
Scrolling down a bit, you can see Features. So you can select a checkbox for any
of these features, and if you want to select all of these features click, Check All. S
o let's click Check All, review the settings, and then click Create Application.
You
can now see the application creation progress. The application is now successfull
y created, so let's click on Run Application. Enter your workspace username and
password, and then click Sign in. Tasks application home page is displayed for yo
u. You can now see Dashboard Tasks, Search Page Tasks, Report, and Calendar.
Lets click the left navigation menu, and you can see Home, Dashboard, Tasks Se
arch, Tasks Report, Calendar, and Administration listed over here.
Lets click Dashboard. There
are you the charts in the dashboard, you can see charts displayed for Project, Ta
sk Name, Status, and Assign To. Let's script Tasks Search. This is a faster search
page, and then let's click Tasks Report, which is an interactive report page, and t
hen let's click Calendar, which is a calendar that displays the project details for y
ou.
So you now understand how to upload a spreadsheet and quickly convert that int
o a fully functional APEX application that can be extended further. In this lesson,
you learned how to create an APEX application from a file. This concludes the les
son, App Builder in the Create App Wizard. I'm sure you find that useful. Thank y
ou so much for watching.
Working with pages and regions
Welcome to the module on working with pages and regions. In this video, we will
learn how to manage pages and the page components. Let's get started.
In this lesson, we will learn how to manage pages using the Page Designer. We w
ill also see a detailed discussion about the Page Designer user interface element
s. Later, you will learn how to create regions in the page and also add different p
age components to the page.
A page is a basic building block of an application. On the screen, you can see the
different components of a page. Each page in an Oracle APEX application contain
s one or more regions. Regions function as containers for content. A region can c
ontain static HTML, or it can be a report based on a SQL query. A region can cont
ain items, buttons, and a navigation menu.
Now, an item is a part of an HTML form. An item can be a text field, text area, pa
ssword, select list, checkbox, and so on. You can use buttons to direct users to a
specific page or URL or to post or process information. For example, cancel, delet
e, apply changes, and so on.
When you build a database application, you can include different navigation cont
rols. The available navigation option depends upon the application theme. Comm
on navigation controls include tabs, lists, including navigation menu, breadcrumb
s, navigation bar entries, and branches.
On the screen, you can see an example of navigation menu that is displayed as a
sidebar. When you run an application from the App Builder, the Developer toolba
r is displayed at the bottom of any editable running page. You use the Developer
toolbar to quickly edit the current application, or currently running page, or your
destination state.
Now, let us understand the different page modes. When you create a new page, t
he wizard prompts you to select a page mode. The page mode determines if the
page is a normal application page or a dialog. APEX supports two types of dialog
pages-- modal dialog and non-modal dialog.
Modal and non-modal dialog pages are only supported if the current application t
heme contains at least one page template of type dialog page. To create a dialog
page in your application, when you create a new page, in the page definition, yo
u can select any of the page modes.
Now I'll show an example of how the modal pages look in an application. I have a
sample application where employee details are displayed as a report. This page i
s the normal APEX application page. You have an Edit icon for each record. When
I click on an Edit icon, it opens another window known as the modal dialog page.
A modal dialog is an overlay window positioned within the viewport which remain
s active and focused until the end user dismisses or closes it. The underlying pag
e is grayed out and the end users prevented from interacting with the rest of the
page until this dialog is closed. Now let me edit this modal dialogue and change i
t to a non-modal dialog.
We'll go back to the Page Designer and change the page mode to non-modal dial
og. Save the changes. Go back to the application and refresh it. So now when I cl
ick on the Edit icon, it opens a new window. And the underlying page is also edita
ble now.
So a non-modal dialog is an overlay window positioned within the viewport where
the
end user can interact with the dialog and the content of the page that launched t
he dialog simultaneously. A non-modal dialog can be used when the requested in
formation is not essential to continue. And work and continue elsewhere while th
e window is still open.
Note that Oracle APEX includes dialog page templates in the universal theme. W
hen you set the page mode to either modal or non-modal, Oracle APEX automati
cally uses the default dialog page template. When you create an application in A
PEX, you can add additional pages to the application by running the Create Page
wizard.
You can access this wizard in two ways. On your application home page, click on
Create Page. Or if you already have the Page Designer open, you can navigate to
the Page Designer toolbar and xclick on the plus icon and select Page.
The Create Page wizard includes three types of pages. Component pages provide
s page-level functionality and can be added multiple times within a given applica
tion. Example includes cards, calendar, smart filters, faceted search, reports, and
so on.
Feature pages provide application-level functionality and are typically added onc
e per application. Examples include About page, access control, activity reportin
g, feedback, and login page. Legacy pages. Oracle still supports the legacy page
s but does not recommend using them.
So let
us see an example of how to create a new page. From your Create Page wizard,
click on the type of page that you require. I'm going to select a blank page and cl
ick on Next.
Remember, the page type you select, either component or feature, determines w
hat appears next. A blank page is a page with no built-in functionality. Once crea
ted, you can customize this page for your requirements.
For example, you might want to create a Help page in your application. So you fir
st create a blank page and then navigate to the Page Designer. And then you ca
n add a Help text region on this blank page. Enter a name for the page.
Notice that there are three different page modes available. You already learned a
bout page modes in this lesson. Here, I accept the default normal page mode. Th
en you can select whether you want to use a breadcrumb navigation control on y
our page. In this example, you select Breadcrumb and then select a value for the
parent entry.
Select whether you use navigation. This will allow users to navigate to a new pag
e directly from the navigation menu. In this example, select the navigation prefer
ence whether you want to create a new entry or map to an existing entry. And th
en select a parent navigation menu entry if required.
You can also associate an icon with the navigation menu entry. Once you specify
all the attributes, click on Create Page. A blank page is created, and then you are
navigated to the Page Designer. Now, you can click Save or save and run the pag
e.
To summarize, in this lesson, you learned how to manage pages in the Page Desi
gner. We also saw a detailed discussion of the Page Designer UI elements. Later,
you also learned how to create regions in a page and add the page components f
rom the gallery. I hope you learned something useful. Thank you for watching.
Managing Pages and Adding Page Components
Welcome to this module on working with pages and regions. In this video, we will
see how to create pages and explore the page components. My name is Apoorva
and I'm a senior product manager for ORACLE APEX. Let's get started. This lesso
n introduces you to the page designer. We will further have a detailed discussion
about the page designer user interface elements.
You also gain an understanding about the application page components. Finally,
you will learn how to create a page in an application. After creating a page, you n
eed to navigate to the page definition to view, modify, and create components o
n the page. You use the page designer to maintain and enhance pages within an
ORACLE APEX application.
Page designer is a fully featured integrated development environment that inclu
des a toolbar and multiple panes. So to view the page definition in the page desi
gner, you need to go to your workspace home page and click on the Build icon. T
hen when you select the application in step one, you then select a page you wan
t to edit in your application in step two.
In step three, you can see that the page designer appears. You preview a page b
y running it. Running an application page displays the rendered version as end u
sers would see. Developers can view and edit application pages in the page desi
gner. Page designer is a fully featured IDE that includes a toolbar and multiple pa
nes.
There are three main panes within the page designer, a left pane, a central pane,
and a right pane. You select a component in the left or the central pane and then
edit the components attributes in the property editor located in the right pane. T
he left pane includes tabs for rendering dynamic actions, processing, and shared
components.
Each tab displays a list of corresponding component types and components creat
ed on the current page. The central pane includes tabs for layout, messages, pag
e search, and help. The right pane displays the property editor. Use the property
editor to configure or update attributes for the selected components.
Now, I'm going to switch back to my APEX workspace and demonstrate the capa
bilities of page designer. On the screen, you can see that I have opened the page
designer for a particular page in a sample application.
Let's begin with understanding the page designer toolbar. The page designer tool
bar is displayed at the top of the page and contains both buttons and menu optio
ns. Hover your cursor over an active button to display a tool-tip.
The page selector displays the current page. Click the down arrow to display the
page finder and search for pages or enter a page number in the search field and
click on Go. Note, a warning icon can appear next to the page selector when ther
e are errors in the page. You will learn more about the error messages in the late
r lessons.
The next is the page lock and unlock. This indicates whether a page is locked or
unlocked. Unlocked pages are editable and lock pages are not. The padlock icon i
ndicates the status. The next is the undo change. This reverts the previous updat
e you made within the page designer. It applies to actions that result in a change
to the page data.
Redo change. Reapply for the last update that was undone using the undo chang
es. Applies to actions that result in a change to the page data.
Next is the Create. The create menu, which is a graphical plus sign. Clicking the c
reate menu displays options to create a page, create a new page as a copy, crea
te a breadcrumb region, check component, a page group, develop a comment or
an issue. The utility's menu is denoted by a graphic of range.
The options include to delete a page, open the advisor, caching, history of the pa
ge, check some, export, show, tool-tips, and layout view. And in layout, you can c
hange the layout to two pane layout or reset the layout.
The next is the shared components. Clicking on it will take you to the shared com
ponents page. Save will save the changes made to the page. Save and run butto
n will save the changes you made and run the page.
Now let's switch back to the left pane. The left pane in the page designer include
s four tabs. Rendering, dynamic actions, processing, and page shared componen
ts. Each tab displays a list of corresponding component types and components cr
eated on the current page. The rendering tab displays the regions, page items, p
age buttons, page components, and application logic.
The dynamic actions tab displays the dynamic actions defined on this page. Curr
ently this page has no dynamic actions but by creating a dynamic action, you ca
n define complex clients side behavior declaratively without the need for JavaScri
pt. You learn more of dynamic actions later in this course.
The processing tab displays the application logic defined on this page. The share
d components tab displays the shared components associated with this page. Th
e key features of the left pane include the context menus. You can right click on
a component or control to display a contextual menu.
Quick access to the property editor. Select a component or multiple components
to display the corresponding attributes in the property editor in the right pane. D
rag and drop. You can drag components up and down within the tree region to ch
ange the position or sequence of the selected component.
The rendering and processing trees are grouped and ordered based on how ORA
CLE APEX processes them. The dynamic actions and the shared component trees
are grouped by event or component type and ordered by sequence. The central
pane.
The central pain in the page designer consists of five sections. First is the layout
tab. It displays a Visual representation of the page regions, items, and buttons th
at define a page. Messages displays the errors and warnings You need to addres
s. Clicking a message changes the focus within the property editor, the correspo
nding attribute associated with the error or warning.
Page search allows you to search for the page metadata, including regions, items
, buttons, dynamic actions, columns, and so on. Help displays attribute specific h
elp. Click the attribute name within the property editor to view the information a
nd examples.
At the bottom of the layout tab, you can find the gallery pane. The gallery pane d
isplays at the bottom of the layout tab and contains three tabs, regions, items, a
nd buttons. A region is an area of the page that serves as a container for content
, but inside items are components that you can add to regions that allow the end
user to interact with the page.
You can add new controls and components, regions, items, and buttons to a pag
e by selecting them in the gallery and dragging them and dropping them in the l
ayout. The layout tab as we discussed earlier is a Visual representation of how th
e components are positioned on the page.
The layout tab features context menus. By selecting a component and right clicki
ng, you can delete, move, or copy the component to other regions or new region
s on the page. You can also move existing regions items and buttons relative to o
ther components by simply clicking the component and dragging it to a new loca
tion.
For example, you can place items next to another by dragging the second item t
o the end of the first item and dropping it in the dark yellow box that appears wh
en you hover the cursor in the desired location.
When dragging components to a new position such as dragging an item onto the
same line as an existing item, you need to drag the component into the desired
position and wait until the grid changes and the new drop position is displayed.
You can adjust the size of each pane by selecting and dragging the horizontal an
d vertical splitters. To expand out collects each pane, click the small triangle labe
led collapse in the center of each filter Alternatively, you can click the Expand bu
tton to make the layout tab larger and then restore to return it to the previous si
ze.
The layout menu is displayed on the right side of the pane. You can use this men
u to customize the type and amount of information that is displayed. To have a s
pecific region fill the layout tab, select the region and then select display from he
re from the layout menu.
The selected region fills the layout tab. To restore the view, select display from p
age. Note that hidden items are not displayed in layout but are displayed in the r
endering tree. The right pane in the Page Designer contains the property editor.
The property editor displays all attributes for the current component. As you sele
ct different components in either the left pane or the layout tab, the property edi
tor automatically updates to display attributes for the selected component.
When you select multiple components, the property editor only displays the com
mon attributes. Updating a common attribute. Updates. The corresponding attrib
ute for all the selected components. Since the component was updated and I do
not need it to be a select list, I'm going to change it back to a text field.
The property editor organizes the attributes into functional groups like identificat
ion, labels, settings. To quickly access a group, you can click on go to group and
select the group. To return to the default display, click on go to group again and
select Expand all.
To search for a group or an attribute, enter a keyword in the filter properties field
. The groups and attributes containing the keyword will appear. To return to the
default display, delete the keyword in the filter properties field.
To search for the keywords across all the items regions and processes, click the
pin filter button on the right side of the search field. When activated, the search t
erm that you entered remains persistent as you click around the page designer.
Click the pin filter again to disable it. So the attributes requiring large amounts of
code, for example, a region source, you can enter the code directly into the regio
n or the item component settings using the code editor. Click the code editor ico
n to enter text in a fully featured code editor.
A code editor displays as a model dialog. You can use the code editor to edit attri
butes requiring a large amount of code. The code editor provides an enhanced e
ditor to edit PL/SQL, SQL, HTML, CSS, and JavaScript component properties.
The code highlighting is determined by the input required for the specific propert
y. The key features of the code editor include undo, redo, find, query builder, aut
o-complete, and validate. The settings menu located on the right side offers addi
tional options, including tab insert spaces, tab size, indent size, themes, shorelin
e numbers, show ruler, show suggestions, and show white spaces.
As a developer, you add content to a page by creating a region. As we discussed
earlier, a region is an area of a page that serves as a container for content. Each
region contains a different type of content such as HTML, a report, a form, a char
t, a list breakdown PL/SQL, a tree, URL, or a calendar.
You position a region either relative to other regions that is based on its sequenc
e number and column or by using a region position, define the page template. Th
e style of the region is also controlled by the region template. Like the page tem
plate, the region template defines the structure of the area that the region takes
up on the page.
It defines if the region title is displayed and where it is displayed relative to the
main content of the body. A region can also define absolute positions for buttons.
To create a new region in the page designer, right click on the content body and
select create region. In the right pane, you can give a name to your region and s
elect the type of region that you want to create. Make the changes and finally cli
ck on the save button.
Another interesting point to note in the gallery region is that there are two ways
of adding the components into the page. You can either select a component and
drag and drop it into the layout region or you can select a component in the galle
ry and right click to use a context sensitive menu.
Here on the screen, you can see that a new region was created. I added a checkb
ox item to this newly created region. You learn more about the items later in this
course. To summarize, in this lesson, you learnt how to create a page in an APEX
application. You also learned about the various page types and its components. I
hope you learned something useful. Thank you for watching.
Dynamic Content Region
Welcome to this lesson on dynamic content region and global page. In this lesson
, you will learn about the dynamic content region type and its advantages. You al
so learn about the global page in APEX.
What is a dynamic content region? Dynamic content region is based on PL/SQL th
at enables you to refresh the region dynamically. The dynamic content region ha
s an attribute called PL/SQL function body returning a CLOB. It displays any HTML
value you return using this CLOB.
By doing so, you can now refresh the region without submitting the entire page.
Note that it is the developer's responsibility to ensure that the generated HTML is
accessible and secure. Untrusted content should be escaped appropriately to avo
id cross-site scripting.
This is similar to the PL/SQL dynamic content region we had earlier with a few di
fferences. Namely, the region returns a HTML value as a CLOB instead of a HTTP
package. And now, it supports lazy loading. The region is now refreshable. And al
so, the region now supports both PL/SQL and JavaScript as MLE. To use a dynami
c content region, all you need to do is create a region and select the type as dyn
amic content. Then you can enter the appropriate PL/SQL or JavaScript for the so
urce.
Let us now see a demo. So I am in my APEX workspace home page. And I have a
sample application called Demo App created. Let's go into the app. And here, to
demonstrate the dynamic content region, I'm going to create a blank page.
Let's call it dynamic content region and create the page. So this is a blank page.
And under Body, I'm going to add a new region. Right click on Body. And click Cr
eate Region.
Here, I'm going to select the type as Dynamic Content. As soon as I select the ty
pe as Dynamic Content, you see an error here. That means that you have to prov
ide a PL/SQL function body returning a CLOB. So this will be the source for your d
ynamic content region.
Let me open the Code Editor to enter the PL/SQL function body. I have a sample
PL/SQL body I created. And here, I am displaying the current system date and als
o some static content. And I am returning this as a CLOB. So this is just a simple
example. And you can have any custom HTML returned as a CLOB for this region.
Let me validate the code and click on OK. Next, I'm going to add a button to this
region so that we can use it to refresh the region. I'm going to call the button as
Refresh. And for Slot, I'm going to select Copy.
Now, I can refresh this Dynamic Content region using this button in two ways. I c
an create a dynamic action on the button or call a JavaScript API. So I'm going to
create a dynamic action.
I'm going to give the dynamic action a name. And for true action, I'm going to sel
ect the action as Refresh. And I'm going to refresh the region, which is the dyna
mic content. So on click of the button, it's going to refresh this region.
Let us run the page and see how it looks. As you can see, we have a Dynamic Co
ntent region. And it's displaying the current time. So when I click on Refresh, as y
ou can see, the current time changes. This is just to indicate that this region has
been refreshed without reloading the entire page.
Now, to test this functionality, let us go back to the page and add a Classic Repor
t region. I'm going to add another region. And this is going to be a Classic Report,
where I'll be displaying the employees from the sample data set.
So first of all, I'm going to pick the Employees table. And now, let me run the pag
e. So as you can see, below the Dynamic Content region, there is a classic report
of the employees' data. Now, let's say I go back to my Object Browser and insert
a new record into my M table.
So I've inserted a new row of data for an employee called Demo. Now let's switch
back to the application. And here, ideally, if I refresh the page, the classic report
must refresh with the new row which I have inserted earlier. But let's see what h
appens when I click on the Refresh button.
As you can see, only the Dynamic Content region is getting refreshed. And the cu
rrent time is getting updated. But the classic report remains the same. And you d
on't see the new row that we inserted earlier. This is because the page is not get
ting submitted or reloading. The new row will not appear unless I reload or refres
h the page. So I hope you found this concept interesting. And this was just a sim
ple demonstration of the Dynamic Content region.
Now, let us learn about the Global Page in APEX. A global page, previously referr
ed to as page 0, functions as a master page. The unique feature of the Global Pa
ge is that the Oracle APEX engine renders all components you add to the global p
age on every page within your application. You can further control whether the A
PEX engine renders a component or runs a computation or validation by defining
conditions. Note that you cannot run the global page directly from the Page Desi
gner. You can create a global page for each application. The Global Page option o
nly appears if the application does not have a global page already.
Now, let us look at a short demo. I have a Demo App in my APEX workspace. And
currently, there is no global page in this application. So let me go ahead and crea
te a global page.
Remember that the option to create a global page appears only if you do not alre
ady have one in your application. So I'm going to select Global Page. And by defa
ult, the page number is 0. But you can change it if you would like. I'll go ahead a
nd create the page.
So this is the global page. And whatever you add in this page is going to appear
on every page in your application. As you can see, you can add computations an
d validations. But you cannot add any processes.
So to demonstrate, let me go ahead and add a static content region. Let's say on
every page, I would like to display a welcome a message. So once I finish adding
the source, I'm going to click on Run Page. And let's see what happens.
As you can see, we cannot directly run a global page from the Page Designer. So
navigate back to the Application home page. And run the application. As you can
see, the welcome message is displayed on all pages of the app. Another use case
would be adding a chat or ask button so that the icon is displayed on all pages of
your application.
Run time Developer Toolbar Debug(APEX_DEBUG)
Hello, and welcome to this lesson on using Runtime Developer Toolbar. In this les
son, you are introduced to the Runtime Developer Toolbar, you understand the f
unctionality and get an overview of the capabilities. You also learn to edit a page
, change the app theme, and use the debug mode.
What is the Runtime Developer Toolbar? When you run an application from the A
pp Builder and view a page, the Runtime Developer Toolbar displays at the botto
m of any editable page. You can use the Runtime Developer Toolbar to quickly e
dit the current application or currently running page or view the session state.
The Runtime Developer Toolbar contains controls for navigating to the workspac
e home page, or the application home page, or directly navigating to the Page D
esigner of the current running page. You can also view the session state and ena
ble and view the debug mode. You have options to quickly edit and access live te
mplate options.
You further have options to customize the theme using the Theme Roller, where
you can access a live CSS editor that enables you to quickly change the theme st
yle, colors, and other attributes. You will learn more about these features in the u
pcoming modules. You also have other options to view the page performance, co
ntrol layout options, control layout columns, and view landmarks for accessibility.
So once you run the app, you might need to make changes to the page. You can
either edit a page in the Page Designer or modify template options instantly usin
g the Runtime Developer Toolbar. Clicking on app number or edit page number w
ill navigate you to the Page Designer and open the corresponding page for you to
edit in the Page Designer.
You can also modify the template options, live by clicking on the Quick Edit optio
n in the Runtime Developer Toolbar. Then, when you move the mouse over the c
omponent for which you want to modify the template options, you get a wrench i
con in the upper right corner. Clicking the wrench icon will open a wizard for you
to modify the template options.
Next, let's learn how we can utilize the debug mode from Runtime Developer Too
lbar. You can use the debug mode to track down unexpected application behavio
r. You enable or disable debug mode for the current page and session by clicking
the Debug on the Runtime Developer Toolbar.
If the debug mode is enabled, debug data is captured in the background. You ca
n view debug messages at runtime by clicking the Debug option and selecting Vi
ew Debug from Runtime Developer Toolbar. A debug page appears. To view step
s that took the longest, hover over the step on the graph above the report.
You can also view all debug messages generated by an application from the Utilit
ies page from your App Builder. You can also use the f?p syntax to run an applica
tion in debug mode. To do so, simply call the page and set the debug argument t
o yes or level n, where n is between 1, which is least detailed, and 9 being most
detailed.
In the image displayed on the screen, you can see that the debug argument is se
t to yes. This enables the debug mode, and you can view the debug information
as usual. Let's look at a demo of the runtime developer toolbar in an APEX app. S
o I am in my APEX application home page, and I have installed the sample report
ing app from my gallery.
Let's click on Run Application to see the Runtime Developer Toolbar. So when yo
u run an application as a developer, you see a Runtime Developer Toolbar at the
bottom. This consists of many options, which come in handy as a developer to ed
it the application on the fly.
For example, you can see there are icons to navigate to the workspace home pa
ge, which is the Oracle APEX home page. You can also navigate to the applicatio
n home page, which is represented by application ID, and next, you have the edit
page number.
So clicking on Edit Page 10 will take me directly to the Page Designer and open p
age 10 for me, where I can make the changes or customize the page. Now, let's
navigate back to the application. In the Developer toolbar, you also have option t
o view session state and session overrides.
Here, you can see the session ID and other parameters. If your application behav
ior is different, and you would like to debug, we also have the option to debug. A
nd here, you can enable debug and select the debug level, if you want a generic
info which is the default, or you have the app trace and the full trace.
So by default, the debug option is off. You can enable the debug by clicking on a
ny of the options here, which will enable debug for you, or you can even do it fro
m the URL in your address bar, which I'm going to show it to you in a second. So
once you enable the debug option, you can view the debug by opening a page w
here you can see the debug for your session.
So clicking on the entry will open a report for you, where you can see all the deb
ug information. You can also click on the graph here to see the particular entry in
the report. All right, let's go back to the application. So let's say my debug option
is currently off, so there's another way to enable your debug option.
And to do that, you can go to your address bar. And here, the debug is currently
no, and you can set it to yes. And this will enable the debug option for you, which
is the default debug info level. If you want to change the level of your debug, you
can enter the particular number. For example, 1 to level 10.
Next, we also have an option for quick edit. So clicking on Quick Edit will enable c
ursor for you, where you can hover over the regions in the page. Let's say I want
to edit this region in the page. And when you hover over that region, you get a w
rench icon at the top right.
So clicking on the wrench icon will open the template options for you, where you
can edit the template options without going to the Page Designer. Let's say I wan
t to change the icon shape to circle, so you can do that and click on Save, and thi
s will change the template options for your application.
You also have options to customize the theme of the application, edit logo, and e
dit the app icon Theme Roller is a very effective way to change the UI of your ap
p. I am not going to dwell into the Theme Roller, since you will be learning more
about it in the upcoming modules.
Apart from that, you
also have options to show the landmarks, headings and layout columns, which is
going to help in the accessibility of the app. Clicking on the gear icon will show y
ou options to customize your developer toolbar and the display of it, whether you
want to display it to the right, left, or at the top.
There's a lot you can do using the Runtime Developer Toolbar, and it's a great to
ol for any developer who is developing an APEX app. In this lesson, you will learn
to use the Runtime Developer Toolbar. You now know how to edit a page and util
ize the debug mode. I hope you learned something useful. Thank you for watchin
g.
Locking and Un locking in apex
Welcome to this lesson on locking and unlocking a page. In this lesson, you will le
arn the importance of locking a page while editing an app and how to lock a pag
e. You also learn to unlock a page.
Before we learn how to lock or unlock a page, let us learn how to determine if a p
age is locked in an app. A lock icon in the toolbar indicates whether a page is cur
rently locked. If a page is unlocked, the icon appears as an open padlock. If the p
age is locked, the icon appears as a locked padlock.
A lock icon appears on the application home page and on that particular page. T
o view the lock icon on the application home page, you can switch to the View Re
port mode. A report appears. And the lock icon appears in the report under Actio
ns.
So why do you need to lock a page? By locking a page, you can prevent conflicts
during application development among developers. Developers can lock a page
on the application home page, Page Locks page, and in the Page Designer. Passi
ng your cursor over a locked page button displays a tooltip that indicates who ha
s locked the page. Only the developer who locks a page can unlock that particula
r page. However, if you are an admin, you can unlock pages locked by other dev
elopers.
Let us now look at a demo. Let's say I, along with a few other developers, are wo
rking on an APEX application called Sample Reporting. So here, we have multiple
pages. And we are all working on different features.
Let's say I want to edit the classic report page. And while I'm working on it, I do n
ot want any of my peers to make changes to this page. So to ensure that, I'm goi
ng to lock the page.
When you are in the Page Designer, you can see a padlock icon on the app Page
Designer toolbar. So currently, the padlock icon is unlocked, which indicates that
the page has not been locked by anybody. Clicking on the padlock icon will open
a wizard, where you can enter any comment if necessary. And click on Lock.
So once you lock the page, the padlock icon changes its appearance into a locke
d status. And the color is changed to red. This indicates that the page has been l
ocked. And if you hover over the padlock icon, it shows who has locked the page.
So let's say I am working on this page. And once I finish my work, I am going to g
o ahead and unlock the page. So to unlock the page, you go and click on the sam
e padlock icon. And you can add any comments if necessary. And then click on u
nlock. So once you click on unlock, the padlock icon changes its appearance agai
n, which indicates that the page has been unlocked.
Now, there is another way to see if the pages in the app are locked. Go back to y
our application home page. And here, if you toggle to the Report view, there is a
column called Actions, where you can see whether the pages have been locked b
y someone or by you or if the pages are unlocked. So as you can see here, the in
teractive report has a different icon. If you hover over the icon, it shows that the
page has been locked. And it also shows that it was last updated by Steve.
So let's go to the Interactive Report page. And here, if you hover over the padloc
k icon, you can see that the page has been logged by Steve. So only the develop
er who has logged the page will be able to unlock the page unless the administra
tor of the workspace has rights to unlock the page of any developer.
Now, let's say I am just another developer. So clicking on it, I can see that the pa
ge has been locked. And I will not be able to edit the page until they unlock it. So
if I am an administrator of the workspace, I will get an option to unlock the page
as well.
Developing Reports:
Welcome to the module on developing reports. In this lesson, we will learn how t
o create reports in APEX. My name is Apoorva, and I'm a senior product manager
for Oracle APEX. Let's get started.
In this video, you will learn the different types of reports in APEX and the differen
t ways of creating these reports. Our report in Oracle APEX is the formatted resul
t of a SQL query. You can generate the SQL query by selecting a table or view in
a wizard, or by defining the SQL query manually.
On the screen, you can see the different report types. The Interactive Report, Int
eractive Grid, and Classic Report. Now on this screen, you can see examples of F
aceted Search, Cards, and Smart Filters.
The main difference between the different types of reports is the extent and the
way in which end users can customize the appearance of data through searching
, filtering, sorting, column selection, highlighting, and other data manipulations.
You'll learn more about each of these report types in the upcoming videos.
Let us look at some of the capabilities of different reports. Now when viewing an I
nteractive Report, end users can customize how and what data to display. You ch
oose an Interactive Report if your requirement is end user customizations.
On the other hand, an Interactive Grid presents users with a set of data in a sear
chable and customizable report. In the editable Interactive Grid, users can add,
modify, and refresh data directly on the report. Plus the end user has the ability t
o rearrange the report interactively using the mouse.
You choose an Interactive Grid if your requirement is to allow end user editing an
d refreshing directly on the report page along with the end user customization of
the report. If you do not need any of these customizations or built-in search bar a
nd drill down capabilities, then you can choose a Classic Report.
APEX allows you to create reports by running a wizard or by dragging and droppi
ng the region type in the Page Designer. App Builder includes built-in wizards tha
t enable you to generate these reports.
Using these wizards, you can create a report when you create a new database ap
plication, create as a new page in an application, or create a report region on an
existing page in an application.
Let us now quickly review the steps involved in creating a report using the Creat
e Application wizard. First, on your workspace home page, click on App Builder ic
on and click on Create. Select New Application and enter the application details, t
hen click on Add Page.
In the Add Page dialog, select a report of your choice. Enter the page details like
name, source, and type. Finally, accept the defaults and click on Create Applicati
on.
Now let's go ahead and see how to create an Interactive Report or a Classic Repo
rt using the Create Application wizard. On the screen, you can see that I have op
ened my APEX workspace.
To create a new application, go to App Builder and click on Create. Select New A
pplication. Then, click on Add Page to add a report page.
In the Add Page dialog, you can select a variety of reports, such as Cards, Facete
d Search, Interactive Grid, Interactive Report, and Classic Report. For the purpos
e of this demo, I'll choose Interactive Report.
In the Add
Report dialog, enter a name for the report page. Select an icon to display in the n
avigation menu for this page. Select the source for the report, either a Table or a
View or a SQL Query. What you select determines what displays next. For this de
mo, I'll select Table or View.
And then, you have a choice to select the type of report that you need, either Int
eractive Report or
a Classic Report. For this demo, I'll accept the default selection of Interactive Rep
ort. Now, select the Table or View.
I select Table, which already resides in my database. And optionally, you can sel
ect the Include Form checkbox to include a linked form page to enable users to
maintain the table values. Finally, click on Add Page.
Accept the other defaults and click on Create Application. Run the application.
Therefore, in this demo, you learned how to create an Interactive Report using th
e Create Application wizard. Now you can create the same report using the Creat
e Page wizard. Let's see how that is done.
Go back to your application home page and click on Create Page. The Create Pag
e wizard supports reports report such as Interactive Report, Interactive Grid, Clas
sic Report, Faceted Search. Now select the type of report.
I'll select Interactive Report. Then follow the onscreen instructions to create the r
eport. You can choose to create the report with the form. So enable the Include F
orm page and provide a name for the form.
Choose the Data Source, where I'll accept the defaults of Local Database and the
Table, and select the same Projects table. You can choose the preferred navigati
on and click on Next.
The Primary Key is selected by default from the table. You can also add a second
ary Primary Key Column. Finally, click on Create Page.
Now, a new page is added to an existing application. And we can run the page. T
o see that an Interactive Report is created as a new page.
Since we enabled the form, you can see an edit icon next to each record. Clicking
on that will open a drawer form where you can edit the details of the record.
You can also create a new report region on an existing page in an application. To
show you this demonstration, I'm going to create a new blank page. Projects R3.
So first, I'm going to show you how we can drag and drop a report region onto th
e layout. In the Gallery menu, under Regions tab, select Interactive Report.
Click and hold the mouse and drag it to the desired location in the Layout tab. W
hen the mouse is over the appropriate location, the Layout tab displays a dark an
d yellow tile. Now release the mouse to drop the region.
The page designer indicates what actions are required next. The Messages tab di
splays a red or yellow badge indicating the number of messages you need to add
ress. When you can click on each message and edit the attributes in the Property
Editor, you need to select a source table name for the Interactive Report region.
So from the list of tables, I select Projects. And then, you can provide a title for th
e region. Click on Save. Save and run the page.
So here, you can see that we created an Interactive Report on an existing page.
Let's go back to the Page Designer.
Now another way of adding the report region is to right-click on the body in the r
endering tree and create a new region. Select the new region. And in the propert
y editor, you can change the Type to Interactive Report.
Provide a title and address the errors. We need to provide a table name. Select t
he appropriate table for the report and click on Save.
You can also add the Interactive Report from the Gallery menu using the context
sensitive menu. In
the Gallery tab, under Region, select the region that you want. For example, Inte
ractive Report. Right-click on that and it shows a context sensitive menu.
Then you can go to Add To and select the region in the layout where you would
want to add the report. Let's run it. And you can see the same report that we add
ed using the rendering tree.
So
to summarize, you can also drag and drop the report from the Gallery section. Yo
u can right-click and use the Context Menu in the rendering tree. You can also us
e the Gallery Context Menu to insert the report region.
In this video, you learned about faceted search and smart filters in Oracle APEX. I
hope you learned something useful. Thank you for watching.
Learning to Create Various Reports
Welcome to the module on developing reports. In this lesson, we will learn how t
o create various reports in APEX. In this video, you will learn how to create an int
eractive report, an interactive grid, and a classic report. You are introduced to Int
eractive report in the APEX foundations course. What is an interactive report?
An interactive report is a formatted result of a SQL query. Both the creator applic
ation wizard and the create page wizard support the creation of interactive repor
ts. You choose a table on which to build a report or provide a custom SQL statem
ent or a PL/SQL function returning a SQL statement.
Note that end users can customize the report layout and the data displayed by s
electing options on the actions menu. You can restrict the capabilities of interacti
ve reports available to the end users. Such as disabling download or support for
hiding a column. Let's go ahead and create an interactive report. I have a sample
application open for the purpose of this demo.
We already reviewed creating an interactive report in the previous video. So to r
ecap, let's click on create page. Select interactive report, enter the details, such
as the page name and enable the include form page if you'd like to enable editin
g.
For the data source, I am going to select the local database table. Choose the pr
eferred navigation and click on next. Select a primary key column. I accept the d
efault and click on create page. Let save and run the page.
When viewing an interactive report, end users can customize how and what data
is displayed. By default, the interactive report includes a search bar, an actions
menu, column heading menus, and edit icons in the first column of each row.
Using the options on the actions menu, users can alter the report by hiding or ex
posing the columns, applying filters, starting, aggregating adding computations.
Adding control dates and highlighting certain records.
You can also add charts group by and a pivot. Once customized, the end users ca
n save the report as either a private report or a public report. What is an interacti
ve grid? An interactive grid presents users a set of data in a searchable customiz
able report.
Functionally, an interactive grid includes most of the customization capabilities a
vailable in the interactive reports plus the ability to rearrange the report interacti
vely using the mouse and keyboard. Both the create application wizard and the c
reate page wizard support the creation of interactive grids.
Now let's go ahead and create an interactive grid. I have the application homepa
ge open in my workspace. I'm going to use the create page visit to create an inte
ractive grid. Enter the interactive grid details, such as name.
You can choose to include a form page or since interactive grid allows users to e
dit on the fly, this would not be necessary. Select a data source. Here I select a lo
cal database table. And you have an option to enable editing enabled.
Enabling this option will allow the users to edit the data in the database table fro
m the interactive grid. But if you enable editing on a view that is not updatable, t
hen the interactive grid generated will fail when users try and update the records
.
Select a navigation preference and click on next. Select a primary column and ac
cept the default column and click on create page. Let's save and run the page. Y
ou can see that the interactive grid is displayed. Note that interactive reports ge
nerate all the HTML markup on the server as part of the picks page.
The data returned from the SQL query is rendered along with all the other marku
p that makes up the UI, the toolbar, the dialogues and everything. The clients' be
haviors are implemented in a single monolithic JavaScript module.
In contrast, interactive grid does all the HTML rendering on the client. The server
provides the data in JSON format. Now the unique feature of interactive grid is th
at the user can log or freeze the doors.
The users can lock, hide, freeze, filter, highlight, sort individual columns, create,
control breaks on specific columns using the actions menu. Users can also directl
y customize the appearance of an interactive grid. The users can use their mous
e and drag and drop the column at the desired place.
Once customized, the report can be saved either as a private report or a public r
eport. You can even add a new door, which adds a new record into the database
table. You can edit the values the grid directly and finally click on save to save th
e changes.
Finally, let's talk about classic reports. A classic report is the formatted result of
a SQL query. Developers choose a table on which to build a report or provide a c
ustom sequence statement or a PL/SQL function returning a SQL select statemen
t. With the exception of sorting and simple filtering, and users cannot customize
a classic report.
Now let's go ahead and create a classic report in the APEX workspace. I have the
sample application open in my APEX workspace. From the application home page
, click on create page intellect classic report. Enter a name for the classic report.
You can choose to include a form page along with it and select the data source.
Choose the navigation preference and click on create page. Let's save and run th
e page and see how it looks.
Here you can see that the classic report is displayed and it has no option to searc
h or filter. You can only sort this column by clicking on the column heading. Since
we did not include the form page, there is no option to edit the record as well. To
summarize, in this lesson, you learn how to create an interactive report, an inter
active grid, and a classic report. I hope you learned something useful. Thank you
for watching.
Creating Faceted Search, Cards, and Smart Filters.
Welcome to the module on developing reports. In this lesson, we will see a contin
uation of creating various reports in APEX. Let's get started.
In this video, you will learn how to create smart filters, faceted search, and cards
in APEX.
Faceted search is often seen on e-commerce or sales websites. The end user can
set filters using facets on the left or upper side of the screen. A facet shows possi
ble values together with the occurrence count within the result set. When an end
user changes a facet, the results, the dependent facet, and the occurrence count
s refresh immediately. On the screen, you can see a classic report of the projects
table on the right, and the facets related to this table on the left. Let's review the
steps involved in creating a faceted search.
On your application home page, you click on Create Page and select Faceted Sea
rch. Specify the page attributes, select the data source for the page, select your
navigation preference, and then you need to select the Faceted Search Display V
iew as either reports or guides. Select the facets to include on the page. Finally,
click on Create Page.
Now, let's switch to the APEX workspace and see a demo on how to create a face
ted search page. I have a sample application open in my workspace. So to create
a faceted search page, I click on Create Page. And here I select Faceted Search.
Specify the page attributes-- name, the data source. Select a data source for the
page. You can create a faceted search page for tables and SQL queries, for local
database, REST-enable SQL servers, and the REST data sources.
The table I select, the projects table. For navigation, select your preferred breadc
rumb and navigation, and click on Next. Now, for local tables APEX maintains a di
ctionary cache containing information about the table columns, porting keys, and
actual data. Based on this cache, APEX can propose appropriate facets and then
create them automatically for you.
Select the facets to include in the report. Here, I leave the default and select all t
he facets. Facets display as check-boxed facets for each of the columns which ar
e grouped so that it looks like a single facet. Facet recommendations are based o
n statistics of data in your table. Click Refresh to refresh the column statistics to
provide better recommendations.
Then finally, click on Create Page. Let us save and run the page. Here, you can s
ee a faceted search page features a faceted search region and a report. The sear
ch region is displayed on the left side of the page and enables users to narrow do
wn the search results by selecting the facet values. Narrowing the search result
makes it easier for users to find the desired data.
The right side of the page features a search results region, which can be displaye
d as a classic report or cards report. Now, let's take a look on cards. A cards page
features colorful blocks which resemble index cards laid out on a page. A cards r
eport region declaratively supports customizations of layout, and appearance, an
d the inclusion of icons, badges, media, and actions.
Use cards to embed and share media sourced from a blog column, URL, or video
in an iframe. On the screen, you can see an example of a cards page built on the
projects table. Each card can display a variety of information pulled from the colu
mns in the underlying table. Both the Create Application Wizard and the Create P
age Wizard support the creation of cards.
Now, let's go ahead and create a cards region in the APEX workspace. Now I hav
e a sample application open in my workspace homepage. To create the cards pa
ge, I click on Create Page, and Select Cards as component. Under the name for t
he cards page, select the data source. I'm
going to select a local database table called Projects.
Enter the preferred navigation and click on Next. Here, you can choose from a di
fferent cards layout. I'll accept the default grid layout, and you can edit the title c
olumn, body column, icon initials column, and back column. I'll accept the default
values and click on Create Page.
When you click on Save and rung page, you can see the projects laid out in tiles.
And each tile has information about the project title and the task name. Now, we
can edit these card attributes further.
To do so, click on Edit Page. Select the card regions by navigating to the renderin
g tree, and then the Body, select the cards region. And then in the property edito
r on
the right, click on Attributes tab. Here, you can edit all the cards attributes. The a
ttributes are segregated into groups. And you can either filter the group by enteri
ng the group name here, which will filter the group for you, or you can click on th
is down arrow and select a group that you want to edit.
Let's go ahead and edit some attitudes. So I'll add a subtitle column, as task nam
e. And I'll change the body column, my status. Under Media, you also have an op
tion of advanced formatting. Advanced Formatting option enables support for HT
ML expressions and supported substitution strings.
Now, this Advanced Formatting option allows all free-form text attributes such as
CSS classes, icon, or image description, or badge label, support column substituti
ons through standard substitution string syntax. I'm going to enter an advanced f
ormatting HTML expression. Here, I'll use the substitution string for start date, en
d date, budget, and cost.
So click on Save. And save and run the page. Here you can see that the cards ar
e updated. To display a
title and subtitle, here you can see the advanced formatting HTML text that we e
ntered. You can even add or
you can customize this card further by adding an icon badge and so on.
The Smart Filter page features a single search field with filters at the top of the p
age and a report at the bottom. Each filter is displayed as a suggestion chip with
a single count of how often the specific suggestion value occurs. You can create
a smart filters page with either the Create Application Wizard or the Create Page
Wizard, or you can add a smart filters region to an existing report in the Page De
signer.
On the screen, you can see an example of a smart filters page built on the Projec
ts table. Let us see a demo on creating a smart filters page. I have the sample ap
plication page open in my workspace. Here, I'll click on Create Page, and choose
Smart Filters as the component. Enter a name for the page, select a data source
for the page. You can create smart filters page for tables and SQL queries for loc
al database, REST-enabled SQL Servers and REST data source.
For this demo, I'll accept the default local database table option. And select a tab
le name, called Projects. Select the navigation preference. Then click on Next. Fo
r display, you can either choose to be displayed as a report or cards. Select the fi
lters to include in the report. Filters display suggestion chips, filters in the dropdo
wn list or optionally on the More filters list at runtime.
Filter recommendations are based on statistics of data in your table. You can clic
k on Refresh to refresh the column statistics to provide better recommendations.
And then click on Create Page. Let's save and run the page. Here, you can see th
e suggestion chips that are displayed beneath the search field. Selecting on one
suggestion chip will automatically filter the report below.
While
a smart filters page behaves similarly to a faceted search page, it features a mor
e space efficient layout. Clicking on the filter suggestion chip will display the valu
es of the column. And you can further filter the names. For example, you can see
that the values are updated accordingly.
Now, let's say I want to add a new smart filter. To do this, I'll edit the page. Now,
let's assume that the status filter is missing and we want to create a new filter. T
o do so, locate the filters region in the rendering tree. Right-click on filters, select
Create Filter. Ensure that the new filter is selected, and update the attributes in t
he property editor.
So I'm going to enter the name and status. For type, I'm going to accept the defa
ult checkbox group. Under list of values for type, select Distinct Values. Under So
urce, ensure that the database column is STATUS. Click
on Save and run the page.
The new filter is displayed along with the other smart filters.
To summarize, in this lesson, you learned how to create a faceted search, cards,
and a smart filter in an APEX application. I hope you learned something useful. T
hank you for watching.
Content Row
Welcome to this lesson on using Content Row. In this lesson, you are introduced t
o Content Row. You also learn how to use the Content Row in a Classic Report. S
o what is a Content Row? Content row is a classic report template that is suitable
for displaying most types of content. This report features a column for selection,
such as a checkbox or radio button, an icon, title, and description, miscellaneous
attributes, and actions.
On the screen, you can see the attributes available to customize a content row u
sing the column names in the SQL query. Substituting these attributes with colu
mn names will customize the Classic Report into a content row type.
Let us look at a demo. To demonstrate Content Row, I am going to create a new
page in my Demo app. So I click on Create Page. And here, I select the type as C
ontent Row. I provide a name. And click on Create Page. So when I create a page
of type Content Row, it gives me a content row demo region with some sample S
QL query. So before we make some edits, let's see how the page looks.
Here, you can see that I have a region with some sample dummy text. So we can
edit this region by editing the page attributes. Let's go back to the Page Designer
. And here, I'm going to change the source and select the type as Table. And her
e, I'm going to select the M table that we have from the sample data set. So once
I have the source selected, I switch to the Attributes tab in the Property Editor. A
nd here, I can enter a value for each of these attributes so that it displays the ass
ociated values.
So let's say I have these columns from the table. And so based on the attribute v
alue I provide, it's going to display in this UI template as shown. All right. So for o
verline, I'm going to enter the job. And for title, I am going to enter the employee
name. And for description, I am just going to have the hire date. There are many
more attributes, where you can display the avatar badge and so on.
So let's enable Display Avatar. And you can even customize the avatar as per yo
ur requirements. I am going to choose the default type as icon, but you can also
have your custom image uploaded. And here, I can change it to circular. So let's
see how it looks. I'm going to run the page. As you can see, the employees' detai
ls are being displayed as Content Row instead of a boring Classic report.
In this demo, I just showed you one example of creating a content row by creatin
g a Content Row page. But you can also modify your existing Classic Report by c
hanging the Classic Report region type to Content Row. So this is a very effective
way to customize your Classic Report and make it more beautiful.
In this lesson, you are introduced to Content Row in APEX. You saw how to enhan
ce your Classic Report using Content Row to display the report in a customized m
anner. I hope you learned something useful. Thank you for watching.
Customizing Interactive Reports
Let's get started. Interactive report has various components using which the end
user can customize the interactive report. Some of these components are-- linke
d to custom target using which the end user can link to another page in their app
lications or can link to a single review.
Search bar using which the end user can search through the data available in int
eractive report. Saved reports. This is where all the reports created by the end us
er are displayed, and the end user can choose the report he wants to view from t
his dropdown.
Column heading menus. The column heading menus in interactive report are als
o loaded with a lot of features, like sorting, freeze, hide, et cetera. Interactive rep
orts also have actions menu under which there are various options like columns,
filter, data, format, et cetera using which the end user can format or customize t
he interactive report.
Using the search bar available in the interactive report toolbar, end users can se
arch for information in an interactive report. To perform a search in the entire int
eractive report, enter your search criteria in the search field available in the inter
active report toolbar and click Go.
A filter is applied on the report, and all the rows that contain the search criteria a
re displayed. In the example you see on the screen, the interactive report display
s all the rows which has the discussion. You can also search for information withi
n a specific column in an interactive report using the select columns to search ic
on available to the left of the search bar.
This dropdown displays all the columns available in the interactive report. You ca
n select a column and then enter the search term to search information within th
at particular column. For example, on the screen, the search is being performed
on the project column available in the interactive report.
Once the search term is entered in the search bar and you click on Go, the intera
ctive report applies filter on the data available, this time searching with the proje
ct column for the search criteria. In an interactive report using the columns dialo
g under Actions menu, you can control which columns should be displayed in the
interactive report and in which order the column should be displayed.
To select columns to display, click on Actions menu and select columns option. A
nd this opens the columns model dialog. Here you can shorten the columns betw
een do not display and display in report sections. You can also reorder columns u
sing the up and down controls available beside the Selected item.
Once you are satisfied with the configuration, you can click on Apply, which then
refreshes the report applying the selected configuration. You can create two type
s of filters in an interactive report. The first one is column filter using which you c
an apply a filter on a specific column available in the report. The second one is th
e row filter using which you can apply a custom filter on an entire row.
Let us have a quick demo of what we have learned so far in this lesson. What yo
u see on the screen is a simple interactive report, which is displaying data from P
rojects table. So what you see here is the search bar, wherein as an end user, yo
u can search for specific key items, and then you click on Enter. The data in the g
rid will be refreshed.
And all the rules that contain this search term develop are displayed in the repor
t. Now this is a row-based search. We can also search for data in specific column
s by using the Select Column to Search button, and selecting the column you wa
nt to search.
For example, when I select description, as you can see, the placeholder in the se
arch bar, it's now displaying search description. And now when I type the term d
evelop, and the filter will be applied only on that particular column. Only the row
s where the description column contains the search term develop are displayed o
n this report.
This is how you as an end user can search for information in an interactive report
. You can also select which columns should be displayed in the report and which
columns should not be displayed in the report using the columns option available
under Actions menu.
If you click on the columns option, it opens the Select Columns dialog. Here you
have a Selected item where you can move all the columns you want to display in
the report to the right hand side. And for example, I don't want to display the cre
ated, created by, updated and updated by columns in the report. So I can move t
hem to the Do Not Display section and click on Apply.
And now as you can see, those columns are hidden from the report view. Not just
that, using the columns option, you can also reorder the columns in this report. F
or example, I want to move the main column to the top, and then comes the des
cription column, and then the status column.
Using the columns dialog, I can also reorder the columns in the report. And when
I click on Apply, the columns are displayed in the specified order. This is how you
can use the columns dialog to hide and display columns, as well as reorder colu
mns in the interactive report.
Coming to the second option available under Actions menu is filter option using
which you can filter the data in the report. Here you have two options. You can ei
ther filter based on a column or you can apply complex filtering conditions on an
entire row.
For example, if I want to filter all the columns where status is equal to let's say--
so I can click on the list of values available for this column and select in progress.
And now when I click on Apply, the report will be refreshed, displaying all the rule
s where the status column is equal to in progress.
And I can also apply a row-wise filtering. For example, I want to filter the columns
where the status column-- the status column is equal to in progress. And the bud
get column is greater than or equal to 30,000. So this is how I can apply a compl
ex search.
The interactive grid refreshes showing only the rows where the Status column is i
n progress and the budget column is greater than 30,000 as per the filter that we
have applied. This is how we can apply filters on a specific column on an entire r
ow in interactive reports using the filter option available under Actions menu.
To summarize, in this lesson, you have learned how to use interactive report com
ponents to customize your interactive report. You have also learned how to apply
filters in an interactive report and search for data. Additionally, you have also lea
rned how to control the display of columns in an interactive report using the Acti
ons menu. Hope you have learned something new. Thank you for watching.
Customizing Interactive Report
Welcome to Oracle APEX Developer Professional course. My name is Toufiq. I'm S
enior Product Manager for Oracle APEX. Using interactive reports, you can displa
y your data in a two dimensional table or format having rows and columns.
It is called interactive report and not simply report because with interactive repor
t, you can interact with the data in the form of applying filters, creating charts, a
pplying highlighting, et cetera. In this module about customizing your interactive
report as an end user and as a developer, you will learn how end users can custo
mize an interactive report using the Actions menu.
You will also learn how you, as a developer, can customize your interactive repor
t. Additionally, you will also learn how you can save the customizations in your in
teractive reports in the form of a public report or a private report. In this first less
on, you will learn about various components available in interactive reports that
can help you customize. You will also learn how to search for data in an interacti
ve report by applying filters.
Let's get started. Interactive report has various components using which the end
user can customize the interactive report. Some of these components are-- linke
d to custom target using which the end user can link to another page in their app
lications or can link to a single review.
Search bar using which the end user can search through the data available in int
eractive report. Saved reports. This is where all the reports created by the end us
er are displayed, and the end user can choose the report he wants to view from t
his dropdown.
Column heading menus. The column heading menus in interactive report are als
o loaded with a lot of features, like sorting, freeze, hide, et cetera. Interactive rep
orts also have actions menu under which there are various options like columns,
filter, data, format, et cetera using which the end user can format or customize t
he interactive report.
Using the search bar available in the interactive report toolbar, end users can se
arch for information in an interactive report. To perform a search in the entire int
eractive report, enter your search criteria in the search field available in the inter
active report toolbar and click Go.
A filter is applied on the report, and all the rows that contain the search criteria a
re displayed. In the example you see on the screen, the interactive report display
s all the rows which has the discussion. You can also search for information withi
n a specific column in an interactive report using the select columns to search ic
on available to the left of the search bar.
This dropdown displays all the columns available in the interactive report. You ca
n select a column and then enter the search term to search information within th
at particular column. For example, on the screen, the search is being performed
on the project column available in the interactive report.
Once the search term is entered in the search bar and you click on Go, the intera
ctive report applies filter on the data available, this time searching with the proje
ct column for the search criteria. In an interactive report using the columns dialo
g under Actions menu, you can control which columns should be displayed in the
interactive report and in which order the column should be displayed.
To select columns to display, click on Actions menu and select columns option. A
nd this opens the columns model dialog. Here you can shorten the columns betw
een do not display and display in report sections. You can also reorder columns u
sing the up and down controls available beside the Selected item.
Once you are satisfied with the configuration, you can click on Apply, which then
refreshes the report applying the selected configuration. You can create two type
s of filters in an interactive report. The first one is column filter using which you c
an apply a filter on a specific column available in the report. The second one is th
e row filter using which you can apply a custom filter on an entire row.
Let us have a quick demo of what we have learned so far in this lesson. What yo
u see on the screen is a simple interactive report, which is displaying data from P
rojects table. So what you see here is the search bar, wherein as an end user, yo
u can search for specific key items, and then you click on Enter. The data in the g
rid will be refreshed.
And all the rules that contain this search term develop are displayed in the repor
t. Now this is a row-based search. We can also search for data in specific column
s by using the Select Column to Search button, and selecting the column you wa
nt to search.
For example, when I select description, as you can see, the placeholder in the se
arch bar, it's now displaying search description. And now when I type the term d
evelop, and the filter will be applied only on that particular column. Only the row
s where the description column contains the search term develop are displayed o
n this report.
This is how you as an end user can search for information in an interactive report
. You can also select which columns should be displayed in the report and which
columns should not be displayed in the report using the columns option available
under Actions menu.
If you click on the columns option, it opens the Select Columns dialog. Here you
have a Selected item where you can move all the columns you want to display in
the report to the right hand side. And for example, I don't want to display the cre
ated, created by, updated and updated by columns in the report. So I can move t
hem to the Do Not Display section and click on Apply.
And now as you can see, those columns are hidden from the report view. Not just
that, using the columns option, you can also reorder the columns in this report. F
or example, I want to move the main column to the top, and then comes the des
cription column, and then the status column.
Using the columns dialog, I can also reorder the columns in the report. And when
I click on Apply, the columns are displayed in the specified order. This is how you
can use the columns dialog to hide and display columns, as well as reorder colu
mns in the interactive report.
Coming to the second option available under Actions menu is filter option using
which you can filter the data in the report. Here you have two options. You can ei
ther filter based on a column or you can apply complex filtering conditions on an
entire row.
For example, if I want to filter all the columns where status is equal to let's say--
so I can click on the list of values available for this column and select in progress.
And now when I click on Apply, the report will be refreshed, displaying all the rule
s where the status column is equal to in progress.
And I can also apply a row-wise filtering. For example, I want to filter the columns
where the status column-- the status column is equal to in progress. And the bud
get column is greater than or equal to 30,000. So this is how I can apply a compl
ex search.
The interactive grid refreshes showing only the rows where the Status column is i
n progress and the budget column is greater than 30,000 as per the filter that we
have applied. This is how we can apply filters on a specific column on an entire r
ow in interactive reports using the filter option available under Actions menu.
Customizing Interactive Reports as an End User - Part 2
Welcome to this module on customizing your Interactive Report as an end user a
nd as a developer. In this lesson about customizing your interactive report as an
end user, you will learn how to perform sorting and aggregation of data in your I
nteractive Report. You'll also learn how to create a computed column and perfor
m flashback query on your Interactive Report using the data submenu available
under Actions menu.
You will also learn how to format your data by applying Control Break. And using
the Highlight option, you will also learn how to highlight certain rows or cells in In
teractive Report using the Format submenu available under Actions menu. Let's
get started.
End user can also select Column Sort Order using the Actions menu available in t
he Interactive Grid toolbar. Under Actions menu, under Data submenu, there is a
n option called Sort. When you click on that option, the Sort dialog box appears.
In this dialog, the end user can select the column, direction of sorting, and how s
hould the nulls be considered in this sorting. Once the sorting order is defined, us
er can click on Apply to apply this sorting underlying Interactive Report.
You can also create an aggregation against columns in Interactive Reports. To do
that, go to the Data option available under Actions menu, and select Aggregate.
This opens up the Aggregate dialog.
Here, you can select the function and the column on which you want to apply the
aggregation function. Once this is done, click on Apply to see the aggregation bei
ng calculated for that particular column.
Another option available in the Data menu item under Actions menu is adding a
computed column. To do that, go to Data menu available under Actions submenu
, and select Compute. This opens up the Compute dialog.
Here, you can give a name to the new completed column and provide the compu
tation expression in the text box available. Once that is done, click on Apply to se
e the new computed column added to the Interactive Report.
End users can also perform a flashback query on the interactive report by selecti
ng Flashback from the Actions menu. In the Actions menu under Data submenu, t
here is an option called Flashback. When you click on that, the Flashback dialog
opens up.
Here, you can mention the flashback duration in minutes. And then click Apply. A
s soon as you click Apply, the Interactive Report will be refreshed, showing the d
ata that existed, for example, five minutes ago.
End users can group one or several columns available in Interactive Report using
the Control Break option available in the Actions menu and the Format submenu.
On clicking on the Control Break option, the Control Break dialog box appears.
Here, we can select the columns and enable the Control Break option for that par
ticular column. Once you're done, click on Apply to apply the Control Break settin
gs on the underlying Interactive Report.
End users can also customize the display of interactive report by highlighting spe
cific roles in the report based on a condition. To do that, you can go to Actions m
enu and select Format submenu, and click on Highlight from the available option
s. This opens up the Highlight dialog box.
Here, you can give a name to the highlight you're going to apply, and select whe
ther it's a raw type highlight or a column type highlight. You can also specify the
background color, text color, and see the preview of how this would look once it i
s applied.
Under Highlight Condition, you can specify the condition based on which this hig
hlight will be applied. You can specify the column, operator, and the expression v
alue. Once you're done, click on Apply. And this will highlight all the rows or colu
mns based on the highlighted condition specified in the highlight window.
Let us have a quick demo of what we have learned so far in this lesson. So here,
what I'm going to do is I'm going to first, sort the data using the Sort option avail
able in the Actions menu on the Data submenu.
When I click on Sort, the Sort dialog box appears. Here, I can sort the data. For e
xample, I want to sort the data based on budget, and in descending order. I can
also specify how I want the nulls to be treated. I'll go with the default behavior.
And I can also apply a second sorting condition. For example, I want to have the t
ask name sorted as ascending, wherever they have same budget. And once the s
orting configuration is defined, I can click on Apply. And the Interactive Report wi
ll accordingly sort the data.
You can also apply Control Break. For example, I want to apply a Control Break o
n the Assign To column. I can do that by going to Actions menu, go to Format, an
d apply Control Break. Here, I can select the column, which will be the Assign To
column, and click on Apply.
So this will present the data in a Group By fashion wherein all the tasks are grou
ped by the Assign To attribute. You can also apply Control Break using the Contr
ol Break option available in the column header menu.
So when you click on the column header, you get the column header menu. And
here, you have the Control Break option. And you can also apply Control Break o
n a column using that option.
Additionally, I can also apply aggregate. To do that, I can go to Data and click on
Aggregate. Here, I want to perform an aggregation on the budget column for eac
h project. And I click on Apply. And here, you can see the summation of all these
budget values for each task under this project is shown here. Similarly, for other
projects as well. This is how we can apply aggregation in an Interactive Report.
Additionally, I can also create a computed column in this Interactive Report by go
ing to Actions menu, and click on Data, and select Compute. Here, I can specify t
he column label for the new computed column, for example, cost analysis. And I
can specify the computation expression, which will be the difference between bu
dget and cost.
I can also specify the Format Mask. And click on Apply.
Now you can see the Cost Analysis column, which is a computed column being di
splayed based on the computation expression you have specified. Additionally, y
ou can also highlight specific roles and cells in this Interactive Report using the H
ighlight option available under Actions, Format submenu.
Here, you can specify whether the highlight type should highlight the entire row
or a specific cell. I'm going to go with Cell option. And here, I can specify the bac
kground color and the text color. I'm going to leave the text color black. And I ca
n specify the highlight condition.
And here, the condition will be Status column is equal to Closed. So I want to hig
hlight all the cells of Status column where the Status column is closed. And click
on Apply.
And you can see the highlight being applied accordingly in the Interactive Report
. I can also change this to be a row type highlight by simply changing the highlig
ht type to Row. Click on Apply. Now the entire row is highlighted.
Now to demonstrate the final concept, the flashback query. What I'm going to do
is I'm going to update this record in the back end. So now the cost is $200. So I'
m going to go to that record. This is that record. I'm going to make it 300. And A
pply Changes. And when I go back to the report and refresh the report, now you
can see the cost is updated.
Using the flashback query, what I can do is I can go to Data and click on Flashbac
k. And I can flashback the report to, let's say, 10 minutes into the past. I click on
Apply. Now I can see the report data is now being presented as of 10 minutes ag
o.
This is how you can perform a flashback query on top of an Interactive Report to
see the data as of 10 minutes ago. And when I clear the flashback that I have ap
plied, I get to see the current data from the database.
To summarize, in this lesson, you have learned how to sort and aggregate your d
ata in an Interactive Report. You have also learned how to create a compute colu
mn and how to perform a flashback query using the Data submenu available und
er Actions menu.
Customizing Interactive Reports as an End User - Part 3
Welcome to this module on customizing your interactive report as an end user a
nd as a developer. In this lesson about customizing your interactive report as an
end user, you will learn how to create charts based on the data in your interactiv
e report. You will also learn how to create a group by report and specify group by
sort order. Additionally, you will also learn how to create a pivot report.
With all these customizations made, you will also learn how to save these custom
izations as a private report or a public report. You will also learn how to reset you
r report to the default settings, using the reset option. Furthermore, you will also
learn how to download the report to
your local device or send the report as an attachment in an email. We'll also expl
ore various options available under column heading menu. Lot of ground to cove
r, let's get started.
As a developer, you can change the way an interactive report is rendered to end
users by editing the region attributes. To edit region attributes in Page Designer,
we can go to the page containing the region and select that region in the Renderi
ng tab. Once you select that region, the property editor on the right hand side di
splays all the region attributes available for the selected region.
You can also search specific attributes in the filter text box available on the top o
f the property editor. Once you're done with your changes, you can click on Save
to save, and run the page to see the changes in action. As a developer, you have
the flexibility to modify an interactive report's source. If the interactive report is f
etching the data from a table of view, you have the flexibility to define from whic
h table the interactive report should be fetching the data.
If the interactive report is using a SQL query, you have the flexibility to modify th
e query, add more columns, add weather conditions, or whatever complex querie
s you want to add, you can do that using the SQL query attribute available for th
e region. As a developer, you can also edit interactive report attributes from the
Attributes tab, available in the property editor.
Interactive report attributes control how a report works. You can use these attrib
utes to configure pagination, create error messages, configure the search bar act
ion menu, and download options, control if the end users have the ability to save
the report. You can do many more things using various attributes available in thi
s attribute step.
One such customization you can do using the region attributes for interactive rep
ort is customizing the search bar. Search bar is available as a Property Group un
der Attributes. Under this Property Group, you have options such as include sear
ch bar, using which you can define whether or not the interactive report should d
isplay a search bar. Or you have search field toggle, using which you can define
whether it should display a text within the search bar to enter the search criteria
or not.
You can also use the Finder dropdown to define whether or not users should hav
e the flexibility to search for specific columns using the search bar. And you also
have an option to define whether or not a
report select list, which displays all the available reports for the user, should be d
isplayed to the user or not. And there are other options, like rows per page, searc
h button label, and maximum rows per page available under this Property Group.
You can also customize the Actions menu. The Actions menu appears to the right
of the Go button on the search bar in an interactive report. And users interact wit
h the Actions menu to customize how the report information is displayed. Using v
arious options available under Actions menu Property Group under Attributes, yo
u can define whether or not you want to include the Actions menu for the interac
tive report.
We can also define controls within the Actions menu. For example, if you want to
hide search options, if you want to prevent the users to be able to create charts
on the interactive report, you can do that by simply toggling off the chart option
under Actions menu in the attribute section. Using these toggles available under
Actions menu, you can customize the Actions menu in interactive reports.
Another attribute you can control using the attributes section is the Download op
tion. You can specify whether or not downloads should be allowed for a given int
eractive report. And if the download is allowed, you can also specify which forma
ts should be allowed, and the authorization scheme. Using the Attribute section,
you can also manage the link column.
Using the link column, you can link a row, link active report to a single row
view. Or you can link to a custom target where you can open a different page to
display details about that particular row in interactive report. Or you can also cho
ose to exclude the link column using the Exclude Link Column option. And you ca
n also specify how you want to identify the rows uniquely, either by using ROWID
or Unique Column.
If you have specified in the links column to link to a single row
view, when you click on the icon available in the link column, you will be navigat
ed to a single row view. In a single row
view, you get an option to view the entire row in a key value format. You can go
back to the report view using the Report View Link available at the top of single
row view. And you can also navigate through the rows in a single
row view by clicking the Previous and Next buttons, available on the top right cor
ner of a single row view report.
As a developer, you can also change the printing attributes available for interacti
ve report. Printing attributes such as page orientation, font attributes for the pag
e header, columns, and column header, or page header text and page footer text
, all of these attributes can be customized using the printing tab available in the
Property Editor for Interactive Reports.
As a developer, you can also save all the customizations you have made on an in
teractive report as a default report or a name report. So when you click on Save
Report under Actions menu, the Save Report dialog box opens. Here, as a develo
per, you have an option to save the report as a named report or as default report
settings.
When you go with the default report settings, you will have an option to either cr
eate this report as a primary report or as an alternative report. When you select
Alternative Report, additionally, you can also give this alternative report a name.
And when it comes to the named report, that is similar to the private reports whi
ch end users create, which we have already discussed in the previous lessons.
Once you have configured the default report, either primary or alternative, you c
an click on Apply. And that report will now be available in the Report Select list fo
r the end users. Let us have a quick demo of what all we have learned in this less
on. What you see on the screen is an interactive report displaying project and cor
responding tasks on the project. It also displays the cost column and the budget
column.
So what I'm going to do on this report is apply customizations as an end user. So
the first customization I'm going to apply is creating a chart on top of the data in
this report. To do that, you can click on the Actions menu and go to Chart. This o
pens the chart dialog. Here you can select the chart type. The available options a
re bar chart, line with area, pie chart, line chart. I'm going to go with the bar char
t.
For label, I'm selecting project. And I can also define access title for label. For val
ue, I'm selecting cost column. And the access title for value would be total cost.
And what I want to display is the sum of cost for each project. And I click on Appl
y. This will refresh the report and displays the chart, based on the configuration I
have just configured in the chart dialog.
I can also choose to have a different orientation. I can change the orientation to
horizontal, and also change the sorting order. If I want to display the chart in a di
fferent sorting order, I can select the sorting order from the Sort attribute here. I'
m leaving it Default, and I'm going
to click on Apply. Now the chart will be in a horizontal orientation, displaying the
total cost for each project. And when you hover, you can see the label and the va
lue.
You can also toggle between the report view and chart view using this Toggle, av
ailable here. And the second customization I'm going to talk about is the Group B
y function that is available under Actions menu. Using the Group
By function, the end users can group the data based on one or more columns, an
d then perform mathematical computations like average, sum, et cetera, on top
of these columns.
In this demo, I'm going to group this report based on project. And I want to show
the sum of cost. And the label will be Total Cost. I can also apply Format Mask, th
e total cost. I'll go with a simple format mask here. And I also want to display the
sum to show the sum of total cost of all the projects. And when I click on Apply, I
get this report displayed, showing the total cost of each project. And the sum als
o is displayed here.
I can also choose to add more functions, for example, average budget. And I'm g
oing to give a label. And use the same format mask, click on Apply. This is how I
can group by various columns on this interactive report, and then perform differe
nt mathematical computations like sum, average, et cetera. The next customizati
on and users can do is sorting on this Group By chart.
So once the Group
By is applied, if you go to Data, you get an option to perform a Group By Sort, usi
ng which you can define in which order you want this Group
By chart to be sorted. I can sort the underlying group by report, based on the col
umns available in this report. So the columns here are project, total cost, and av
erage budget. For example, I want to sort this first by total cost in descending or
der, and click on Apply. This will sort this underlying group by report, based on th
e configured Group By Sort.
The next customization I'm going to talk about is the Pivot Report. Using the Acti
ons menu, end users can also create a pivot report on top of this interactive repo
rt data. Using the Pivot option available under Actions menu, end users can creat
e pivot reports. Pivot reports are reports where rows are transposed into columns
, and the set is presented in a crosstab format.
When I click on the Pivot Report, it opens the pivot dialog box. Here I can select
what should be my columns in this pivot report. I'm going to go with the status b
eing shown as columns. And I can also select the rows. And I want the rows to be
project. And here I can define the function. For example, I can perform Count on
the task name to display the number of tasks in a given project having a specific
status. And I'm going to call this Task Count, and click on Apply.
So this is the pivot chart with the columns showing the statuses and the rows sho
wing the projects. And here is the function, counting the number of tasks in this
project having status as closed. So this is how you can present the data in a cros
stab format using the Pivot function available under Actions menu in an interacti
ve report.
Now the next customization available for the end users is saving a report. So onc
e all these customizations we have discussed so far are applied on this report, fo
r example, let me add some customizations like Control Break and Highlighting.
And the cost is less than-- or I would say greater than or equal to 1,500, for exam
ple-- and apply. This report defined. Now as an end user, I can save this report by
going to Actions menu.
And under Report submenu, I have Save Report option. When I click on that, I get
the Save Report dialog where I can give a meaningful name to this report. And y
ou can call it My Report. Not so intuitive, but works for this demo. And I can also
provide a description to explain what this report is all about. And depending on w
hether or not the developer has enabled end users to save public reports, this ch
eckbox will be shown.
And when I click on this checkbox, this report will be saved as a public report, vis
ible to all other end users. And I'm going to click on Apply. This report is saved as
a public report. And I can also click on My Report and change the name or make i
t private, for example. And now it's listed under private report, and will only be vi
sible to the creator of this, that is, that means it will only be visible to me when I
log in with this account.
Once I have made these changes and saved it as a report, I can go back to my pr
imary report and the primary report I
also have. And if I want to go back to the default settings, wherein I don't have al
l these customizations, I can click on Actions menu, go to Report, and click on Re
set. This will reset the report to the default settings. Click on Apply, and the repo
rt will be reverted back to the default settings.
If I toggle back to my private report which I just created, this is the customization
s which I made, and I can again go back to the primary report, which does not ha
ve any customizations. Now as an end user, if I want to download this report to
my local device, that is also possible. I can go to Actions menu. And here I have a
n option called Download. When I click on that, the download dialog opens.
Here I can choose a report format, the format in which this report should be dow
nloaded in. I have CSV, HTML, Excel,
and PDF formats available. I can also choose to send this report as an email inste
ad of downloading it to the local device. Here I can specify to address, CC, Bcc, s
ubject, and body, which will be sent along with this report, attached to the email.
And now I will just download this report to my local device as a PDF. And click on
Download. As you can see here, the report has been downloaded to my local devi
ce. And I can click on this report to view the report. Also worth mentioning here i
s that some of these customizations are also available under the column heading
menu. Using the column heading menu, you can sort the data in ascending or de
scending order.
Or you can hide the column. For example, if I want to hide the End Date column i
n this report, I can click on the column, which opens up the column heading men
u where I can sort and can hide. I click on Hide This Column, and this column will
be hidden from the report. If I want to bring back the column, I can go to the Colu
mns menu here.
As you can see, the end date is now under Do Not Display. I can just simply bring
it back. And bring it up, Apply, and the column is back. So you can also use the c
olumn heading menu to make some of these customizations in your interactive r
eport as an end user. To summarize, in this lesson, you have learned how to crea
te charts on top of your data in an interactive report.
You have also learned how to create a group by report and specify a group by so
rt order. You have also learned how to create a pivot report. With all these custo
mizations made, you have also learned how to save these customizations as a pu
blic report or a private report. We have also explored the Reset option, using whi
ch you can reset the report to default report settings.
Customizing Interactive Report as Developer – I
Welcome to this module on customizing your interactive report as an end user a
nd as a developer. In this lesson about customizing your report as a developer, y
ou will learn how to use the region attributes available in Page Designer to custo
mize your interactive report.
You will also learn how to enable or disable the Actions menu and how to save th
ese customizations as default report settings. You will also learn how to control v
arious download options available in interactive reports. Furthermore, you will als
o learn how to control whether or not end user should be allowed to save public r
eports. And if allowed, who should be allowed to say public reports using authoriz
ation schemes. Let's get started.
As
a developer, you can change the way an impact report is rendered to end users
by editing the Region Attributes. To edit Region Attributes in Page Designer, we c
an go to the page containing the region and select that region in the Rendering t
ab. Once you select that region, the Property Editor on the right hand side displa
ys all the region attributes available for the selected region.
You can also search for specific attributes using the filter text box available on th
e top of the Property Editor. Once you're done with your changes, you can click o
n Save to save and run the page to see the changes in action. As a developer, yo
u have the flexibility to modify an interactive report's source.
If the interactive report is fetching the data from a table of view, you have the fle
xibility to define from which table the interactive report should be fetching the da
ta. If the interactive report is using a SQL query, you have the flexibility to modif
y the query, add more columns, add weight conditions, whatever complex querie
s you want to add, you can do that using the SQL query attribute available for th
e region.
As a developer, you can also edit interactive report attributes from the Attributes
tab available in the Property Editor. Interactive Report Attributes control how a re
port works. You can use these attributes to configure pagination, create error me
ssages, configure the search bar action menu, and a download options, control if
the end users have the ability to save the report. You can do many more things u
sing various attributes available in this attribute step.
One such customization you can do using the region attributes for interactive rep
ort is customizing the search bar. Search bar is available as a Property Group un
der Attributes. Under this Property Group, you have options such as include sear
ch bar, using which you can define whether or not the interactive report should d
isplay a search bar. You have search filter toggle, within which you can define wh
ether it should display a text in the search bar to enter the search criteria or not.
You can also use to find a dropdown to define whether or not user should have th
e flexibility to search for specific columns using the search bar. And you also hav
e an option to define whether or not reports select list, which displays all the avai
lable reports for the user should be displayed to the user or not.
And there are other options, like rows per page, search button, label, and maxim
um rows per page available under this Property Group. You can also customize th
e Actions Menu. The Actions Menu appears to the right of the Go button on the s
earch bar in an interactive report. And users interact with the Actions Menu to cu
stomize how the information is displayed. Using various options available under
Actions Menu Property Group under Attributes, you can define whether or not yo
u want to include the Actions Menu for the interactive report.
We can also define controls within the Actions Menu. For example, if you want to
hide start option, if you want to prevent the users to be able to create charts on t
he report, you can do that by simply toggling off the chat option under Actions M
enu in the Attribute section. Using these toggles available under Actions Menu, y
ou can customize the Actions Menu in interactive reports.
Another attribute you can control using the Attributes section is the Download op
tion. You can specify whether or not downloads should be allowed for a given int
eractive report. And if the download is allowed, you can also specify which forma
ts should be allowed and the authorization scheme.
In the Attribute section, you can also manage the Link column. Using the Link col
umn, you can link a row in interactive report to a single review, or you can link to
a custom target where you can open a different page to display details about tha
t particular row in interactive report, or you can also choose to exclude the link c
olumn using the exclude link column option.
And you can also specify how you want to identify the rows you need to either by
using the wide or unique column. Using the Links column available under Attribut
es, if you have specified in the Links column to link to a single review, when you
click on the icon available in the Link column, you will be navigated to a single ro
w view.
In a single view, you get an option to view the entire row in a key value format. Y
ou can go back to the report view using the Report View link available at the top
of Single Row view. And you can also navigate through the rows in a Single
Row view by clicking the Previous and Next buttons available on the top right cor
ner of a Single Row View Report.
As a developer, you can also change the printing attributes available for interacti
ve report. Printing attributes, such as page orientation, font attributes for the pa
ge header columns and column header, or page header text and page footer text
, all of these attributes can be customized using the Printing tab available in the
Property Editor for Interactive Reports.
As a developer, you can also save all the customizations you have made on an in
teractive report as a default report or a name report. So when you click on Save
Report under Actions menu, the Save Report dialog box opens. Here, as a develo
per, you have an option to save the report as a named report or as default report
settings.
When you go with the default report settings, you have an option to either create
this report as a primary report or as an alternative report. When you select altern
ative report, additionally, you can also give this alternative report a name. And w
hen it comes to the named report, that is similar to the private reports, which en
d users create, which we have already discussed in the previous lessons.
Once you have configured the default report, the primary or alternative, you can
click on Apply. And that report will now be available in the report, select list for t
he end users. Let us have a quick demo of what we have learned so far in this les
son. What you see on my screen is an interactive report, again, the same interac
tive report we have been using the previous lessons.
It contains the project's data. And here I have a developer session attached in th
e JSON tab. That's why I'm seeing the Developer toolbar here. So let me quickly e
dit this interactive report region by clicking on the Quick Edit option and selectin
g region. And this will take me to the interactive report region.
This is Page Designer. And here you see the Report Region is already selected. O
n the right hand side in the Property Editor, you can see all the properties that de
fines this region. The Source Property group has the location from which the data
is being fetched. It can be local database or you can also fetch data from REST e
nabled SQL instance or from an external REST Data Source.
The type can be a table, SQL query, or a function body, which is you're
doing a SQL query. And here you mentioned the table owner, which particular sc
hema does this table belong to? And you mentioned the table name here. I am u
sing Project Table. And there are other attributes, like Order By Clause, where yo
u can define where clause and the order by clause for this interactive report.
And page items to submit in case your view, or the table, or the SQL query that y
ou have defined here, in the source, depends on which items are. If you want to s
ubmit those items to the session whenever this report is refreshed, you can ment
ion those page items here in Page Items to Submit. So that way the report query
always uses latest value of these page items from the client.
I'm going to concentrate on the Source Property group here. I have selected tabl
e because the type is table of view. I can also change this to SQL Query, which gi
ves me a lot more flexibility to edit the SQL query. Here now I have an option to
write complex SQL queries. This is particularly useful when you want the report t
o display data from multiple tables.
In that case, you would have a query, which is joining all these tables and returni
ng the results set. Or if you want to have a complex way condition of the SQL qu
ery, you can add this condition here, for example, and click on OK. Save and run
the report. Now, only the records which have cost value greater than 1,000 are d
isplayed.
This is how you can use the SQL Query attribute under Source for the interactive
reports to have data displayed from complex SQL query. Some of the other attrib
utes for this interactive report are available under the Attributes tab, which can h
elp you customize the interactive report as a developer.
So the first attribute you see here is the Link attribute, using which you can defin
e whether this interactive report should have a link column. Sometimes you can j
ust exclude the link column or you can provide a link column to custom target, w
hich I'm doing in this case. Or it can link to a single review. For example, you see
this is linked to a custom target and the target is defined to be page
one of five where I'm passing the ID to a page item in page number five.
That is why you see this icon here, which is actually a link. And when you click on
that, it opens page number five in the ID, which in turn, searches the data in this
form. This is being driven by this setting here. You can also choose to select a sin
gle review. And that way when you go back to the report and refresh, we still get
the icon, but when you click on it, you'll be presented with a single review of the
data in that report. And this will revert back to Custom target.
And if I scroll down, I have something called Appearance, wherein I can define, s
how null values as attribute, using which you can define what should be shown in
the columns where the value is null. For example, if I write a
hyphen here, all the columns where the value is null will be replaced with the ins
tead of showing an empty cell. This is defined by this attribute.
And in the pagination, you can define the pagination type, which includes none,
do not display any pagination, or if you select row ranges X to y of Z pagination
type and click on Save, let's see how this looks like refresh this page. On the bott
om right side, you can see the pagination type has changed showing the range o
f total records.
You can also choose to use row ranges X to Y, which only shows the radius instea
d of the
total records. And you can also choose the Display Position. Right now the defaul
t is bottom right. If I want to show it on top right corner, for example, I can select
that, and I run this report.
Now you can see the pagination is shown on the top right corner. And this is parti
cularly useful when you have a long report and you want to show the pagination
at the top always. You can also enhance performance using the Attributes in the
Performance group. For example, you can enable lazy loading for the interactive
report by checking this Lazy Loading toggle. So using the Lazy Loading option, th
e interactive report is loaded without the data and then a separate request is sen
t to load the data.
You can also specify maximum rows to process, using which you can limit the nu
mber of rows that should be shown in the interactive report. In case the report q
ueries returning rows greater than the maximum rows mentioned here, we can s
how a custom message defined in the Messages section under When More Data
Found.
Speaking of messages, we can also define what message should be shown when
more data is found in the grid. For example, let me go back to the query and writ
e query where I don't get data for this demo. And when I go back to Attributes an
d Messages, here, I want to say no projects found. And I click on Save and Run th
is interactive report.
You can see the custom message being displayed here. Additionally, you can als
o customize what to include in the search bar under Search Bar Property Group.
For example, if you don't want to include search bar,
you can simply toggle it off and refresh the page. This is how the interactive repo
rt looks without the search bar.
And if I enable the search bar, I get further customizations possible. For example,
I can choose to not show the search field, but have the search bar. That way if I r
efresh, I'll get the search bar where I have the reports and the Actions menu avai
lable, but I don't have the Search field. And I can toggle to have the Search field,
but not have the finder dropdown. That way, I will have the search field, but I wo
n't have column finder dropdown.
So this gives you greater flexibility as a developer to customize what should be i
ncluded in the search bar and what should not be included in the search bar. You
can also choose to have rows per page selected and define the Search button lab
el. Check also define maximum gross per page, I'll make it five. Click on save and
run the page.
So here, you can see the Search button label is now Search Projects. And I'm gett
ing maximum rows five for each page, I can select gross
per page option here. So this way I can select how
many rows I want to see a single page. And I can use the arrow right here to navi
gate through pages. This is how you can customize the search bar and other opti
ons that you get in the search bar.
Similarly, you can also customize the Actions menu and various options available
in the Actions menu. If you don't want to include the Actions menu, just toggle th
e Actions menu off and you won't get the Actions menu. And within the Actions
menu, you can also customize, at a more granular level, as to which features sho
uld be available in the Actions menu and which features should be disabled.
For example, I want to show the Access menu, but not give an option for the end
user to create charts. I can toggle this off. And now in the Actions menu, I don't g
et the chart option. We have
also discussed about end user getting the option to Save Public Report. When thi
s option is off, end user will not get an option to save a report as a public report.
And when this option is on, that is when the end users will get the option to save
a report as a public report.
I can also choose to have an Authorization Scheme, which defines which users sh
ould be able to save public reports and which users should not be allowed to sav
e public reports. Scrolling down, the other Property group here is the Download P
roperty group, using which you can define under authorization which users shoul
d be allowed to be able to download the reports and which users should not be al
lowed to download the reports.
And you can also define which format should be made available for download. An
d using the sender's email option, whether or not the report can be allowed to be
sent as an email. If
I toggle this off, for example, and go back to the report, and refresh the report, n
ow when I go to Actions menu and click on Download, in the download dialog, I w
on't get the send
as email toggle. I just have the option to download the report now.
So this is how you can customize what options should be available under Downlo
ad Dialog. You can also choose to have the heading fixed to page or region. For e
xample, if I choose region, I can define maximum report height to 100 pixels as t
he report height.
Now, I don't have to scroll down to see the entire report. So this settings define, i
f I refresh the page, the report is limited to 200 pixels height. And I get a scroll lik
e this, which makes it easy to view all the data and a scroll on the report is show
n. To summarize, in this lesson, you have learned how to use the Region Attribut
es to customize the interactive report as a developer.
Customizing Interactive Report as Developer – II
Welcome to the module on Managing and Customizing Interactive Reports. In thi
s video, you will learn about the additional customization options available to you
as a developer in Interactive Reports.
In this lesson, you will learn how to link to Interactive Reports to open a saved re
port or create a filter using URL syntax. You will also learn how to display a BLOB
column as a download link or an inline image. Let's get started.
As you have learned, developers can customize an interactive report and save it
as an alternative report. You can then link directly to a specific saved report usin
g a request value in the URL. Now, let's break down the syntax of the request val
ue.
IR stands for interactive report. This indicates that we are working with an intera
ctive report component in APEX. Region static ID between the square brackets re
fers to the static ID of the specific interactive report region on your page. Each re
port on a page can have its own static ID, allowing us to target it individually.
In this example, the interactive report has a static ID, IR_EXAMPLE. This allows yo
u to pinpoint the exact report region you want to link to. The report alias is the sa
ved report alias. Each report you save in APEX can be referenced by this alias, w
hich makes it easier to navigate directly to that report.
You can find the report alias under the interactive report in the page designer, as
shown on the screen. In this example, the report alias is "status." Once the reque
st value is constructed using the proper syntax, you can pass this value in the Lin
k Builder dialog or within the target property group, where you specify the target
page.
You pass the request value by filling in the Request attribute. For example, if you
have a navigation menu entry, you can use the Request attribute to pass the Req
uest value. This allows you to link directly to an interactive report, for example, o
n page 18, and open a specific saved report, such as the status report upon navi
gation.
You can also create a filter when linking to an interactive report using the itemNa
mes and itemValues syntax. The syntax for the itemNames is as follows-- IR, follo
wed by the region static ID enclosed in square brackets. This maps to a specific i
nteractive report region on a page.
Next, you will specify the operator, which defines the type of filter you want to ap
ply. This is followed by an underscore and the target column alias, the column on
which you want to apply the filter. For example, if you want to filter records wher
e the budget is greater than 5,000, the syntax would look like this.
Here, GT is the operator for greater than. The list of other operators is displayed
on the screen. If you don't specify an operator, the system will default to the "eq
uals" operator. Additionally, you can also use the row filter operator to perform a
full-row text search.
The target column alias is the name of the interactive report column, which you c
an find under Columns in the interactive report. You can pass the item name and
item value in the Link Builder dialog or under the target property group.
For example, in a navigation menu entry, you can specify the item name syntax i
n the "Set these items" attribute and pass the corresponding filter value in the "
With these values" attribute. When a navigation menu entry with this configurati
on is clicked, it will navigate to the page with the corresponding filter applied to t
he interactive report.
You can reset an interactive report and its pagination by passing the value RR in
the Clear Cache section of the URL. This action resets an interactive report and it
s pagination. It is equivalent to the end user selecting the Reset option from the i
nteractive report's actions menu on the target page.
The report will return to its default settings as specified by the developer or to th
e last saved settings by the user. You can clear an interactive report and its pagi
nation by passing the value CR in the Clear Cache section of the URL.
This clears all of the session report settings or customizations, such as control br
eak, aggregate, flashback, chart, et cetera. And by passing the value RP in the Cl
ear Cache section of the URL, you can reset an interactive report's pagination. Le
t us have a quick demo of all the topics we have covered so far.
So I have this application called Projects application. This application has a Dash
board page, as you can see on the screen. This Dashboard page has all kinds of c
harts showing data about projects.
For example, if you look at the pie chart here, which is Project Statuses chart, it s
hows information about how many projects are in Completed stage, how many pr
ojects are in Progress state, and how many of them are in Assigned state.
I also have a Projects Report page in this application, which is an interactive repo
rt page. And it shows all the projects in the database and corresponding details a
bout each project. For example, it has information about the status, project lead,
budget, et cetera.
This particular interactive report also has a saved report called Status report, whi
ch I have created as a developer. Now, what I want is I want the user to be able t
o link to this interactive report from this particular pie chart.
For example, if I click on the Completed segment in this pie chart, I want the appl
ication to navigate to the Projects Report page and show all the projects in this r
eport which have Status as Completed.
So for that, I first go to the Projects Report page in the page designer. In this pag
e, I first make sure that this interactive report has a static ID. So if I scroll down, I
provide a static ID.
And I can also see the Saved Reports that I have created for this interactive repo
rt. And for Status, I make sure that the alias is something which I can refer. So I c
hange the alias to Status. These changes made, now this interactive report can b
e referenced from the pie chart.
Now, I go back to Dashboard page. This is the Project Statuses chart. I select the
Series and I scroll down to the Link property group. Here, I can select the type to
be Redirect to Page in this Application. And configure link target using the Link B
uilder.
So the target page will be page number 10, which is the Reports page. As we hav
e learned in the lesson, that if I want to apply a filter on the interactive report, I c
an use the item name and item value syntax.
Here in the item name, I provide the syntax, IR, which indicates that we are deali
ng with interactive report. And then in square bracket, I provide the static ID. An
d next, I need to specify the operator.
In this particular demo, I would like to perform an equal to operator. I can either
skip the operator because the equal to operator is the default, or I can simply pro
vide EQ and underscore, and then the column on which I want to apply this filter.
In my case, it is the Status column.
And for the Value, I can pass the Status column from the chart's source. Addition
ally, I can also choose to clear the regions so that all the previously applied filters
are removed and the new filter is applied as and when I click on the segment in t
he pie chart.
With that defined, I can click on OK. And save and run this page. Takes me to the
Dashboard page. And now when I click on the Completed segment in this pie cha
rt, it takes me to the interactive report and it filters this interactive report on the
Status column.
Similarly, if I go back to the Dashboard page and click on a different status, for e
xample, Assigned, that particular project where the status is assigned is shown in
the interactive report. Now, what I want to do is I want to provide a button in this
pie chart so that when I click on that button, it navigates to this interactive repor
t and opens the Status saved report.
So that I go to the Dashboard page and I click on Page 2. And I create a button. I'
m going to call this button as SHOW_STATUS_REPORT. And for action, I'll be selec
ting Redirect to Page in this Application because that's what we want. We want it
to take us to the Projects page.
And in order to open the Saved report, we need to specify the request value. So t
he Request parameter is available under Advanced section. In here, I need to spe
cify the Request value, which will be IR, which indicates that we are dealing with
an interactive report.
In square brackets, the static ID of the interactive report region, which is Projects
, then underscore the report alias of the Saved report, which will be Status. Click
on OK. And save and run.
I have this button. When I click on this button, it takes me to Report and it select
s the Status report by default. This is how you can link to a saved report in an int
eractive report using the URL.
One thing to note here is that since the page number 10 has only a single interac
tive report, you can skip the region static ID. You can simply say IR_status. And t
his also works.
So the region static ID is mandatory if the target page has multiple interactive re
ports. Otherwise, you can simply skip that. The same also works for filtering. The
same concept can be applied to interactive grids as well.
For interactive grids, all you need to change is just mention IG instead of IR to in
dicate that we are dealing with interactive grids. So in here, in all the syntax, wh
erever you have used IR, you just have to replace it with IG to indicate interactiv
e grids. Rest all remains the same.
You can also display BLOB columns as download links in Interactive Reports to let
your end users download the BLOB column as a file. This can be done by first ad
ding a numeric column to your interactive report's data source.
This column typically represents the file size. If the value of this column is 0, it m
eans the BLOB is null, and so no download link will be displayed. Once the numer
ic column is defined, you can set its Display Type to Download BLOB.
Next, map the BLOB attributes to the corresponding table name, BLOB column, a
nd primary key column to identify the specific BLOB from the table. Additionally,
if your BLOB contains an image, you can display this image inline in the interacti
ve report using the Display Image type for the column.
And to do this, you start by adding a numeric column which represents the file si
ze to your interactive reports data source, same as before, but then you choose t
he Display Image as the Display Type and map the corresponding BLOB attribute
s.
Let us have a quick demo of the BLOB support in interactive reports. So I will first
start by creating an interactive report page. Click on Create Page and select Inter
active Report.
So, in this interactive report, I want to display the contents of my social media po
sts table. So I'll give name of this page as Social Media Posts. And then I scroll do
wn. For table name, I choose the SM_POSTS table.
This table has a BLOB column which holds images. I will leave the other attribute
s as default. Click on Create Page. Now, this creates an interactive report page. I
can now run and see.
The File Blob is being displayed as a download link by default. So when I click on
this, it downloads the file. Let us take a look at how this is done automatically by
the Create Page wizard.
If I go back to the interactive report page, if I look at the source query of the inter
active report, this is a simple select query on top of the SM_POSTS table. But to l
ook at the BLOB column, instead of directly selecting the BLOB column, the BLOB
column is converted into a numeric column by calculating the size of the BLOB u
sing dbms_lob.getlength.
And then for that particular column, if I expand columns and go to FILE_BLOB col
umn, the Type is selected as Download BLOB. And if I scroll down, the correspon
ding BLOB Attributes are also defined. For example, Table Name, BLOB Column,
and Primary Key Column are defined here.
Additionally, I can also map the Mime Type Column and Filename Column so that
when you download the file, downloads with that particular file name and mime t
ype. I run the page, and now download the file.
The new downloaded file, it downloads with the file name as well as the correct
mime type. Now, if I want to display this BLOB file, which I know is an image, inli
ne in the interactive report, I can simply go to the interactive report, go to FILE_B
LOB column, and change the type from Download BLOB to Display Image.
And now if I run the page, you can see that the images are displayed inline in the
interactive report. These images are too huge. You can customize the display att
ributes of these images using custom CSS.
I go back to my page designer. I provide a static ID to this FILE_BLOB column. I s
croll down. Under Advanced property group, I have Static ID attribute. I provide a
Static ID.
And then I can go to my Inline CSS attribute at the page level and write custom C
SS to fix the image height to 25 pixels. Here, I need to provide the static ID of my
display image BLOB column.
With that said, if I run the page, now you can see the images are displayed as pe
r the CSS customizations. You can also create an interactive report from scratch i
nstead of the Create Page wizard, and display blob columns as download links or
inline images.
Let us see how you can do that. Let's go to page designer. Let's start by creating
a blank page. I provide a name for the page and click on Create Page. Now, I hav
e a blank page. I can go ahead and create an interactive report from scratch.
I'm going to call it Social Media Post. And I'm going to select the type as Interacti
ve Report. For the source, I'm going to select the SM_POSTS table. With that don
e, I can Save and Run to see this interactive report in action.
As you can see, the File Blob column is displayed as unsupported data type. Now
, to display this as a download link, I can go back to my page designer, go back t
o the interactive report, and change the type from Table/View to SQL query.
Now I have the flexibility to write my own SQL query, so I'll be replacing the FILE_
BLOB column with a numeric column using the dbms_lob.getlength to calculate t
he file size. I Validate. Click on OK.
And if I expand the columns, the FILE_BLOB column is pushed to the bottom beca
use this is now considered as a new column. And pull it up and change the type t
o Download BLOB to display it as a download link.
I scroll down. I can also specify the BLOB Attributes. The table name will be the S
M_POSTS table. The BLOB Column will be the corresponding BLOB column. And t
he Primary Key.
Additionally, I can also specify the Mime Type Column, Filename Column. With th
ese BLOB Attributes mapped to corresponding table and columns, I can Save and
Run to see this in action.
Now, you will not be seeing this column because it is hidden in the view. So you c
an enable that column by going to the Actions menu and to the column, and mov
e the File Blob column from Do Not Display area to Display in Report area. Then
move this at the top. And Apply.
Customising an Interactive Grid as a Developer
Welcome to Oracle APEX Developer Professional Course. My name is Toufiq. I'm s
enior product manager for Oracle APEX. In this module about managing and cust
omizing interactive grids, you will learn how to customize an interactive grid as a
developer as well as how to customize an interactive grid as an end user.
In this first lesson, we will learn how to customize an interactive grid as a develo
per. In this lesson, you will learn how to manage interactive grid using grid attrib
utes. You will learn how to control pagination in an interactive grid. You will also l
earn how to customize an interactive grid toolbar and how to enable end users to
save public reports. Let's get started.
As a developer, you can determine whether the underlying data in the interactiv
e grid is read-only or editable by end users. The example in the slide shows conv
erting a read-only interactive grid into an editable interactive grid by modifying t
he interactive grid attributes.
Interactive grid attributes control how an interactive grid works. You can use the
se attributes to determine if end users can edit the underlying data. You can use
these attributes to configure report pagination. You can configure the toolbar an
d download options. You can control if and how users can save an interactive gri
d. You can add icon and detail views to the toolbar.
The main difference between an interactive grid and an interactive report, which
is another region type available in
APEX, is that interactive grid allows the end users to edit the data on the grid dur
ing runtime. The application developer has the ability to customize how much en
d users can customize the report.
Let us start by creating an interactive grid from scratch. I have a blank page on t
he screen, as you see. To create an interactive grid, go to the Body position and
right-click on the Create Region. In the Property Editor, I'm going to give a name
to this region. We'll call it Projects. And the type, I'm going to select Interactive G
rid. And for the table name, I'm going to use the Projects still.
With that defined, I can click on Save to save these changes and run this page to
see the interactive grid in action. This is how this intractable it looks like. Now, as
you can see, this interactive grid is not editable. So to make this grid editable, w
hat I'm going to do is go back to the Page Designer.
For this interactive grid, in the Attributes tab there is a property group called Edit
. Another property group is a property called Enable. I can simply toggle this butt
on to enable editing in this interactive grid. As soon as I enable this button, you c
an see various options appear-- for example, Allowed Operations.
So you can define whether you want to allow Add Row functionality in this intera
ctive grid or you want to allow Update functionality in this interactive grid or Dele
te functionality in this interactive grid. And if you expand the columns, you can s
ee additional columns are added to this interactive grid, and the ID column is ma
rked as the primary key.
If you go to the Processing tab, a new process of type Interactive Grid-- Automati
c Row Processing, which is-- the DML process for the grid is also added by default
. All these things are done just by enabling editing for an interactive grid. After m
aking the interactive grid editable, you can save these changes and go back to t
he application to see these changes in action.
Now we can see this interactive grid has got a Save button and an Add
Row button. And I can simply double-click on any cell to make the grid editable a
nd update the columns, for example. Now, let's
say I don't want to allow Add Row functionality in this grid. I can declare do so by
going to Attributes and simply toggling off the Add
Row functionality in the allowed operations.
With that set, if I refresh this grid, now end users can only update the existing re
cords and cannot add new records to this interactive grid. So this is how you can
make an interactive editable. One attribute of an interactive grid which you can
modify is the Source SQL query.
As you know, interactive grid supports various types of sources. You can show da
ta from third-party external REST endpoint where I listed
our sources in an interactive grid. You can also query the data from the local dat
abase by directly referencing a table or providing your own SQL query.
The SQL query type gives you the flexibility to add as many columns as you want
or write WHERE conditions, for example. Or you can also use a pipeline function
as an interactive grid source SQL query. The example in the slide shows modifyin
g the SQL source of an interactive grid.
If you have added new columns to the SQL query, the new columns are added to
the end of the report. However, in an interactive grid you can simply drag those
columns to your desired location.
In the Source section, as you can see I have selected a table to be the source for
this interactive grid. I can also have a SQL query instant as the source for an inte
ractive grid. When I change from tabular view to SQL query, now a SQL query is
automatically populated in the SQL query attribute, which is querying the EBA_P
ROJECTS table which we have selected earlier here.
Now I get the flexibility to add my own WHERE conditions or write complex SQL q
ueries which will act as a source to this interactive grid. For example, I can add
a WHERE condition here. I'll simply click on Save and go back and refresh the gri
d to see this WHERE condition in action.
So this is how you can have an interactive grid which is based on a SQL query, w
hich gives you greater flexibility to have SQL query of your choice. Well, let's ma
ke this more interesting. Let's say I want the SQL query of an interactive grid to b
e dependent on user input. So let's say, instead of hard-coding these Status
ID I want this to be something the end user can select. And based on the user's s
election, I want the grid to display the data.
To do that, I need to first create a page item. Create a page item. I'll move it to
the top of the grid. And I'm going to call it STATUS. This would be a select list. In
the list of values, I'm going to write a SQL query which queries the project Status
Table
With that item created, I can now refresh this item in the SQL query of the intera
ctive grid. Instead of the hardcoded value, I can simply write-- I can simply give t
he page item here and also assign this page item under Page Items to Submit att
ribute.
Now as a last step, I'm going to create a dynamic action on the STATUS page ite
m, which will refresh the project script as soon as this Status item is changed. To
do
that, I'm going to create a dynamic action, a meaningful name. And for the actio
n I'm going to select Refresh. And the selection type will be Region. And I'm goin
g to select the interactive grid Region.
With that defined, I can simply save. And now I'll go and run the page. You see th
ere is no record in the interactive grid right now. It's an empty interactive grid re
gion. But when I select a status in the status page item, the grid is refreshed bec
ause of the dynamic action, and the latest value of this item is considered. And b
ased on that, the grid shows the projects.
You can also define and use column groups in interactive grids. You can choose t
o use column groups for just report headings or for just single review or for both.
You can use column group headings to-- you can reorder column group headings
just like column headings.
The example in this slide shows two column groups, project details and expenses
. Now, in this project's interactive grid, I want to have column group headers. I w
ant the column's name, description, and project lead to have a column group hea
der as project details. And I want to have these four columns-- Created, Created
By, Updated, Updated By, which are basically ordered columns who have column
group header as order details.
So to do that, I can go to Page Designer. And under the interactive grid region, u
nder Columns, there is an attribute called Column Groups. And simply right-click
on this and click on Create Column Group. The first column group I'm going to cr
eate is Project Details. And I'm going to create another column group called Orde
r Details.
With these column groups created, now I can go to the columns and select NAME
, DESCRIPTION, and PROJECT_LEAD. With these columns selected, on the right-
hand side I can scroll down to Layout. Here, I can see an attribute called Group. A
nd when I expand the select list, I can see both the column groups which I have j
ust created are listed here.
So for these three columns, I'm going to select PROJECT_DETAILS as the column
group. And for CREATED, CREATED_BY, UPDATED, UPDATED_BY, I want to have G
roup, Auto Details. Selected. With that set, I save and refresh the page. Now you
can see the column group headers which we have created in action.
You can also define and control pagination in interactive grid. When the interacti
ve grid source, be it a table or a SQL query, it has many rows, an interactive grid
is best displayed to the user with pagination. Pagination provides the end user wi
th information about the number of rows displayed and the current position withi
n the results set.
Interactive grids include two types of pagination. One is page type wherein the fi
rst shows will be displayed based on the number specified in rows per page. If th
ere are additional rows, controls will be added to the report footer, allowing end
users to navigate forwards and backwards between rows.
And the second option is scroll. Initially, enough rows to fill the height of the inter
active grid are displayed. As the end user scrolls, additional rows are displayed, g
etting more data from the server as needed. In the slide you see, the interactive
grid is using page type pagination.
What you see here is the default pagination type, which is the scroll pagination t
ype. To change the pagination type, go to Page Designer. Select the Interactive
Grid and go to Attributes. Under Attributes, scroll down. You'll see a property gro
up called Pagination. There you see two attributes, Type and Show Total Row Co
unt.
For Type, as you can see, Scroll is the default pagination type that the interactive
bits will have. You can choose to have a Page as the pagination type, which will t
hen give you interactive grid data in pages. If there is more data here, you can si
mply use the buttons here to navigate through different pages of this interactive
grid.
Developers can also enable the capability for end users to save public reports in i
nteractive grids. Developers can also restrict who can save a public report using
the Save Public Report Authorization Scheme. Public reports display on the Save
d Reports List on the toolbar and are available to all users. However, only the use
r who creates a public report can save, renamed, or delete it.
Developers can select an authorization scheme to restrict who can save public re
port. If no authorization scheme is selected, then any user may save public repor
ts for interactive grids. In interactive grids, by default end users can create both
private reports or alternative reports.
To enable end users to create public reports which will be accessible to everyone
, you can go to Page Designer, select the Interactive Grid region. Under Attribute
s, scroll down to the property group Enable Users To. Hear you have property call
ed Save Public Report. You can toggle that. That gives you one more attribute cal
led Save Public Report Authorization.
Here you can select an authorization based on which you want to allow or not all
ow specific users to save public report. So with this option enabled, you can save
the setting. And now when I go back to the interactive grid and refresh the page,
now as an end user I have access to save a report as public as well. This is how y
ou can enable end users to create public reports in an interactive grid.
To summarize, in this first lesson you have learned how to manage an interactive
grid using interactive grid region attributes. You have also learned how to control
pagination in an interactive grid. Additionally, you have learned how to customiz
e an interactive grid toolbar and enable end users to save public reports. Hope th
at you've learned something new. Thank you for watching.
Customizing Interactive Grids as a Developer – II
Welcome to this module on managing and customizing interactive grids. In this l
esson, you will learn how to create master detail interactive grids. Let's get start
ed. Managing hierarchical data, like customers with multiple orders and order lin
e items, can be tedious when you have to flip between multiple pages.
It becomes even more challenging when users want to view and edit everything i
n one place. Oracle APEX simplifies this with master detail interactive grids, allow
ing you to manage related data on a single page.
Users can view and edit master data like customer records and their detailed tra
nsactions, such as orders and line items, all in one interface. You can define any
number of master detail relationships on a single page by simply adding a relate
d interactive grid to the page.
Let us start by understanding how you can create a master detail interactive grid
s page using Create Page wizard. So here I have an empty application. You can cl
ick on Create Page. On the Create a Page dialog, you can select master detail.
On the create master detail dialog, you get three options-- stacked, side-by-side,
and drill down. You can read about each of these options in the Help section belo
w. To create a single page master detail having editable interactive grids, you ca
n select stacked.
On the next page, you can provide a name for your master detail page. I'm going
to call it departments. And you can also provide a table name as your master dat
a source. In this example, the departments table is going to be our master data s
ource.
I will leave the other options as default and click on Next. On this page, a primary
key column is automatically selected. Department number works fine as the prim
ary column for my master data source. I can click on Next.
Here you can provide a title for your detailed region. My detailed region is going
to display employees corresponding to each department. So I'll enter employees
as the region title. Additionally, you also need to provide a data source for your d
etailed interactive grid.
In this example, employees table is going to be the data source. I will enter EMP t
able and click on Next. Here, a primary key column is automatically selected for t
he detail interactive grid. Under master detail relationship, you can map the mas
ter detail foreign key.
So the Department number from the departments table is mapped with the depa
rtment's number column from the employees table as the master detail foreign k
ey. Once that is configured, you can click on create page.
This creates the master detail page with two interactive grids, as you can see, th
e department's interactive grid and the employees interactive grid. Let us see w
hat this looks like in the end application. On this page, you can see there are two
grids. The top grid displays all the departments from the database.
So if I select one department, all the employees corresponding to the selected de
partment are displayed in the detail grid. I can also add a new department. For e
xample, I can click on add row in the master grid and add a new department call
ed support. And add employees to this new department. And then click on Save.
As you can see, the new department is added and the employees are also saved
to the database. Now let us see what the Create Page wizard has done under the
hood to create this master detail interactive grid.
For that, I go to the Page Designer. So as you can see, we have two grids here-- t
he departments interactive grid and the employees interactive grid. If I click on e
mployees interactive grid and if I scroll down to master detail property group, her
e the departments grid is mapped as the master region for the employees intera
ctive grid.
And if I expand columns and go to department number column and scroll down t
o master detail property group, here the Department number from the departme
nt's interactive grid is mapped as the master column. This is how the master det
ail relationship between these two interactive grids is configured.
We also have a save button, which simply submits the page. And on page submit
, it executes all the processes defined under processing tab. Under the processin
g tab, there are two processes of type interactive grid automatic row processing
DML, which takes care of performing the DML operations on the interactive grids.
So when you add rows to a departments table and the employees table and click
on Save, it submits the page. And the page submit process executes both these
processes in this order to save the changes to the database tables.
Now let us see how you can create a master detail interactive grid from scratch.
For that, I go to the application homepage and click on Create Page. On the Crea
te Page, I'm going to create an interactive grid page.
And this is going to be based on the customer's table. And for the data source, I'
m going to select the customers table. I want this grid to be editable and click on
Next. Here, the primary key is automatically selected as the customer ID, which i
s fine. Click on Create Page.
Now this creates a interactive grid page. You can run this page to see what this l
ooks like. Here is an interactive grid showing all the customers from the databas
e table. Now what I want to show is I want to add two more interactive grids to th
is page.
One is the orders interactive grid, which shows orders corresponding to each of t
hese customers and order line items interactive grid which shows, what are the li
ne items in a given order? With that, I go back to the Page Designer. Here I'll star
t by adding a new interactive grid region. I'm going to call this orders. And the ta
ble name will be the orders table.
I can also make this as editable. I can scroll down to set a fixed height for this int
eractive grid, so that I can see both these interactive grid regions on the page pr
operly. I'm going to fix the report height to 400 pixels, and I'm going to fix the or
ders interactive grid height to 300 pixels. I can save and run to see what this loo
ks like.
Now, as you can see, we have the top grid showing the customers and the botto
m grid showing the orders. But if I select a customer, you can see that the orders
grid is not refreshing to show orders corresponding to that customer.
Instead, it is showing all the orders from the orders table. That's because I have
not configured the master detail relationship between these two grids. Let's do t
hat. I go back to the Page Designer, I select the orders grid, and I go to the Regio
n tab and scroll down to master detail property group. And here I map the custo
mer's interactive grid to be the master region for the orders interactive grid.
Additionally, I expand the columns and I map the customer ID and scroll down to
master detail property group and map the customer ID column from the custome
rs interactive grid to be the master column for the orders interactive grid.
Now, the master data relationship between the Customers table and the orders t
able is established. You can save and run. Now you can see, if I select a custome
r from the customers interactive grid, all the orders from that particular customer
is shown in the orders interactive grid.
Similarly, I can add one more interactive grid, the order line items interactive gri
d. I can create one more interactive grid. And I'm going to call it line items. And t
he table name will be the order items table. I can make this interactive grid as ed
itable as well. And set the report height to 300 pixels.
And I would like to display this line items grid beside the orders grid. So I'll just tu
rn this start new row option to off so that both orders and line items are aligned s
ide by side. With that, I can save and run to see this in action.
I can select a customers table, but then as you can see again, the order line item
s is not refreshing based on the selected order in the orders table, because I hav
e to configure the master detail relationship. Let's do that.
I select the line items interactive grid and scroll down to master detail property g
roup. Here I select the orders interactive grid as the master region. And under co
lumns, I'm going to the order ID column and scroll down to master detail propert
y group and select order ID from the orders interactive grid as the master colum
n.
Now if I save and run and I select a customer in the customers interactive grid, t
he orders interactive grid refreshes, selecting the first order. And the line items i
nteractive grid also refreshes showing all the line items in the selected order. If I
select a different order, it refreshes and shows all the line items in that selected
order.
This is how you can add multiple levels of master detail digital interactive grids i
n a given page. One more thing to note here is that when I make changes in the
detailed interactive grid, let's say I update the quantity here from 5 to 10 and clic
k on save on the master interactive grid, it executes the save on the detailed int
eractive grid as well.
So when I click on save in the customers interactive grid, it invokes save on the o
rders interactive grid, and this in turn invokes save on the order items interactive
grid because of the master data relationship.
So when you invoke save on the master interactive grid, it also performs save on
the detailed interactive grids. In summary, this lesson covered how to create ma
ster detail interactive grids. I hope you found this helpful and learned something
new. Thank you for watching.
Customizing an Interactive Grid as an End User - Part 1
Welcome to this module on Managing and Customizing Interactive Grids. In this l
esson about customizing interactive grids as an end user, you will learn how to s
earch for information in an interactive grid using the Filter option. You'll also lear
n how to resize, reorder, and sort columns in an interactive grid. Furthermore, yo
u will learn how to use interactive grid components like Column Heading menu a
nd Actions menu, available in Interactive Grid toolbar. Let's get started.
The search bar displays at the top of Interactive Grids. Users can perform a non-
case-sensitive search on an Interactive Grid by entering queries in the search bar
. You can either search on the entire interactive grid or only on a specific column.
To search for a specific column, you can use the Search icon that is available just
beside the search bar. When you click on Search icon, you get various other opti
ons, and from there, you can select the column you want to search.
And once the column is selected and you enter the search term in the search bar
and click on Go, this time, the interactive grid returns only those rows where the
column project has the term "discussion" in it. So this is how you can search for a
specific column in Interactive Grid.
In this Interactive Grid, you can search for a specific keyword using the Search o
ption available in the Interactive Grid toolbar. For example, if I search for the ter
m develop and hit Enter or click on Go button, this will apply a filter on the Intera
ctive Grid and return all the rows where it can find the keyword "develop" in any
of the columns. So basically, this is a filter of type Row
Additionally, you can also apply filter on specific column using the search availab
le in IG toolbar by using the dropdown menu available here. For example, instea
d of All Text Columns, I want to only search the Name column. You
can select Name, and you can see the placeholder here changed to Search Name
. And when I type a search term and hit Enter, this time it is only showing me the
records where the search term "develop" exists in the column Name.
Once the filter is applied, you can enable or disable the filter by using the checkb
ox here. You can also remove the filter using the cross button here. You click on t
his button, the filter is removed, and the Interactive Grid gets refreshed, showing
all the records. End users can also rearrange columns by using the drag and drop
functionality in the Interactive Grid. This slide shows an example of rearranging A
ssigned To column and resizing the Task Name column.
Another feasibility the end user gets with Interactive Grids is column sorting. Use
rs can specify the sorting order of a column by clicking the Sort Descending butt
ons on the column heading. You can rearrange the columns in an Interactive Grid
using the drag handle available in the column header. If you hover on the column
header, you see the drag handle here. You can click on that, drag the column to
your desired position, and leave it there. And this is how you can rearrange colu
mns in an Interactive Grid.
You can also resize the column width by simply hovering on the column header o
n the edge, and this gives you the resizing cursor. And simply click and drag to in
crease the width of a particular column. The end users can also sort data in Inter
active Grid using the sort buttons available in the column header.
So if I hover on the Budget column header, you can see the sort buttons availabl
e I can sort them in ascending order from small to big, or descending order-- big
to small-- just by clicking on these buttons. I can remove sorting by re-clicking th
e same button, which is now termed as Don't Sort button, and sorting is removed
.
In Interactive Grids, along with search bar and sort order buttons, the column he
aders also have column heading menu. In this column heading menu, end users
get a buttons toolbar, text filter, within which the end user can search this colum
n for a specific search term, and unique list of values for that column. In the butt
ons toolbar, the end user gets various options like Control Break, within which us
er can create a control break on the selected column.
There is aggregate option, which opens the aggregation dialog box to define an a
ggregation against the selected column. There is freeze option, using which, the
selected column freezes in place, putting the selected column outside the horizo
ntal scrolling section. And then there is also hide option, using which, the selecte
d column can be hidden from the view.
The Column Heading menu is also loaded with a lot of features like control break,
aggregate, freeze, and hide. For example, I can apply control break on the Projec
t Lead column. Now, the data is grouped by the Project Lead column. I can enabl
e and disable this control break by simply toggling the checkbox here, and I can r
emove the control break by clicking on Remove Control Break cross button.
So I can perform an aggregate. Sum, or maybe an Average. Everything on the Bu
dget column, and you can see-- and you can see the average is shown here. Let's
say I increase the column width, which gives me the horizontal scroll, and it mak
es it difficult for me to understand which project the corresponding record belong
s to.
In that case, what I can do is simply freeze this particular column. And let
me expand this a bit. And now when I scroll, the frozen columns are placed outsi
de the horizontal scroll, and the rest of the columns when
we scroll. So this is how you can use Freeze from the column heading menu. You
can use the Hide option to hide a particular column. And to unhide a column, you
can go to the Actions menu, Columns, and simply recheck the hidden column, an
d save. That will bring back the hidden column.
The Interactive Grid toolbar also has an Actions menu which contains functions a
nd submenus for customizing the data in Interactive Grids. Under Actions menu,
user also gets an option to display the data in the Interactive Grid in the form of
a chart. Various chart types such as area, bar, line, pie, polar, et cetera are avail
able. Once a chart is created, user can switch between grid view and chart view
by clicking on the toggle that appears in the Interactive Grid toolbar.
Now, speaking of the Actions menu, the Actions menu is available in the Interacti
ve Grid toolbar, which is loaded with a lot of functionality. We will learn more abo
ut the Actions menu in the next lesson, but just as an example, you can create a
chart on the existing Interactive Grid clicking on the chat option available in
the Actions menu.
Let me select Bar type. And orientation-- I'm going to keep it vertical. Label shoul
d be the name of the project, value should be the budget, and aggregation can b
e sum. This define, and click on Save. And this will create a chart wherein the su
m of the budget is being shown. Now, with this chart you defined, you can switch
between the Report view and the Chart view by simply using the view toggle ava
ilable in the Interactive Grid toolbar.
To summarize, in this lesson you have learned how to search for information in a
n Interactive Grid using the Filter option. You have also learned how to resize, re
order, and sort columns in an Interactive Grid. You also learned how to use Colu
mn Heading menu and Actions menu available in Interactive Grid toolbar. Hope t
hat you've learned something new. Thank you for watching.
Customizing an Interactive Grid as an End User - Part 2
Welcome to this module on Managing and Customizing Interactive Grids. In this l
esson about customizing interactive grid as an end user, you will learn how to us
e Actions menu and explore various options available on the Actions menu in the
interactive grid toolbar.
You'll also learn how the end users can customize and save the interactive grids
as a report. Furthermore, you will learn how to use the Refresh and Flashback op
tions available in Actions menu of interactive grid. Let's get started.
You can change the column display in an interactive grid using the Actions menu
. To do that, click on the Actions menu and then select columns. The columns dia
log box appears.
By selecting and deselecting the displayed checkbox, you can configure whether
a column should be visible or hidden in the interactive grid view. You can also sp
ecify minimum column width in pixels for each of these columns by selecting the
specific column in the list. Additionally, you can also adjust the order in which the
columns appear in the grid by selecting the Move Up or Move Down buttons at th
e bottom of this page.
Additionally, you can also toggle the Columns button. And using this button, you
can only view displayed or not displayed columns. After saving the configuration,
you can just click on Save, and the configuration that you have saved will appear
in the grid.
The Actions menu available in an interactive toolbar provides end users with a lo
t of customization opportunities. The first such option available in the Actions me
nu is the Columns option, using which, end users can define which columns shoul
d be visible in the interactive grid and which columns should not be visible in the
interactive grid.
For example, I can simply toggle Created By, Updated, Updated By columns to b
e not visible in
the interactive grid by checking off the displayed checkbox against these column
s. And I can also define the width of a column by simply selecting the column and
providing the minimum column width in pixels.
I can also sort the columns using these sort buttons available here. For example,
I want to move the Project Lead column after the Name column. So I can just sele
ct the Project Lead column and move
it up by using the up arrow and down arrow keys available here.
Once this configuration is defined, I can click on See. Now, as you can see, the N
ame column has expanded a bit to 500 pixels. And the columns which we have hi
dden, the Created By, Updated, Updated By columns, all hidden from the view. A
nd I can use the Reset button here to go back to the default view, which you get i
n interactive grid, to reset all the changes.
Another option available under Actions menu is creating a column filter. You can
create a column filter by clicking on the Actions menu and selecting Filter option.
This opens up the filters dialog. Here, you can specify the type of filter you want
to create.
You can either create a column-based filter or a row-based filter. You can also sp
ecify the column on which you want to apply the filter and the operator. Once th
ese filter settings are configured, you can click on Save, which will then apply the
filter on the interactive grid, and the interactive grid will show all the projects wit
h budget less than or equal to 1,000.
The
second option available under Actions menu is the Filter option, using which you
can apply filters on an interactive grid. You can either define-- you can select the
type of filter you want to apply. It can either be a column-based filter or a row-
based filter.
When you select column-based filter, you can select the column and the operator
you want to use to filter the data set. For example, I can simply select Budget, Le
ss Than
or Equals, Value-- 1,000. So with this, I want to filter all the rules where the budg
et column is less than or equal to 1,000.
With this defined, when I click on See, the interactive grid refreshes, and it shows
the filtered data accordingly. Let's make it 8,000, for example. And if I apply filter
again, this is how end users can filter the data using various filter options availab
le under Actions menu.
You can also add highlighting to an interactive grid using the Actions menu. To a
dd highlighting to an interactive grid, click on Actions menu, and select Format,
which opens another submenu where you can select Highlight. This opens up the
Highlight dialog box.
Here, you can give a name to the Highlight you're going to add to your interactiv
e grid. You can specify whether this is going to be a row-level highlight or a colu
mn-level highlight. And then you can specify the CSS styling-- background color,
text color. And a preview of that can also be seen.
And then you can specify the condition based on which the highlight will be appli
ed to the interactive grid. You can select the condition type. You
can either have a row-based condition or a column-based condition for highlighti
ng.
Once this highlighting is configured, you can click on Save, which then applies thi
s highlighting to the interactive grid. End users can also add highlighting by goin
g to Format submenu available under Actions menu and clicking on Highlight, wh
ich opens the Highlight dialog box that I can specify a name.
And this, I want to be a row highlight and not column highlight. I can select a bac
kground color for the row and a text color, if I want. I'll leave it as default.
And the column condition can be-- so that's Budget, Less
Than or Equals, Value-- let's see, 8,000. I'm going to name
it differently-- 8,000. And click on Save. With this, all the rows where the column
condition is valid-- they're all highlighted with the CSS styling we've defined in thi
s Highlight window.
You can also add a control break in an interactive grid using an Actions menu. To
do that, click on Actions menu and select Format. Under Format, click on Control
Break. This opens up the Control Break dialog box.
Here, you can specify the column on which you want to apply the control break.
You can specify the sorting direction. You can also specify how you want to treat
the null values. Once the control break is configured, you can click on Save, whic
h then refreshes the interactive grid and applies the control break.
End users can also create control break from the same Format menu. For exampl
e, I want to create a control break on the Project Lead column. And here, I can de
fine, how should the control brake be sorted-- ascending or descending order? An
d I can also define how the nulls should be treated.
I'm going to go with the defaults. And I click on
Save, and this will apply the control break on the interactive grid. Once you have
customized your interactive grid with highlighting, control break, et cetera, you c
an save this customized interactive grid as a report.
To
do that, click on Actions menu. Go to Report, and click on Save As. This opens th
e Report Save As dialog. Here, you can specify to save this report, either privatel
y, which will then only be visible to you, or publicly, which will then be visible to e
veryone.
You can give a meaningful name to the report and click on Save. This creates a r
eport which can be selected from the Select List that appears in the interactive g
rid toolbar once one or more reports are saved for an interactive grid.
End users can also save the customized report as a public or private report. For e
xample, let me apply control break-- also, highlighting. For Budget column, Great
er Than or Equals, 40,000.
Now, with this grid customized, end users can go to Actions, go to Report, and cli
ck on Save As to save this grid as a public, private, or alternate report. And give i
t to a name-- something like this. And click on Save. Now, this report will be avail
able under private reports for this end user.
You can also download or email an interactive grid as a report. To do that, click o
n Actions and go to Download, which then opens up the Download dialog box. He
re, you can select the format in which you want the report to be downloaded or e
mailed. Various options available are CSV, HTML, PDF, and Excel.
You can check the Send as Email checkbox to send this report as an email, instea
d of downloading. You can specify the recipient here-- that is, the
To address, and copy the CC addresses in the respective fields and click on Send
As Email. The entire interactive grid will then be sent as an email to the respectiv
e email IDs.
Additionally, from the Actions menu, end users can also download or email the re
port. The available formats are CSV, HTML, PDF, and Excel. And I can-- when
I click on Download, and report will be downloaded to my local device.
Additionally, you can also get this report as an email attachment instead of down
loading it to your local device. To do that, you can select the format and check th
e Sender's Email checkbox, and specify the email address, the To email address,
CC, BCC, and the subject. And then click on Send As Email to send this report as
an attachment to your email.
You can update an interactive grid with the most current data available in the da
tabase by selecting the Refresh under Actions menu, Data submenu. Refreshing
an interactive grid is quicker than reloading the entire page in the browser. Refre
shing is also a valuable feature for highly-fluid data sets.
End users can revert an interactive grid to a specific point in time by using the Fl
ashback option available under Actions menu. To revert an interactive grid to a p
revious date, click on the Actions menu and select Data, which then opens up the
submenus. Click on Flashback, which then opens up the Flashback dialog, wherei
n you can specify the number of minutes into the past that you wish to return to.
For example, in this slide, you enter 10 and click on Save, which then reloads the
grid, leaving you the report data as of 10 minutes ago. Furthermore, some of the
other options available under Actions are refreshing the grid. Using this option, w
e can refresh the grid and get fresh data from the database.
Now, let's say I have modified this record and saved. Now I can use the flashback
option available under Actions, Data submenu to revert the interactive grid to a s
pecific point in the past. For example, if I hit enter 10 minutes ago, click on Save,
and this is show me the grid data as of 10 minutes ago.
To summarize, in this lesson, we have learned how to use the Actions menu and
various options available under the Actions menu in the interactive grid toolbar.
You
have also learned how end users can customize and save an interactive grid as a
report. Furthermore, you have learned how to use the Refresh and Flashback opt
ions available under Actions menu in the interactive grid. Hope you've learned so
mething new. Thank you for watching.
Understanding Page Items and Application Items
Developers can create and manage various application page controls, including b
uttons, page level items, dynamic actions, and trees. In this video, we will learn h
ow to create and use page level items.
On the screen, you see the project details form page in the Page Designer. You s
ee different items listed under the items known. An item is part of an HTML form.
An item can be a text field, text area, password, select list, checkbox, and so on.
Item attributes affect the display of items on a page. For example, these attribut
es can impact where a label displays, how large an item is, and if the item displa
ys next to or below the previous item.
There are two types of items. Page items. Page items are placed on a page and h
ave associated user interface properties, such as display only, label, and label te
mplate. Examples of page level items include a checkbox, date picker, display as
text, file browse field, popup list of values, select list, or a text area.
Application items. These are not associated with the page, and therefore have no
user interface properties. You can use an application item as a global variable. T
he screen shows a few examples of page items. Text field, text area, date picker,
select list, number field.
Let's learn a little more about application items. Application level items do not di
splay, but you can use an application item as a global variable to the application.
Application items can be set using computations, processes, or bypassing values
on a URL.
You use application items to maintain a session state that is not displayed and is
not specific to any page. To access the application items page, you need to navig
ate to the application home page and click Shared Components and application l
ogic to select application items.
The application items page is displayed on the screen. You see an example of ap
plication items from a completed application.
Now, let's move on to page items. You can create a page item in either of the foll
owing ways. From a rendering tab, you navigate to the Page Designer, and on th
e Rendering tab, right click the region node where you want to create the item, a
nd select Create Page Item.
Or you can navigate to the Page Designer, and in the central pane, you click Lay
out, and then the Items tab in the gallery. Passing the cursor over an item displa
ys a tooltip that describes it. Select the item you want to create and drag it to th
e appropriate location in the layout where you want to create it.
After either of the above steps, the property editor displays page item attributes.
Attributes are organized in groups.
The Messages tab displays a red or yellow badge to identify messages you need
to address. Selecting a message displays the associated attribute in the property
editor.
You must address the red error message before you can save it. Edit the appropr
iate attributes in the property editor. Note that to create an item from gallery, yo
u can also right click the item, click Add To, and select the appropriate location.
You can use APEX to create the following page items. In the gallery layout, hover
over each of the item type to read more about what each item does. To include a
ny of these items into your layout, just drag and drop the item onto the layout or
right click on an item and select Add To and select the location you would like to
add.
Let us quickly review the steps involved in creating a page item. First, you open t
he page definition in the Page Designer. Right click the region body and select Cr
eate page item.
Enter the attributes such as name, type, and source in the property editor, and fi
nally, click Save. You can also click Save and Run page to see how the page item
appears on the page.
Now, let us look at a demo of creating a page item. In this demo, you will see ho
w to create a shuttle item type on a form page and also set the item value. In my
APEX workspace, I have already created a report and a form on the projects tabl
e.
For example, page 4 is the project's report, and page 5 is the project's form. The
form is created as a dialogue page. Now, let us view the form in the Page Design
er.
In
the page changing, right click the form region-- in this case, project-- and select
Create page item. Next, enter the attributes in the property editor. Under identifi
cation for name, I enter P5_ASSIGNED. P5_ASSIGNED. For type, select shuttle.
Notice the error message in the messages section beside the page selector that
says list of value type is required. Let us address this error.
I renamed the label to "assigned to." Under list of values, select SQL query for ty
pe. For SQL statement, I enter the SQL query, where it is fetching the "assigned t
o" column from the project table.
Here, the first "assigned to" in the SELECT statement is the display value, and th
e second "assigned to" is the return value. Under source for type, select SQL que
ry, return colon separated value. For SQL query, I enter the following SQL query.
This SQL query is stretching all the distinct "assigned to" values from the project
table. Now click Save. Remember, you cannot click Save and Run Pagw since this
is a model dialogue.
And go back to the application, and end the application. Under project's report p
age, click on Edit opens the project form we edited earlier. Here, you see the shu
ttle item type appears on the form page.
Note that you can reference item value stored in the session state in regions, co
mputations, processes, validation, and branches. For more information, refer to
Oracle APEX App Builder uses guide. To summarize, you first created a report wit
h the form on the project's table that shows which projects are created and displ
ays the project status.
Later, you created a shuttle item which displays the "assigned to" list, which cont
ains employee details alphabetically to make assigning people to a project easier
. Item attributes affect the display of items on a page. For example, these attribu
tes can impact where a label displays, how large an item is, and if the item displa
ys next toward below the previous item.
Now, let us see how to edit item attributes in the property editor. Click on Edit Pa
ge 5. On either the Rendering tab or the Layout tab, select the item to edit.
The property editor changes to display the item's attributes. Attributes are organ
ized in groups. To find a group or attribute, search for the group or attribute.
The property editor displays the group of attributes. To return to the default displ
ay, delete the keywords, or you can use go to group. Click the go to group and se
lect the group. To return to the default display, click the go to group again, and s
elect Expand All.
Edit the appropriate attributes. Edited attributes display a green marker to the le
ft of the attribute name until the page is saved. To learn more about an attribute,
see the field level help by navigating to the help tab. And finally, click Save.
You can add an icon to an item. Let us see how to do that by editing a page item.
In the Page Designer, select the item to edit in the Rendering tab on the Layout t
ab.
You can see that the property editor changes to display the item attributes. Navi
gate to Appearance. Under appearance icon, select your desired icon using the ic
on picker. If your team uses font Apex review the Universal
theme sample application to view the available icons and modifiers. Click Save.
Navigate back to the application to view the icon display next to the page item.
Note that this item will be displayed inside of the item, not as part of the label.
You can reference item values stored in a session state in regions, computations,
validations, processes, and branches. The syntax for referring item values are sh
own in the table below. :MY_ITEM. This index can be used for references within a
SQL query and within a PL/SQL called V(MY_ITEM).
This is the PL/SQL syntax, referencing the item value using the V function. Use th
is syntax in PL/SQL code of packages or stored procedures and functions. Avoid t
his syntax in SQL statements. May result in performance problems.
NV(MY_NUMERIC_ITEM). This is the standard PL/SQL syntax referencing the nume
ric item value using the NV function. Use this syntax in PL/SQL code of packages
or stored procedures and functions. Avoid the syntax in SQL statements. It may r
esult in performance problems.
&MY_ITEM. This is used in static text for exact substitution. Exact substitution sy
ntax should be avoided in SQL or PL/SQL code because it can result in SQL injecti
on vulnerabilities.
Before we wind up, let us look at creating a quick pick selection on a page item.
Quick picks enable users to select predefined values with just one click, rather th
an typing in text or selecting from a list of available options.
If the item type supports click quick selection, use the quick picks attributes to d
efine up to 10 selections that display under the given item. Clicking a quick pick
sets the value of the item.
On the screen, you see an example of creating quick picks to select a status on t
he project details form. Let us see how to create this in our APEX application.
Navigate to the project form we created earlier and view the attributes of the P5_
STATUS page item. Select the group Quick Fix in the property editor. Select Yes t
o specify to display quick picks for this page item.
Link attributes, enter the HTML attributes that are associated with the display of
each quick pick link. For label, enter the label for each group pick. This label is th
e text the end user of the application sees.
For this example, I enter "open" as the label name. For value, enter the value ass
ociated with each quick pick. This value replaces the existing item value when th
e user clicks the quick pick.
In this example, I type open for the value. Similarly, you can enter up to 10 quick
picks for each page item. Finally, click Save.
Navigate back to your application. Run the application to see the changes. Here,
you see the list of quick picks that we defined for the status page item. Clicking o
n any of the quick picks will replace the existing value for the status item.
To summarize, in this lesson, you learned how to create and use page level items
. You also learned how to create a shuttle page item and quick picks. I hope you l
earned something useful. Thank you for watching.
Creating and Managing List of Values
As you are already aware, developers can create and manage various application
page controls, including page level items. In this lesson, we will learn how to crea
te list of values in APEX.
LOVs or List of Values are used everywhere, waveforms or reports. There are thr
ee types of LOVs you can create in APEX. Static LOV. The static list of values is b
ased on the text value you will enter.
Dynamic LOV. The dynamic list of values is based on the SQL query or the SQL q
uery returned by a function body. Cascading LOV. One item on the page determi
nes the list of values for another item. Let us review the quick steps involved in c
reating the static LOV.
First, you navigate to your application home page and click on Shared Componen
ts. Under Other Components, select List of Values. The List of Values page appea
rs. Click Create.
Specify the source, name, and type. Now, you enter the static display and return
values. Finally, click Create List of Values. A notification is displayed upon succes
sful creation and LOV is displayed in the list.
Now, let us look at a demo of creating a static LOV. Oracle APEX stores the displa
y values, return values, and the sort sequence you specify in the list of values re
pository. After you add a static LOV to the repository, you can create an item and
display it as a check box, radio group, select list, or pop-up list based on this defi
nition.
You can see that I have navigated to a sample application I've created earlier. No
w, click on Shared Components. And under Other Components, click on List of Va
lues.
The List of Value page appears. Click Create to create a new static LOV. Select Fr
om Scratch and click on Next. Provide a name for the static list.
For type, choose static and click on Next. Enter the list of display value and retur
n value for the static list. Once you enter the list of display and return values, clic
k on Create List of Values.
Now, Oracle APEX stores the display and return values and the sort sequence yo
u specify in the list of values repository. After you add a static LOV to the reposit
ory, you can create an item and display it as a check box, radio group, select list,
or a pop-up list based on this definition.
Now, let us move on to review the quick steps involved in creating a dynamic LO
V. First, you navigate to the Application home page and navigate to Shared Com
ponents. Under Other Components, select List of Values. The List of Value page a
ppears. Click Create.
Specify the source, name, and type. The difference between dynamic and static
LOV is that for type, you select dynamic while creating a dynamic LOV. Specify th
e data source and the source type.
For Column Mappings, specify the return column and the display column. Click Cr
eate List of Values. A notification is displayed upon successful creation and LOV i
s displayed in the list. Let's switch back to the APEX workspace to see a demo on
creating a dynamic LOV.
I have already navigated to the Shared Components and List of Values page in th
e application. Click on Create. With the default value being from scratch, click on
Next. Enter the name for the dynamic LOV. For type, select Dynamic and click Ne
xt.
The default data source is the local database. You can also select REST enabled
SQL service or REST data source. For the source type in this demo, we select SQL
query. Enter the SQL query that returns two columns.
The first column is the display value. The display value is the value you see in a li
st of values. This column should be earliest and must have a different name than
the return column.
The second column is the return value. The return value
is the value returned when the display value is selected. The return column shoul
d be aliased if it includes any operations. Use bind variables syntax within your S
QL query to reference the session state of the application or page items. Click Ne
xt.
For Column Mappings, specify the return column and the display column. Click Cr
eate. After creating a named LOV as a shared component, you can associate with
the page item type that can accept the list of values, for example, select list, shu
ttle, check box, radio group, pop-up LOV, and list manager.
Now, let us see how we can associate this dynamic LOV to a page item. View the
page in the Page Designer and navigate back to the project form that we had cre
ated earlier. Under Rendering, expand the items and select the item with which y
ou want to associate the LOV.
The page item display type should be an LOV type in the Property Editor. For exa
mple, for status under Indentification, type-- I select Select List. In the Property E
ditor under List of Values, select Check Component, then select the named LOV.
From the List of Values, select list. DYNAMIC_STATUS is the dynamic LOV we crea
ted earlier in the shared components.
Now, click Save. Navigate to the application to see that the status has been conv
erted to a list of values. And these values are being fetched from the dynamic LO
V we created earlier.
Let us look deeper at cascading LOVs. On the screen, to select lists up here, maki
ng a selection in the department select list determines which individual is display
ed in the employee select list. By creating a cascading LOV, one item on the pag
e determines the list of values for another item.
App Builder includes cascading LOV support for the following item types-- select l
ist, shuttle, check box, radio group, pop-up LOV, and list manager. You create a c
ascading LOV by creating two items. To populate the second item, you specify a
cascading LOV parent item when running the Create Item wizard or by editing th
e items attributes.
Here, you can see the quick steps involved in creating a cascading LOV. First, yo
u view the page in the Page Designer. Create the first item as a select list. The lis
t of values includes a SQL query.
Now, create the second item as a select list. Under List of Values, for SQL query, i
nclude the reference of the first item in the WHERE clause. Under Cascading LOV
Parent Items, select the first page item. Click Save.
Let us switch back to the APEX instance to see how it is done. You can see a pag
e in the Page Designer where I have created a form for the employee details.
Now, to begin creating the cascading LOV, we create the first item as a select list
. Here, I already have a list of page items in the form. I choose P7_ department n
umber as the first item and convert it into a select list. In the Property Editor und
er Identification, Type, change the item to a select list. The list of values includes
a SQL query. Enter the SQL query to fetch the department names.
Now, let us edit the second item. Select P7_ENAME. And in the Property Editor, c
hange the type to a select list. Under List of Values, for type, select SQL Query.
When entering the SQL query, include the reference of the first item in the WHER
E clause. For example, in this query, I've included P7_ department number in the
WHERE clause of the SQL query.
Also, under Cascading List of Values, for parent items, select P7_ department nu
mber. This indicates that the list of values for P7_ENAME is determined by the val
ue selected in the P7_ department number select list. Click Save, and save
and run the page.
As you can see, department number is a select list. Select any of the department
names, and the ename list is refreshed. To display the list of employees who belo
ng to a particular department, try changing the department name to sales. And y
ou see the list of employees accordingly.
Creating and Customizing Buttons
n this video, you will learn how to create and use buttons in APEX. As you design
your application, you can use buttons to direct users to a specific page or a URL
or to post to process information. Buttons can perform different types of actions.
Buttons can perform different types of actions.
A button can submit a page, for example, to save changes to a form page. A butt
on can redirect to either a different page or a custom URL. A button can perform
a custom action, for example, if a button's behavior is defined in a Dynamic Actio
n.
When you create reports and forms using wizards, you'll notice that some button
s, such as Cancel, Save, Create, and Delete, are automatically created. Now, let
us quickly review the steps involved in creating a button. First, you view the pag
e to contain the item in the Page Designer. If necessary, you create a region to c
ontain that item. Right-click the region and select Create Button.
The Property Editor displays the button attributes. Edit the appropriate attributes
. Under Behavior, select the action to be performed when this button is clicked. F
inally, specify the server-side conditions, if any, and click Save.
Now, let us look at a demo of creating a button. On the screen, you can see a sa
mple application I've created earlier using the projects table In this video, I'll sho
w you how we can add a Create button to one of the forms in the application to c
reate a new record.
Open the form in the Page Designer. If necessary, create a region to contain the i
tem. We already have a dialogue created containing the buttons. So I will not be
adding a new region. Right-click on the region and select Create Button.
Alternatively, navigate to the Gallery and click on Buttons. Right-click the button
and select Add To and select the appropriate location. You can also select the bu
tton and drag and drop it into the Layout tab. Now, once you create a new button
, the Property Editor displays the button attributes.
Edit the appropriate attributes. Specify the button name and label. Under Layout,
Position, select the position to display this button. The available template default
positions identify the display position within the page template.
Under Appearance, select a button template to define the appearance of the butt
on. Select whether to use the normal or the hot button template when rendering
this button. If you select Hot, the button is rendered using the template stored in
the Hot template attribute of a button template. If no value is defined, the regula
r button template is used. Here, I enable the Hot button template.
Under Behavior, select the action to be performed when the button is clicked. Th
e available options include Submit Page-- submit the current page with the reque
st value equal to the button name. If you select Redirect to Page in this Applicati
on, when the button is clicked, it redirects to a page in the current application wit
h optional additional attributes for resetting pagination, setting the request value
, clearing cache, and setting item values on the target page.
Redirect to a Page in a Different Application. This redirects to a page in a differen
t application with optional additional attributes for resetting pagination, setting t
he request value, clearing cache, and setting item values on the target page. Re
direct to a URL. This redirects to the target URL you specified.
Defined by Dynamic Action. It does not submit the page or redirect to another pa
ge. Instead, the button's behavior is defined by a dynamic action. Specify the ser
ver-side conditions, if any, and click Save. Server-side conditions are those condi
tions that must be met in order for this button to be rendered a process.
In this example, you select Item is NULL for type. And select ID for the item. This
indicates that only when the value of P5_ID is null the condition is met. And the C
reate button appears on the form. Once you complete updating the attributes, do
n't forget to click Save.
Now, after you create a button, you can later go ahead and edits-- and edit its att
ributes. To edit the attributes of a button, select the button in the Rendering pan
e or in the Layout tab. You see that the Property Editor shows the attributes of th
at button. You can then edit the button attributes and save the changes.
Let me run the form to show you how to create button of yours. Remember, we c
annot directly run the form page since it is created as a model dialog. To run this
form, let us navigate back to the Application homepage and click on Run Applicat
ion.
Here, when you click on the Edit button, it opens the form page we edited earlier.
Now, since this record is already existing in the form, you don't see the Create b
utton on the form. Click on Create. And now the Create button appears in the for
m. This is due to the server-side conditions we set while editing the attributes of
the Create button.
Now, enter the appropriate details and click on Create. And the record will be sub
mitted. And the new record appears in this report. To summarize, in this lesson,
you learned how to create and customize a button in an APEX application. I hope
you learned something useful. Thank you for watching.
Additional Page Items
In this lesson, you are introduced to some of the latest page items that we intro
duced recently, namely the Image Upload, Combobox, and Select One or Select
Many.
Using the page item called Image Upload, you can enable users to upload one or
multiple images from a local file system or device. It provides a wizard, where im
ages can be optionally cropped or resized. The item type includes attributes spec
ific to previewing, uploading, resizing, and cropping an image, which you can edit
in the Property Editor.
From the user's perspective, this item type displays an upload input, or drop zon
e, which enables users to select the image or images. If cropping is enabled, a di
alog appears that enables the users to zoom in or out, or move the image around
before cropping. Once cropping is complete, an image preview appears. Image r
esizing is handled on the client side, but in the background.
In this lesson, you learned additional page items, such as Image Upload, Combob
ox, and Select One or Select Many. You also saw demos of how to implement the
m in your APEX app. I hope you learned something useful. Thank you for watchin
g.
Let us now look at a demo. On the screen, you can see that I have a page opene
d in a sample demo application. On this page, I'm going to add a new page item.
And I'm going to name this item Image Upload. And for type, I'm going to Choose
Image upload. So the image upload item type is similar to file upload, but with ad
ditional capabilities specific to images.
Here, under the Display group, you can choose to customize the look and feel of
the item type. When you choose the display as icon drop zone, you also get an o
ption to customize the preview size. And if your application is going to be used o
n a mobile device, you can also choose to capture using either the selfie camera
or the main camera.
When it comes to storage, you can either choose to upload the file into a tempor
ary table, which will be purged at the end of the session or request. Or you can c
hoose to upload the file into a blob column specified in the item source attribute.
So I already have a table created in my database with a blob column to store the
se files. I also have a column to store the MIME type and the file name.
After entering these details, I am going to specify the source. Here, the form regi
on is the form where I have specified the page item. And the column will be the fi
le blob column, where I'm going to upload the image. And data type is BLOB. No
w, let's go ahead and run the page to see how it looks.
Here on the left, I have a form region, an image upload page item. On clicking on
item, it opens a dialog to upload an image from your local device. I select an ima
ge, and I can see a preview of the image. If I'm not happy with the image, I can cl
ick on the cross icon to select another image. Once I click on Submit, I have a pa
ge process to insert the image into the database table and display the image on
the right.
As you can see, the image that I have uploaded is quite large. So APEX allows yo
u to resize the image before uploading. Let's see how it's done. Here, under Resi
ze To group, I can specify the maximum file size and also specify the width and h
eight in pixels. I also have the option to allow cropping. When you enable croppin
g, you get an option to select the aspect ratio. You can select the aspect ratio fro
m the list or even define a custom aspect ratio.
Let's run and see how it looks. Now, this time when I upload an image, I get anot
her dialog to crop the image. Here, I can zoom in, zoom out, and crop the image.
Once cropped and clicking on Submit, we'll upload the cropped image into the da
tabase table. As you can see, the image is cropped and also resized to the dimen
sions that we mentioned earlier in the resize attributes.
A combo box page item displays a text item with a list of values icon. Oracle reco
mmends using a combo box item for small lists, where end users can add their o
wn text. When the end user clicks the icon, a pop-up window appears with a sug
gestion drop down of values.
A combo box item supports filtering and free input text. If multiple value attribut
es is enabled, the combobox displays selected options as chips. In case you want
selections without free input text, we suggest that you consider using select list,
select one, or select many. For large result sets, consider a pop-up alloway.
Let us now see a demo. On the screen, you can see a sample APEX demo app, w
here you can see that I have defined a combo box page item type in multiple wa
ys. Let's go over them one after the other. So the first is a combo box item type
with single selection. Here, I have provided a list to select a country from a list of
values. As we saw earlier, a combo box is similar to a list of values item or a pop-
up alloway or text field with autocomplete option. Here, you can select the value
of your choice or search by typing into the field.
Now, let's see how this is configured. In the Page Designer, you can see that I ha
ve a page item called P2_COMBO_ONE. And this page item type is Combobox. Fo
r a single value selection, you need to ensure that the multi selection is toggled t
o off. So now, you can only choose one value. And in a list of values, you can cho
ose the type of list of values-- either a shared component, SQL query, static valu
es, or a function body returning SQL query. In our demo, I have used a SQL query
to fetch the name of the country from the sample data set table called EBA for C
OUNTRIES.
Now, switching back to the Demo Application page, the next variation is Combob
ox Many. In this case, I can select multiple countries at once. It also enables me t
o search for a country without erasing the earlier selections. Combobox also lets
choose multiple values without closing the list of values dropdown.
Another unique feature of combobox is that apart from selecting the values from
the provided list, you can also manually enter new values. Let's say I enter a new
value, which is not in the list, so this value is detected by APEX as a new value, w
hich is captured in a new page item called manual entry. All the new entries whic
h are not in the list will be captured in this new page item. And later, you can cho
ose whether to insert it into a lookup table, or use it in a way that you seem fit fo
r your use case.
Now, let's see how this was configured. So I have a page item called P2_COMBO_
MANY. And the type is Combobox here. I have enabled the multi-selection toggle
to on. Once you have enabled the multi-selection option, you have to enter a pag
e item for manual entries item. Otherwise, it's going to throw an error. So I have
defined another page item called P2_MANUAL of type text field. And I have enter
ed it for manual entries item.
Once you enable the multi-selection option, you should also define the multiple v
alues type. Here, I have chosen delimited list. You can also choose a JSON array.
And you can define a separator. In our case, it is comma. And for list of values, I
have the same list of values as earlier, which is selecting the country name from
EBA_COUNTRIES table.
Now, let's switch back to the application. Another way to define a combobox item
type is to use a shared LOB. Combobox allows you to search across multiple colu
mns. As you can see, I have defined the list of values to contain the name of the
country, capital, and also its population. Although you can see all the values, the
display is always the country name in the combobox field.
You can also search across multiple columns. Let's say I want to insert India, but
I know its capital is Delhi. So I was able to search using the capital name, and yo
u can select the item. You may have also noticed that the display of the list is so
mewhat different from the regular list of values. This is because I have defined a
HTML expression using template directives and substitution strings.
Let's see how this is configured. So for the P2_COMBO_SHARED page item, the ty
pe is again Combobox. And I have enabled the multi-selection option. I am using
the same Manual Entries page item to capture the manual entries. So for HTML e
xpression, I have defined an HTML expression using template directives, where I'
m displaying the capital and also the population, along with the country name.
I have also provided a break tag to display on different lines. Here, the multiple v
alues type is again delimited list. And a list of values instead of a SQL query for t
ype, I'm choosing a shared component. And I have created a dynamic list of valu
es called COUNTRIES_SHARED. Let's see how this is configured.
So COUNTRIES_SHARED is a dynamic list of values that I have defined using a SQ
L query, which fetches all the columns from EBA_COUNTRIES table. So here, I can
define the display column, which is the name of the country, and also an icon to
go along with the values.
Under Additional Display Columns, you can choose the columns that you would li
ke to be displayed in the list. So in our demo, I have chosen the name of the cou
ntry, capital, and population. You must also ensure that these columns have visib
le and searchable set to Yes. And this ensures that you can search these column
s from the combobox page item.
Two new page items were introduced in APEX 24.1, that let users choose one or
more options from a list of values, with more flexible styling and searching than
browser native select lists. You can search across multiple columns and select m
ultiple options, all while keeping the select dropdown open. A select one or select
many item provides a more user friendly option compared to a select list item or
a pop-up alloway, respectively.
You can style search results using custom HTML, with template directives, and o
ptionally include icons and group. Selected options appear as chips while editing
or a delimited list, otherwise.
Let's now look at a demo. On the screen, you can see a sample demo app, where
I have defined two new page items that were introduced in APEX 24.1. Select on
e and select many. Select one allows you to choose one value from the list of val
ues. It also allows you to search for the value and select them.
Select many allows you to select multiple values without closing the list of values
dropdown. It also allows grouping and template directives. Along with searching,
it also allows you to group the columns and search across multiple columns in th
e table. Another unique enhancement is when the delimiter is set to comma. You
can also see a chip with the number of selections that you have made. This beco
mes easier when you have multiple selections in the item, and you cannot keep t
rack of the number of items you have chosen.
Now, let's see how these were configured one by one. For select one, the type is
set to Select One. The value HTML expression attribute allows you to enter an ex
pression with template directives and substitution strings. So under List of Values
here, I'm using a SQL query to fetch all the currency from a currency table that I
have created in my database.
PT_MANY is a page item of type Select Many. When Select Many is chosen, you c
an select multiple values from the dropdown. So when the display value as is co
mma separated list, you can see the number of values selected. And the values a
re displayed as a comma separated list. You can also choose to display the value
s as chips.
Here, for list of values, instead of a SQL query, I'm choosing the type as Shared C
omponent, where I have defined a shared dynamic list of values called CURRENC
Y_SHARED. Let's see how this was configured.
CURRENCY_SHARED is a list of value based on the table called CURRENCY, where
I have stored details of the country currency and its corresponding icon. I'm choo
sing the display column to be currency. And also under the group attribut, I'm ch
oosing country. So in the dropdown list, you saw that the currency for each count
ry was grouped under the country name.
And the additional display columns, I have chosen to display the country name al
ong with its corresponding currency. I have also enabled those columns to be sea
rchable and visible. Let's go back to the application, and see how it looks again.
So here, you can see that the values are grouped under the country name. And I'
m also displaying the icon along with the currency name. You can also search ba
sed on other columns. And when you select the country, it displays its correspon
ding currency. You can see that I have currently chosen seven values here.
Page Rendering and Page Processing
An APEX application has a client side and a server side. On the server side lies th
e database. What if you want to execute a PL/SQL block and the page is rendere
d? What if you want to execute a business validation and the page is submitted?
In this module about enhancing your applications using computations, processes,
or validations, you will learn exactly that. You will learn how to use computations
to compute values of page items and application items.
You will also learn how to execute PL/SQL blocks at various page processing poin
ts. We'll also learn how to execute business validations on top of the data submit
ted by the user.
In this first lesson, you will get a brief introduction to what APEX does and the pa
ges requested, that is Page Rendering. You'll also learn what APEX does and the
pages submitted, that is Page Processing. Let's get started.
The APEX engine primarily relies on two processes to do its job. One is the Show
Page process, also known as Page Rendering, and the other is the Accept Page p
rocess, also known as Page Processing. So what is Show Page process?
The APEX engine dynamically renders and processes pages based on data stored
in the Oracle Database tables. To view a rendered version of your application yo
u requested from the APEX engine with a URL, when you request a page using a
URL, the engine is running Show Page process.
To ensure Page Process, the APEX engine assembles all the page attributes, inclu
ding reagents, items, and buttons that you have configured in the Page Designer
into a viewable HTML page.
Coming to Accept Page process. What is Accept Page process? When you submit
a page, the APEX engine is running Accept Page process or performing Page Proc
essing, during which it saves the submitted values into the session state and the
n performs any computations, validations, or processes or branching that you ha
ve defined in the Page Designer.
This slide shows an example of Page Rendering. In this example, you see the cus
tomer support. When you click on a customer name in the report, the Customer
Details form dialog page is invoked.
During this invocation, the APEX engine is essentially calling Page Rendering pro
cess. As I've explained earlier, it reads the APEX metadata which the developer h
as configured using Page Designer for this dialog page, and it assembles all the p
age attributes, including reagents, items, and buttons, and displays that in the fo
rm of a viewable HTML page, which you see as a dialog page.
And when you click on the Cancel button in the Customer Details form page, the
dialog closes and you are again shown the Customer Report page. In this exampl
e, nothing is submitted in the Customer Details from dialog page, and so there is
no Page Processing involved.
Now coming to the example of Page Processing. In this slide, the example descri
bes Page Processing. So in the Customer Details form dialog page, you see two e
xtra buttons, Apply Changes and Delete Changes.
So in this page, you can update the details of the customer. And once you are do
ne with updating of details, when you click on the Apply Changes page, and as p
art of this, the form page is submitted.
And that is where the APEX engine performs Page Processing or the Accept Page
process, during which all the page items that you see in the page are submitted t
o the session state. The client values of these page items, whatever you see, are
the client values. They are not yet submitted to the session state unless you sub
mit the page.
So when you submit the page, that is when these page items are submitted to th
e session state. And then after all these items are submitted to the session state
is when the APEX engine performs field computations, validations, processes, an
d branching you have defined in the Customer Details from dialog page. This is a
n example of Page Processing.
To summarize, in this lesson, you have learned about the Show Page process, als
o known as Page Rendering. You also learned about the Accept Page process, als
o known as Page Processing.
In the coming lessons, you will learn about various process types and execution
points available in APEX, where you can run your custom PL/SQL code. Hope you
have learned something new. Thank you for watching.
Creating and Understanding Computations
In this lesson, you will learn about computations. We learn how to use pag
e computations and application computations to compute values for page items
and application items.
Let's get started. A computation in APEX is a logic that can be used to assi
gn values to a single item. There are two types of computations, one is applicatio
n-level computations, which are defined at the application level. The second one
is the page-level computations, which are defined at the page level, and gets exe
cuted only for that specific page, when the page is loaded or submitted. Applicati
on-level computations are generally used to populate values into application ite
ms, and the page-level computations are generally used to populate values and
do page items.
Page computation can be used to ascend value to a specified item and the
page is submitted or displayed, and the application-level computations to assign
values to different items. Some of the examples of computations are, let's say yo
u want to retrieve and display a value, such as total salary from the database, an
d the report is displayed. You can use page rendering computation.
Another example is, let's say you have a form page, which contains fields f
or entering phone numbers. The phone number is stored in a single database col
umn. However, the data entry form breaks the phone number into three compon
ents-- area code prefix and line number. So in this example, you can use a comp
utation to combine these three values into a single string, and assign that into a
page item, which can then be used to update a database column. These are som
e of the classical use cases of using computations.
Let us see how to create a computation. I'm using the same example. I ha
ve an employees report. When I try to edit an employee, it opens the Edit form.
Here, I get all the details of the employee. In this example, what I'm going to do i
s I'll create one more item, which displays the sum of salary value and the comm
ission value, which just asks these two values, and displays in the item.
So let me do that, we can go to Interface Designer, in page number 3, whi
ch is the Form, which you just saw. So here, I'd be adding one more page item. I'l
l call it Total Salary. Once that widget was added, I can then go to Pre-Rendering
and After Header, right click, and choose Create Computation.
On the right-hand side in the Property Editor, you can select the item nam
e, then
to which you want to send the computed value. In our case, it will be the total sal
ary. Under type you can choose different ways you can compute the value. You c
an give a static value, you can get
value from another item. In a SQL query, which returns a single value, or SQL qu
ery, which returns multiple value, separated by column. An expression, you can
use function body, and you can also get the value from the preference.
By using Function Body in this example, and just try
to return B3 cell and that will be added with B3 commission, which adds the salar
y and commission wage items. And you can't save. I would just save and go back
and reopen this employee, which has both salary and commission. And now you
can see the total salary computed here, which
is a sum of salary and commission. This is how you can create a computation. Co
mputation can be executed at various execution points. You can see all these poi
nts in the Execution Property Group. The computation can also be created after S
ubmit, for example, which will be executed when the page is submitted.
And now, let us also see the second type of computations that are availabl
e in APEX, which is the application computation. We can go to Application Compu
tation from Shared Components. Initiate components under Application Logic, yo
u can find Application Computations. Click on that. Here you can create applicati
on computations by clicking on the Create button.
Again, you need to select the computation item. It can be an application it
em or it can also be a page item. I have an application item. I'll select that, but y
ou can also choose a page item if you want. And here we have some extra comp
utation points, like New Instance, whenever a new session is created, or if you w
ant to compute something after authentication, and the general computation poi
nts which you saw in the page computation as well.
So for now, you can choose which way you want. The computation type is
the same which you saw in the page computations. Again, compute the value in
whichever way you want, various computation types are available here. For exa
mple, if I choose Static Assignment, I can just give value, something like this.
Now on the click of Create Computation button, the application computatio
n is created. This is how you can create page computations and application comp
utations in APEX.
Creating and Understanding Page Processes
Let's get started. A computation in APEX is a logic that can be used to assi
gn values to a single item. There are two types of computations, one is applicatio
n-level computations, which are defined at the application level. The second one
is the page-level computations, which are defined at the page level, and gets exe
cuted only for that specific page, when the page is loaded or submitted. Applicati
on-level computations are generally used to populate values into application ite
ms, and the page-level computations are generally used to populate values and
do page items.
Page computation can be used to ascend value to a specified item and the
page is submitted or displayed, and the application-level computations to assign
values to different items. Some of the examples of computations are, let's say yo
u want to retrieve and display a value, such as total salary from the database, an
d the report is displayed. You can use page rendering computation.
Another example is, let's say you have a form page, which contains fields f
or entering phone numbers. The phone number is stored in a single database col
umn. However, the data entry form breaks the phone number into three compon
ents-- area code prefix and line number. So in this example, you can use a comp
utation to combine these three values into a single string, and assign that into a
page item, which can then be used to update a database column. These are som
e of the classical use cases of using computations.
Let us see how to create a computation. I'm using the same example. I ha
ve an employees report. When I try to edit an employee, it opens the Edit form.
Here, I get all the details of the employee. In this example, what I'm going to do i
s I'll create one more item, which displays the sum of salary value and the comm
ission value, which just asks these two values, and displays in the item.
So let me do that, we can go to Interface Designer, in page number 3, whi
ch is the Form, which you just saw. So here, I'd be adding one more page item. I'l
l call it Total Salary. Once that widget was added, I can then go to Pre-Rendering
and After Header, right click, and choose Create Computation.
On the right-hand side in the Property Editor, you can select the item nam
e, then
to which you want to send the computed value. In our case, it will be the total sal
ary. Under type you can choose different ways you can compute the value. You c
an give a static value, you can get
value from another item. In a SQL query, which returns a single value, or SQL qu
ery, which returns multiple value, separated by column. An expression, you can
use function body, and you can also get the value from the preference.
By using Function Body in this example, and just try
to return B3 cell and that will be added with B3 commission, which adds the salar
y and commission wage items. And you can't save. I would just save and go back
and reopen this employee, which has both salary and commission. And now you
can see the total salary computed here, which
is a sum of salary and commission. This is how you can create a computation. Co
mputation can be executed at various execution points. You can see all these poi
nts in the Execution Property Group. The computation can also be created after S
ubmit, for example, which will be executed when the page is submitted.
And now, let us also see the second type of computations that are availabl
e in APEX, which is the application computation. We can go to Application Compu
tation from Shared Components. Initiate components under Application Logic, yo
u can find Application Computations. Click on that. Here you can create applicati
on computations by clicking on the Create button.
Again, you need to select the computation item. It can be an application it
em or it can also be a page item. I have an application item. I'll select that, but y
ou can also choose a page item if you want. And here we have some extra comp
utation points, like New Instance, whenever a new session is created, or if you w
ant to compute something after authentication, and the general computation poi
nts which you saw in the page computation as well.
So for now, you can choose which way you want. The computation type is
the same which you saw in the page computations. Again, compute the value in
whichever way you want, various computation types are available here. For exa
mple, if I choose Static Assignment, I can just give value, something like this.
Now on the click of Create Computation button, the application computatio
n is created. This is how you can create page computations and application comp
utations in APEX.
To summarize, in this lesson, you have learned how to create and use pag
e computations and application computations to assign values to your page item
s and application items. You have also learned about various execution points av
ailable in APEX, where you can execute your computations. Hope you have learn
ed something new. Thank you for watching.
Welcome to this module on enhancing your applications using computatio
ns, process, and validations. In this lesson, you will learn about various applicatio
n processes and page processes available in APEX. You'll also learn about various
execution points at which you can execute these processes. Let's get started.
What is a page process? What does it do? Page process performs an action
at a specified point during the rendering or submission of the page. For example,
you can create a page process to execute logic or to make a call to the database.
A page process is a unit of logic that runs when a specific event occurs, su
ch as page rendering or submitting a page. You can choose different process poi
nts to control when the page process executes.
On the other hand, application process are blocks of PL/SQL logic that are
set to run at specific points using processes from multiple pages of an applicatio
n.
This slide also shows different process types available in APEX. For exampl
e, Clear Session State, you can use that process type to clear the session state, s
tore within APEX. You can use close the current model dialog of the processing s
ystem. You can use Automatic Row Processing DML to insert, update or delete re
cords into a single database table or an updatable view. You can use Invoke API t
o call PL/SQL API as defined in the database.
Let us have a quick demo of page processes. Let us see how to create a p
age process. For this demonstration, I'm going to use this employee support. This
employee support has two buttons. One is the Create button, within which you c
an create and employ, and edit hyperlink, within which you can edit employee de
tails.
Right now, it opens an empty page with no items and regions, same is the
case with edit employee as well.
So let me go to this page and create some regions. First region that I'll be
creating is the type Form. And I'm using the EMP table.
Now as you can see, all the page items are created, and employee number
is marked as the primary key, as it should be. And I click on Save.
With that created, now if I go back and click
on Create, as we have discussed earlier, it will invoke the page rendering for that
particular page, page number 3, in this case, and which will render all these item
s. This is the page rendering process which is called.
Now if I click on Edit icon, as you can see, all the items are filled. Why are t
hey filled? If you go back and dig in a little bit, you can see when you create a for
m region, the APEX engine has automatically created for you a form initialization
process. So from the Report page, we are passing the primary key of the corresp
onding row, the employee number, to the Create or Edit employee model dialog.
And since we have this initialized form process defined in the Before Head
er Pre-rendering, it knows that the pre-employee number is the primary key. And
it uses that value to fetch other attributes of this employee, like employee name,
job, manager hiring because of this pre-rendering process.
Now let us see how to create your own pre-rendering process. This is creat
ed by APEX by default when you create a form region. To create a process, you c
an right click on any of these process points, Before Header, After Header,
or Before Regions.
So there are three execution points available in pre-rendering. You can sel
ect. And when you right click on it, you get multiple options, whether you want to
create computation or create process. You can use create process for this demo.
Now a new process is created.
Here, you can select what is the type of process, whether you want to exe
cute a code. So this is like the blanket type. With Execute Code, you can perform
any kind of PL SQL logic in this PL SQL code block.
The most common use case would be to perform any initializations of pag
e items. For example, I want to initialize the Salary page item as null. I can have i
t like this in the PL SQL block and click on Save.
And now, when I open this employee's detail, you can see the salary is not
filled. Even though this employee's salary is filled here, it is not filled in the mode
l dialogue because we have mentioned this pre-rendering process. This is how yo
u can leverage processes during page rendering and initialize page items, for ex
ample.
So you can always change the process point from the Execution property g
roup here on the right side. You can also define whether the process should be e
xecuted once per page rest, which is the default, or once per session. This is how
you create a process which can be executed during pre-rendering.
Now coming to the process, which gets executed on Submit. Now if I go to
processing that, you can see there are no processes because it's an empty page.
Now let me create a button, which will submit the form.
Let's try to create a region and a button in that region, and name it Apply
Changes. Then I can give a template to the region as Buttons Container. I can als
o make the button hard.
Now that the button is defined. Now when I click on this button, the page
will be submitted because the action is Submit Page. Now when the page is sub
mitted, what we want is to save whatever the user has entered in these records i
nto the database.
So for that, let me go to the Processing tab. And in here, we have, again,
multiple process execution points. Let me create a process in the processing poi
nt. And here, I can select different process steps.
So I can always use the execute code to perform custom logic. But I will no
t be using this execute code, but I'll be using Form Automatic Row Processing DM
L, which automatically handles the DML processing of the region we define here.
Form Region, I'll be selecting Employees Form. And I'll
be giving it a name, unique full name.
And one more thing here is on the Apply Changes button, I have to also m
ention the Database Action, whether I want to perform an INSERT action, or UPD
ATE action, or DELETE action. Now I'll be performing an update action on this App
ly Changes button.
Now when I go back to the page and we open the page, I get an Apply Cha
nges button. When I make a change, for example, Ename to CLARK2 and click on
Apply Changes, the roles updated. And when I go back to the region and refresh
the grid, you can see these changes being applied.
So this is how you can create process, which can be executed during the P
age Submit or action page process.
To summarize, in this lesson, you have learned how to create and use a pa
ge process to initialize from page items during page rendering. You have also lea
rned how to create and use a page process to update data in database tables du
ring page processing.
Hope that you've learned something new. Thank you for watching.
Welcome to this module on enhancing your application using computation
s, processes, and validations. In this lesson, we are going to focus on two key are
as. First, you will learn how to effectively use the Invoke API process type to inte
grate PL/SQL APIs into your APEX applications.
We will also explore how to easily invoke REST data sources to work with e
xternal REST APIs using the Invoke API process type. Next, we will look at how to
run page processes in the background using the run in background option. This f
eature lets you offload tasks without disrupting the user experience. Let's get sta
rted.
The Invoke API process type lets you invoke procedure or function from th
e local database or an operation from a test data source. Instead of writing out P
L/SQL code, you can use this process type, which simplifies running those proced
ures or functions. In Page Designer, it automatically maps parameters to relevant
page items or columns in an interactive grid.
If the parameters change, you can use the Synchronized Parameters optio
n to refresh the parameters. The process understands all the basic PL/SQL data t
ypes, like number, date, and Boolean. It can also handle more complex data type
s, such as PL/SQL records. After running the procedure or function, you can store
the old parameters and function results directly into page items. These page ite
ms can then be referenced and used in the subsequent page processes.
Let's expand more on the support for REST data sources in the Invoke API
process type. The Invoke API process type supports not only packages, stored pr
ocedures, and functions but also REST data sources. The Invoke API process type
allows you to make REST calls from page processes without writing any PL/SQL. Y
ou can map REST source parameters to page items, use SQL expressions, or set
static values as needed.
Next, let's talk about background processing in APEX. Background page pr
ocesses use the execution chain process type, which can run tasks in either the f
oreground or background. The execution chain consists of one or more child proc
esses that run in sequence. This is useful for long running tasks, like data loading
or complex data processing. You can monitor these processes using the APEX_BA
CKGROUND_PROCESS PL/SQL API. Job limits can be configured at the instance, w
orkspace, or application levels.
More on the limits for background page processing. Background page proc
essing is actually executed by the database scheduler, DBMS_SCHEDULER. This
means that the application's parsing schema must have the CREATE JOB privileg
e granted in order to run background page processing jobs. You can configure li
mits for concurrently running background page processing jobs at instance, work
space, and application levels. If a new background execution would exceed these
configured limits, it will wait in a queued state until one of the running execution
s finishes and a slot becomes available.
At the instance level, you can configure the background jobs attribute in In
stance settings. The instance level setting acts as a default for all workspaces an
d can be overridden at the workspace level. You can edit the maximum backgrou
nd page process jobs attribute under Workspace Isolation. The workspace limit a
cts as a maximum for all applications within that workspace.
You can edit the application definition and edit maximum background pag
e process jobs attribute at the application level. This limit is specific to this applic
ation. Use this setting to distribute the workspace limit across applications in tha
t workspace. If you configure a higher value than the workspace limit at the appli
cation level, this limit will be ignored. And the workspace limit will be used instea
d. Using the Runtime Developer toolbar, you can monitor the currently running b
ackground processes under the Session tab. You can check their statuses and ab
ort a currently running background process by clicking Abort.
To summarize, in this lesson, you have learned about the Invoke API proce
ss type to execute PL/SQL packages, stored procedures, and functions without wr
iting PL/SQL code. You also learned about invoking REST data sources using the I
nvoke API process type. Additionally, you have also learned about background pa
ge processes and how to create and monitor background page processes in Oracl
e APEX. I hope you have learned something new. Thank you for watching.
Demo
Before I start using the invoke API process type, let me show you the pack
age that I'm going to invoke using the invoke API process type. For that, let me g
o to the Object Browser. In the Object Browser, as you can see, I have the depart
ments table.
And to manage the departments table, I have a package called DEPT_PKG.
And this is the package I'm going to use to create new departments in my demo.
And for that, I'll be using the invoke API process type.
So I'll go back to my application. Back in the application, I'm going to the h
ome page. In the home page, I'm going to create a form region called departmen
t. And type will be form. And for source, I'll be selecting the departments table.
Next, I will create a Create button. And I'm going to make it hot and slot wi
ll be under create. Now on the click of this button, the page gets submitted. And
as part of the page process, I would like to create a new department. So for that,
I create a process with the execution point as processing. And for name, I'm goin
g to name it create department.
For type, I'll be using the invoke API process type. As soon as I select the i
nvoke API process type under settings, I get an option to select the type. I have t
hree different options-- PL/SQL package, PL/SQL procedure or function, or REST s
ource.
As I have a PL/SQL package which helps manage departments table, I'm g
oing to go with package option. And for package, I click on list of values. It shows
all the packages that are defined under the selected owner, as well as if I shift to
the public tab, it shows me all the publicly available PL/SQL APIs that come with
Oracle APEX.
For this demo, I'm going to select the department package. And now when
I open the list of values for procedure or function, all the procedures and function
s that are defined under departments package are shown here.
For this demo, I'm going to go with INS_DEPT. As soon as I select the partic
ular procedure and if I expand the process here, under parameters, all the param
eters that are defined for this procedure are shown, and they are automatically
mapped with the corresponding page items in this page.
You can simply define a success message and save and run. Here I can ad
d a new department and click on create. It says department created successfully.
Let us go and verify if the department is actually created. Back in the Object Bro
wser, I can select the departments table. Move to the Data tab. And here, I can s
ee that a new department is indeed created.
This is how you can use the invoke API process type to invoke PL/SQL pack
ages that are defined in your local database. Back to the page, let us also take th
e example of a public API and how you can invoke a public API using the invoke A
PI page process type.
For that, I'm going to create a new region. I'm going to call it public API de
mo. So for this demo, what I want to do is I want to use two page items. This is th
e markdown item. And the other one will be the HTML item.
And I want to create a button. Convert to HTML. I'm going to place this. I cr
eate section. Make it hot. And on the click of this particular button, what I want t
o do is I want to convert whatever markdown that I pasted in the markdown pag
e item into HTML.
I'm going to make the markdown item as text area and the HTML item as
display only. And for format, I'm going to go with HTML. Now on the click convert
to HTML, I need to perform the process to convert markdown to HTML. For that, I
go to processing tab. I'll first make sure this is only executed on the click of Creat
e button.
Next, I create one more process type. And I'm going to call this convert to
HTML. I am going to select the invoke API process type. And the type will be PL/
SQL package because I want to use public PL/SQL API that is available, which is a
package.
And I expand the list of values for package. Shift to public tab. And here, I
search for APEX_MARKDOWN. Select markdown package. And when I expand the
procedures, I shift to the Functions tab because TO_HTML is actually a function.
I can select that function. As soon as I select this particular function, all th
e parameters that are defined for this function are displayed under the paramete
rs dropdown. The function result, I'm going to select an item. So I would like to st
ore the output HTML in P1_HTML page item.
For Markdown, I'm going to pass the P1_MARKDOWN item, which is autom
atically selected. The other parameters are marked to use the API default. Whate
ver default value is defined for these parameters, that default value will be used
for this invocation.
And I'm going to invoke this particular process only when the convert to H
TML button is pressed. With that defined, let us see this in action. So I have the
markdown column. I'm going to define some markdown here.
So in this markdown, what I'm trying to do is I'm trying to print the first lin
e as a heading, which will be bold. And line 1, line 2 are normal paragraphs. And
the last line is actually a link which links to apex.oracle.com. With that defined, w
hen I click on Convert to HTML, it actually executes the APEX_MARKDOWN.2_HTM
L, PL/SQL API.
And the result of that is stored in the HTML page item, which you can see
on the screen. So this is how you can use the invoke API process type to invoke y
our custom PL/SQL packages, as well as publicly available PL/SQL APIs.
Next, let us see how you can use the invoke API process type to invoke a R
EST data source. For that, let me go back to the application home page. Now, if I
go to shared components and I go to REST data sources, I already have a REST d
ata source defined on top of the departments table.
So if I click on this, this REST data source is based on ORDS. And if I scroll
down to post operation, I have defined a request body template. And I'm passing
the DNAME and LOC as operation parameters here. That is what you can see in t
he operation parameters section.
This is the data source definition. Now let us see how you can invoke this
REST data source using the invoke API process type. For that, I'll go back to my p
age. Here, instead of using the PL/SQL package in order to invoke the REST data
source, I'm going to change the type to REST source.
Here from the REST source drop down, I can select the department's REST
data source. And for operation, I'm going to select POST operation. As soon as I s
elect the POST operation, if I expand, all the operation parameters defined for thi
s REST data source are displayed here, and the value for these parameters are di
rectly mapped with the corresponding page items in the page.
With that defined, let us see this in action. If I save and run and if I try to c
reate a new department and click on Create, it says department created successf
ully. Now if I go to Object Browser to verify, here you can see that the departmen
t is indeed created.
And this department is created via REST data source. So I have created a
REST data source, which calls a REST API to insert records into departments tabl
e via POST request. So once the REST data source is defined, I was able to invoke
that REST data source via the invoke API process type.
Now let us see how you can create a background page process in Oracle A
PEX. For this demo, I'm going to execute this create department page process in
the background. So this create department page process is executing a REST dat
a source.
So to push this to the background, I'll create a new page process. I'm goin
g to call it parent process. And for type, I'm going to select execution chain. After
doing that, I can go back, I can go to create department process. And under the
execution chain attribute, I can select parent process.
As soon as I do that, the create department process is now marked as a ch
ild process for the parent process. Now if I go to parent process, which is of type
execution chain, under Settings, I have this option to push this particular process
to the background.
So when I select that, all the child processes defined under this parent pro
cess are run in the background. So let us explore the other attributes available u
nder this option. So the first option is let an ID into item. So I can specify a page i
tem into which this particular process returns an execution ID of the background
execution.
Once you have the execution ID, you can use it to let's say programmatica
lly know the status of the execution or to terminate the background execution if r
equired. And coming to the context value item, you can specify a page item whic
h has the context value.
So context value is used by the background executions to serialize multipl
e executions if you have the serialized attribute set to on. So all the executions w
ith the same context value will be executed one after the other. So they wait for
each other to complete. While executions with different context values can run in
parallel.
Using the serialize option, what you can do is you can avoid concurrent ex
ecutions in the background. You can use this setting when the processes of this c
hain are likely to work on same resources. For example, if this particular executio
n chain is updating a row in a table, multiple executions of this background proce
ss can have the same context value to avoid collisions.
Moving on, the next attribute is temporary file handling. Now to understan
d this properly, a little background about how background processes are run in A
PEX. To execute this chain in the background, Oracle APEX clones the current AP
EX session and all background executions will work with the session clone.
Now if you have any file browse page item in your page and if any of your
background execution chains need to work with these uploaded files, these temp
orary files, you can define how to deal with these temporary files.
For example, if you choose ignore, that means your background processes
will not work with the uploaded files. When you choose move, then APEX will mo
ve all the temporary files from the current session to the working session of the b
ackground execution.
And if you choose copy, you can choose this option if you have multiple ba
ckground execution chains and all of them require access to the temporary files,
then APEX will copy the temporary files to the working session of all the backgro
und executions.
Coming to the next attribute, execution limit, you can define this to limit t
he number of executions that can run for a given background execution in the cu
rrent session. For example, if a value of 4 is specified here and users see an error
when attempting to submit the fifth background execution.
This is useful if you want to prevent the users from submitting large amou
nts of background executions to the server. That is about the execution chain. N
ow let me create one more process to pause the execution chain for a while so th
at we can see this execution chain in the developer toolbar.
I'm going to use the dbms_session.c API to pause the execution for 300 se
conds. And I'm going to call it sleep. With that defined, I can save and run. Now
when I try to create a department and click on Create, now the process is submit
ted for background execution.
I can view and monitor the background executions by clicking on session i
n the Developer toolbar and click on View Session State. This opens the session t
ab. Here under View, I can select background executions and click on Set. This di
splays all the currently running background executions.
If you choose to terminate, you can click on the terminate button here to t
erminate the current execution of this background job. This is how you can use t
he Developer toolbar to monitor the background executions.
Creating and Understanding Validations
Welcome to this module on enhancing your applications using computatio
ns, process, and validations. In this lesson about creating and using validations, y
ou will learn what are validations in Apex. You'll also learn how to create and use
SQL type validations and PL_SQL type validations to validate the data submitted
by the user. Let's get started.
Let us see a small demonstration on how to create a validation. In this exa
mple, I have the employees report. And when I click on the Edit icon, the employ
ee edit form appears. Here, what I'm going to do is I'm going to add a validation t
o ensure that the commission is not greater than 50% of the salary.
Let us go to the Page Designer. And click Edit. And so this is the item that
holds the commission value. Right-click on the commission item and select Creat
e Validation.
On the right-hand side, you get various options to select what type of valid
ation you want to do. For this demo, I'll be using an expression validation. And th
e language, I'm going to use SQL.
And here, the condition is, so I have defined a validation. And I can give an
end to error message like this, and click on Save. Now, this validation is created.
When I go back to the page and try to give a commission which is way more than
50% of salary, and I click on Apply Changes.
And it throws the error in the Page Designer. Under associated item, you s
ee the page item filled. And the display location is in line with field and in notifica
tion. So this is what drives whether or not an in line message should be shown on
the item, as well as the notification. This is how you define a validation.
To summarize, in this lesson, we have learned about validations in Apex, a
nd how you can use SQL type validation and PL_SQL type validations to validate t
he data submitted by the user. Hope you have learned something new. Thank yo
u for watching.
Creating and Understanding Validations and Branches
Welcome to this module on Enhancing Your Applications Using Computatio
ns, Process, and Validations. In the previous lesson, you have learned about SQL
validation and the Peer SQL type validation. In this lesson, you will learn about th
e Regular Expression Type Validation. You will also learn how to perform Row Vali
dations for the data submitted using Interactive Grid.
Furthermore, you'll also learn how to use Branches to navigate from one p
age to another. Let's get started. Apart from the SQL validation type and Peer SQ
L validation type, you can also define a regular expression validation type. As yo
u see on the screen, a validation is created on the phone number. And on the rig
ht hand side, the type is item matches the expression.
So when the value of the phone number page item matches the regular ex
pression that is defined in the regular expression attribute, the validation passes.
And if it does not match, it will throw an error. And the error message is defined i
n the error message attribute. This is how you can define a regular expression va
lidation type.
Once this validation fails, this is how the error message is displayed. So he
re, we have defined a validation on the phone number as well as alternate numb
er. And once the page is submitted, both these values are executed. Because the
regular expression is not matched, it threw an error.
Let us see how to create a validation type of regular expression. In the Cre
ate or Edit Employee form, there is a phone number field. And I'm going to creat
e a validation on this item. We check whether or not the entered value is a valid
phone number. With that, I can go to the respective item in the Page Designer. C
lick on Create Validation. On the right hand side under type, this time I'll be selec
ting the type, Item Matches Regular Expression.
In the item, I can select the phone number and the regular expression. I h
ave it copied in my clipboard and I replaced it. With that, I have defined the valid
ation section and also define another message the says not a
valid number. The error message can be not a valid phone number, something in
tuitive.
With that defined, click
on save. Go back to the page. And I give a long number, which is not a phone nu
mber, obviously. And when I click on save, it throws the validation, which I just cr
eated. This is how you can create a validation of type regular expression and che
ck whether or not the item value matches the regular expression, which you hav
e defined.
Up until now, you have seen how to create validations on form items and f
orm pages. Additionally, you can also create a validation on interactive grid. Usin
g interactive grid, user can add new rows and update existing rows. And on click
of Save, all these new records and the updated records are submitted to the serv
er. On these submitted records, you can create a
row validation to check set in conditions.
For example, in the screenshot, the validation checks for all the records th
at are submitted. The commission column must be less than 1.5 times the cells. I
f the validation condition fails, an error message is shown and the particular reco
rd is highlighted with an error. Let us see a demo on how to create a
row validation on interactive grid.
In this example, I have an interactive grid created on top of EMP table. An
d the screen is editable. User can edit columns in this grid. And user can also add
new rules using Add
Row button. Now, I'm going to create a validation on top of COMMISSION column.
I go to the interactive grid. In the page designer, I can expand columns, and locat
e the COMMISSION column, and create a validation toggle.
On the right hand side, you can change the validation to, let's say, Express
ion and use fields equal to SQL expression. Here, you can define the expression y
ou want to check. So here I'm checking if the COMMISSION column is less than 1.
5 times the SALARY column.
Here, you should also note that the editable region is filled with the interac
tive grid region. And that is how APEX Engine determines that this is an interacti
ve grid-based validation and performs Robledo processing. I can also modify the
error message. In the error message, you can use the substitution string to get t
he column header value of the COMMISSION. And here, it must have a value, I gi
ve an intuitive message.
With that saved, I can go back to my interactive grid. Now I can edit a CO
MMISSION column and give a value of multiple columns. And when I click on Sav
e, both the rows are submitted to the server. And they violated the validation tha
t I have created. And hence, you see two messages, one for each row.
The error cells are highlighted with the red border. On holding on these cel
ls, you get the error message. And you can also easily navigate to the error cells
by clicking on the corresponding message in the notification. This is how you can
create row validations on an interactive grid and validate the interactive grid dat
a that is submitted to the server.
The next topic in this lesson is Branching. What is a branch? A branch is an
instruction to navigate to a specific page or URL when the page is submitted or t
he page is rendered. We can also open modal dialogues and non-modal dialogue
pages using branches. Let us see an example of how to create a branch.
Again, I'm having an interactive report on top of the EMP table. And I have
a Create button, which currently just submits the page. And I click on it, and does
not open the Create or Edit Employees form. So here what I want is when I click o
n the Create button, it should open the Create or Edit Employee form, which is pa
ge number three. This is page number two.
So for that, let me quickly edit that button. And you can see this button is
submitting the page. What I do now is go to Processing. And here I can create, af
ter processing, and create a Branch. And in the target, I can specify type as page
in this application. And target page number will be the Create or Edit form. Additi
onally, I can also set item values in page number three in the target page.
For example, if I want to set the employee number to null, because I'm clic
king on the Create button, the number should be null, initially, right? So for that I
can just create an employee number like this and leave it null. This
will initialize the value to null. Once it is configured, you can click on OK. And you
can also, additionally, provide a server side condition that this gets executed onl
y on the click of a button. With that defined, you can click on Save. And this creat
es a branch.
Now, when I go back to the Employees page and click on Create, the page
gets submitted. And because of the branching that I have created in the after pro
cessing execution point, the branch gets executed. And the Create or Edit Emplo
yees Form dialogue page is open, which is page number three.
So this is how you can create branches in Apex. Branches also have execu
tion points just like processes. You can create a branch before header, after sub
mit, during validation, processing, or after processing. To summarize, in this less
on, you have learned how to create a regular expression validation type.
You have also learned how to validate the data submitted using the intera
ctive grid. Furthermore, you have learned what are branches in Apex and how to
use branches to navigate from one page to another. Hope you have learned som
ething new. Thank you for watching
Understanding Dynamic Actions
Welcome to the module on creating and using Dynamic Actions. We will begin wi
th understanding what are Dynamic Actions. My name is Apoorva. And I'm a seni
or product manager for Oracle APEX. Let's get started.
In this video, you will learn the concepts of how to create, use, and debug Dynam
ic Actions in APEX. What are Dynamic Actions? Dynamic Actions provide a way to
define complex client-side behavior declaratively without the need for JavaScript.
Using the Create Dynamic Action wizard, you specify an action that is performed
when a defined set of conditions occur. You can also specify which elements are
affected by the action and when and how they are affected. When working with d
ynamic actions, you should be mindful of the fact that the more Dynamic Actions
you add to a page, the greater your overall page size. This is because the Dynam
ic Action framework can make additional code to the client for each Dynamic Acti
on defined, which then also must be downloaded and executed by the framework
in the client.
Now, let's look at an example. The form page in the example contains a Dynamic
Action called job equals SALESMAN. This Dynamic Action fires whenever a differe
nt job is selected from the job select list and checks if the value is equal to SALES
MAN. If it is equal to SALESMAN, the Commission and Hire Date page items are e
nabled. Otherwise, they're disabled.
It uses two native actions, enable and disable. Basically, this example demonstra
tes how Dynamic Actions can be used to control multiple items and disabling ite
ms for multiple item types. You need to specify the following while creating a Dy
namic Action. When the action happens, with optional conditions. What action or
actions are performed. What elements are affected by the action.
Let's look at the steps involved in this process. First, you open the page in the Pa
ge Designer and click the Dynamic Actions tab in the left pane. Under Dynamic A
ctions, you right-click on Events and select Create Dynamic Action. In the Propert
y Editor, you edit the following Dynamic Action attributes.
First, you enter a name for the Dynamic Action. And you enter the execution and
the sequence. Under when group, you enter the event details and the selection t
ype. You also must enter the client-side condition.
And, optionally, you can select the type of condition you want to control the true
and false action processing of the Dynamic Action. Next, define the action that is
to be performed if the event evaluates to True or False. Finally, click on Save.
What are Dynamic Action events? When you create a Dynamic Action, you specif
y the event that causes the Dynamic Action to fire. Events are categorized into t
he following types. Browser events. Standard browser events, for example, chan
ge, click, double-click, click OK, and so on.
Framework events. Framework events are triggered from within the APEX frame
work. For example, after refresh, before page submit, and so on. Component eve
nts. This is only available when there is a component, either an item, region, or d
ynamic action available to your application that triggers a custom event.
These events are triggered from either native components or plugin components
that you have installed in your application. Lastly, custom events. This can be an
y custom event triggered from your application.
The process of implementing a Dynamic Action involves the following steps. First
, you create or use an existing page component, such as item, button, or the regi
on. This component is referenced within the Dynamic Action, which you will creat
e in the next step. Next, create a dynamic action from the Application page that i
nvokes the action. Finally, run your application to test the Dynamic Action.
Debugging Dynamic Actions in Oracle APEX is slightly different than other debug
ging because much of the processing done with the Dynamic Action framework is
done on the client, not on the server. To debug Dynamic Actions, Oracle APEX ou
tputs debug information to the browser's JavaScript console if your browser supp
orts it. For example, Firefox with Firebug installed shows the debug information i
n its console pane.
To debug a Dynamic Action, ensure that the application containing the Dynamic
Action has Debugging enabled. You can refer to the Utilizing Debug Mode section
in the Application Builder User's Guide. Run the page containing the Dynamic Act
ion. Open the browser's JavaScript console. From the Developer toolbar, click De
bug.
To summarize, in this lesson, you learned how to create, use, and debug Dynami
c Actions in APEX. I hope you learned something useful. Thank you for watching.
Working Copies
n this lesson, we will understand the concept of working copy and how to use a w
orking copy.
We will also learn how to create a working copy, the various components in a wor
king copy like menus and tasks, how to view and edit a working copy, how to co
mpare the changes of your working copy with other working copies or with the m
ain application, how to merge your working copy changes with the main applicati
on, and we will conclude by understanding how to refresh a working copy and ho
w to delete a working copy.
What is working copy? A working copy enables developers to create special copy
of an application, make changes in the copy, and merge those changes back to t
he main application. Similarly, you can also merge changes from the main applic
ation back to the working copy.
During the export process, you can compare the differences between the main a
pplication and the working copy as a YAML file. Then take a decision as to which
files of working copy you want to merge with the main application. Checksum is
generated to identify the differences between the files.
Before performing the merge from working copy application to the main applicati
on you should always take an update in the working copy from the main copy, el
se, the changes present in the main copy will be overwritten by working copy ap
plication.
Why do you need working copy? Working copy provides the flexibility where mult
iple developers can work on the same workspace, on the same project, on the sa
me page, or in a different page in parallel without hampering the changes of oth
er developers.
When multiple developers must work in parallel on the same project or page and
if we don't have a working copy, then the developer must acquire a lock to make
the changes, preventing others from hampering his changes. And other develope
rs who want to work on the same page need to wait till the lock is released. Deve
lopers or their manager can review the changes done by the developer before m
erging the changes with the main application.
About working copy menus and tasks. When working with
working copies, you need to understand what are the different menu options and
tasks available at your disposal. Let us first start by understanding the options in
working copy menu.
To view the working copy menu, click on the working copy name on the top right
corner. This brings a drop down with a list of menu options. Let us learn what the
se options are. Switch to Main, using this option, you can switch to the main appli
cation from the working copy application.
Make sure to save your changes on the working copy application before clicking t
his. Working Copies, this option will have a further drill down, which shows the lis
t of working copies present. Merge into Main, this option will help you with mergi
ng your changes from the working copy to main application.
Refresh Working Copy, this is very important and essential option as this allows y
ou to update your working copy with changes from main applications so that you
do not overwrite the new changes from main application which are not present in
your working copy.
Compare Working Copy with Main, this option helps the developer or manager to
review the changes done on the working copy by the developer. We will deep div
e into this in the upcoming slides. View Working Copy Details, this option allows
you to view and edit the working copy name and description provided while creat
ing the working copy. Delete Working Copy, once you are done with changes in y
our working copy application and merging them with the main application, you c
an use this option to delete the working copy permanently.
In conclusion, you have acquired knowledge regarding working copies, its use, a
nd the various components in it. You have also learned how to create, view, edit,
delete, and refresh a working copy. Additionally, you have learned how to compa
re the changes in your working copy with other working copies and the main appl
ication. We hope you found the exploration of Oracle APEX working copies and its
components to be enjoyable. Thank you, and we look forward to seeing you in th
e next lesson.
Let us quickly jump into a demo to learn how to create a working copy, how to vi
ew and edit a working copy, how to compare changes across working copies, ho
w to compare changes between a working copy and main application, how to refr
esh working copy from main application, merging changes from working copy to
main application, and how to delete a working copy.
For demonstrating the working copies, we'll use the application, employees with I
D 118. To create a working copy, navigate to your application for which you want
to create a working copy. And on the right side menu bar, under Working Copy T
asks, you can click on Create Working Copy.
Provide a meaningful name to your working copy, and a description to identify th
e reason why you are creating this working copy. And then click on Create Worki
ng Copy. This creates a Working Copy application for you. To navigate back to th
e main application, you can click on Employee Changes, and then click on Switch
to Main. Or on the right side bar, you can click on the main application name to n
avigate back to the main application.
Once a working copy is created, you will see a message on the main application,
saying you are on the main version of this application. Please make changes in w
orking copies to prevent conflicts. Let us create another working copy to demons
trate how to compare changes between working copies.
On the main application, you can see the list of working copies created, on the ri
ght side bar under Working Copies. Or you can click on the Main and Working Co
pies, and then you can see the number of working copies created. To navigate to
the working copies, you can click on the working copy name under Main, under
Working Copies, or on the right side bar under Working Copies.
For demonstration purpose, I will be making change to the working copy 1 to 8,
where I will be changing the item type of department number from text field to P
opup LOV. For this, I'll be using a list of values which I have created and stored in
shared component.
Let us save this. Now, to compare changes between working copies, as I have m
ade change in application 1 to 8, I have to switch to the other application from w
here I can compare the changes. For switching to the second working copy, you c
an click on the Employee Changes, Working Copies, and click on the second work
ing copy.
On the page where changes are made, you can see a warning icon, which says y
ou can view changes in other working copies. You can click on this. This says the
working copy is 128, which is updated by this developer. And this change has be
en done 29 seconds ago. You can click on the difference icon to see the changes
between the current working copy and the other working copy.
The one on the left side is the current working copy, where you are in. And the o
ne on the right side is where the changes are made. Now if you see, we have cha
nged the item type department number from text field to Popup LOV. This is how
you will be comparing changes across working copies.
Now, let us learn how to compare changes between a working copy and a main a
pplication. To do that, navigate back to your working copy where changes were
made. And on the right side bar under Working Copies, there is an option to Com
pare Changes. When you click on this, it will be comparing the changes between
the working copy and the main application.
This says that there is one file, which is changed and the component name is em
ployee, and the change is done on page 3. You can click on the difference icon to
see the changes done between the main application, which is on the left side, an
d your Working Copy application, which is on the right side.
Now, before merging these changes from working copy to main application, it is
advised to take refresh of the working copy from main application so that any ch
anges present in the main application and not present in your working copy will n
ot be overwritten. To take a refresh from the main application, on your working c
opy on the right sidebar, you can navigate to Refresh Working Copy under Worki
ng Copy Task.
Click on Refresh Working Copy. This will fetch any changes present in main appli
cation and not present in your working copy. If you see there is only one page wh
ere changes are there, you can click on the difference icon to see if the changes
are valid. This only says that in main application it is text field, whereas in your w
orking copy it is Popup LOV. And it doesn't show any other changes. And this is t
he change, which we have made in the working copy. So we can ignore this chan
ge. And let us see how to merge these changes.
To merge the change from working copy to the main application. Go to the worki
ng copy, where the changes were done. And on the right side bar under Working
Copy Task, you can click on Merge Into Main.
This will list all the files where changes are done or added, or if there are pages,
which you have deleted so that you can merge them back. You can select or uns
elect the files which you don't want to merge with your main application. Then cli
ck on Next.
Before merging, you will be provided with two options. One is taking backup of th
e target application first. This helps you in rolling back to a previous version of th
e main application in case needed. The second option available is delete working
copy after merge, so that once the changes are merged from the working copy a
pplication to the main application, the working copy application will be deleted.
This is not mandatory to select this, because you can delete the working copy lat
er as well manually. So we will not be selecting Delete Working Copy for now. An
d then click on Confirm Merge to merge the changes from working copy applicati
on to main application. This says that you're on the main application, which is 11
8. Your changes have been merged successfully.
Now, you can click on the page, where we have done changes in the working cop
y to check if the changes are merged. This shows that the working copy changes
are merged successfully into the main application. Now, to delete a working copy
, you can click on Main, Working Copies, and switch to the working copy. Or you c
an click on the working copy name here and switch to the working copy.
To delete a working copy, you have to be on the Working Copy application. And t
hen you have-- when you click on the employee changes here, you have an optio
n called Delete Working Copy. You can click on this to delete a specific working c
opy.
Once a working copy is deleted, you will not be finding that anymore under your
working copies or under your working copy navigation here. Even your main appl
ication count will show the number of copies present as one.
Exporting applications between environments
Hi. Welcome to Oracle APEX Developer professional learning paths lesson, export
ing applications between environments. In this lesson, we will learn how to migra
te applications between environments by creating a custom application, creating
the necessary supporting objects, and then exporting the application.
Migrating application between environments. It is a normal development practice
to move an application from development to test to production. This generally in
volves exporting the applications from development and importing it into the tes
t or production environment. An APEX application can readily be migrated from o
ne environment to another.
If the latest development also requires changes to the database objects, such as
creating a new table or adding a new column, then a separate DDL script should
be written for updating the target environment. Similarly, if data needs to be ma
nipulated in the target environment, such as inserting or updating records, then
a DML script should be written.
Migrating an application, for example, from on-premises to the cloud, is similar to
the steps required for rolling out a new version of your application for test or pro
duction. However, rather than just providing the scripts for the deltas between th
e current production and development environments, you need to create scripts
for all the database objects, and you need to move all the data from developmen
t into the new environment.
This section covers the steps required to move your development environment fr
om one Oracle APEX installation to another. Note, you cannot import an applicati
on into a previous release of APEX. For example, if you are exporting an applicati
on from a cloud instance that has APEX 21.2, you cannot import the application i
nto an on-premises or Cloud APEX instance that is running on APEX 21.1.
You will need to upgrade the target APEX environment version, prior to importing
the application. Check the version of APEX in both your current development env
ironment and the environment you are migrating to. In any release of APEX, chec
k the bottom right corner for the version information.
In conclusion, you have acquired the knowledge on how to migrate your applicati
on between environments, along with installation scripts and data packages. We
hope you found the exploration of Oracle APEX migrating applications between e
nvironments to be enjoyable. Thank you, and we look forward to seeing you in th
e next lesson.

You might also like