Вы находитесь на странице: 1из 338

Oracle iDS Forms:

Build Internet Applications II

Volume 2 • Student Guide

.......................................................................................

nly
e O
Us
AI
& O
al
ern
Int
40034GC11

cle
Production 1.1

ra
June 2001

OD33130
Author Copyright  Oracle Corporation, 2001. All rights reserved.

This documentation contains proprietary information of Oracle Corporation. It is


Ian Purvis
provided under a license agreement containing restrictions on use and disclosure
and is also protected by copyright law. Reverse engineering of the software is
prohibited. If this documentation is delivered to a U.S. Government Agency of the
Department of Defense, then it is delivered with Restricted Rights and the
Technical following legend is applicable:
Contributors and
Reviewers Restricted Rights Legend
Use, duplication or disclosure by the Government is subject to restrictions for
Cem Ayberkin commercial computer software and shall be deemed to be Restricted Rights
software under Federal law, as set forth in subparagraph (c) (1) (ii) of DFARS
Gunnar Bohrs
252.227-7013, Rights in Technical Data and Computer Software (October 1988).
Brian Boxx
This material or any portion of it may not be copied in any form or by any means
Libor Danek without the express prior written permission of the Worldwide Education Services
Laurent Dereac group of Oracle Corporation. Any other copying is a violation of copyright law and
Brain Fry may result in civil and/or criminal penalties.

Pam Gamer If this documentation is delivered to a U.S. Government Agency not within the
Department of Defense, then it is delivered with “Restricted Rights,” as defined in
Pascal Gibert
FAR 52.227-14, Rights in Data-General, including Alternate III (June 1987).
Thierry Guibert
The information in this document is subject to change without notice. If you find
Ellen Gravina any problems in the documentation, please report them in writing to Education
Norris Gray Products, Oracle Corporation, 500 Oracle Parkway, Box 659806, Redwood
Anthony Hargreaves Shores, CA 94065. Oracle Corporation does not warrant that this document is
error-free.
Ali Hiemstra
Oracle Developer, Oracle Server, and PL/SQL are trademarks or registered
Barry Hiern
trademarks of Oracle Corporation.
Ursula Hovy
All other products or company names are used for identification purposes only,
Sarah Jones and may be trademarks of their respective owners.
Jan Keuben
Aija Lehtonen
Regis Louis
Kenji Makita

nly
O
Jayne Marlow

e
Sergei Pechersky
Milos Randak

Us
I
Jonas Reborg
Bryan Roberts
Candace Stover
OA
Hiroyuki Sugiyama

l &
Laura Tejero
Jack Walsh
rna
nte
e I
cl
Publisher

ra
Shane Mattimoe

O
Contents
.....................................................................................................................................................

Contents
Preface
Profile xv
Related Publications xvi
Typographic Conventions xvii

Introduction
Introduction I-2
Course Content I-3

Lesson 1: Creating a Menu Module


Introduction 1-3
Components of the Menu Module 1-5
The Default Menu 1-7
The Menu Editor 1-9
Creating a Menu Module 1-11
Module Properties 1-13
Menu Properties 1-15
Menu Item Properties 1-17
Menu Item Types 1-19
Menu Item Command Types 1-21

ly
Implementing Menu Toolbars 1-23
Storing the Menu Module 1-25
On
Attaching the Menu Module 1-27

se
U
Pop-up Menus 1-29
Summary 1-31
AI
Practice Overview: Lesson 1 1-33

& O
l
Practice 1 1-34

rna
Lesson 2: Managing Menu Modules

te
Introduction 2-3
n
e I
Using PL/SQL in Menu Item Code 2-5

clUseful Built-in Menu Subprograms 2-7

ra
O

.....................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II iii
Contents
.....................................................................................................................................................

Showing and Hiding the Current Menu 2-9


Managing Menu Security 2-11
Defining Security Roles 2-13
Assigning Access to Menu Items 2-15
Summary 2-17
Practice Overview: Lesson 2 2-19
Practice 2 2-20

Lesson 3: Programming Function Keys


Introduction 3-3
Key Triggers 3-5
Defining Key Triggers 3-7
Characteristics of Key Triggers 3-9
Classification of Key Triggers 3-11
Using Key Triggers 3-15
Association with Other Interface Controls 3-17
Summary 3-19
Practice Overview: Lesson 3 3-21
Practice 3 3-22

Lesson 4: Responding to Mouse Events


Introduction 4-3
What Are Mouse Events? 4-5
nly
Responding to Mouse Movement 4-7

e O
s
Responding to Mouse Button Actions 4-11
Summary 4-15
I U
Practice Overview: Lesson 4 4-17
Practice 4 4-18
OA
l &
rna
Lesson 5: Controlling Windows and Canvases Programmatically

e
Introduction 5-3

Int
Using Window-Interaction Triggers 5-5

le
Built-ins for Manipulating Windows 5-7

c
a
Built-ins for Manipulating Canvases 5-9

Or

.....................................................................................................................................................
iv Oracle iDS Forms: Build Internet Applications II
Contents
.....................................................................................................................................................

Working with Tab-Style Canvases 5-11


Windows and Blocks 5-15
Manipulating Window Properties Programmatically 5-17
Closing Windows 5-19
Manipulating Windows in Web-Deployed Forms 5-21
Sizing Windows for Web-Deployed Forms 5-23
Display Large Data Blocks in a Window 5-25
Managing Images for Web-Deployed Forms 5-27
Summary 5-29
Practice Overview: Lesson 5 5-31
Practice 5 5-32

Lesson 6: Defining Data Sources


Introduction 6-3
Data Source Types 6-5
Basing a Data Block on a FROM Clause Query 6-7
Basing a Data Block on a Stored Procedure 6-9
Example of a Query Using a REF Cursor Procedure 6-11
Example of Query Using a Table of Records Procedure 6-13
Example of DML Using a Stored Procedure 6-15
Deciding Whether to Use a REF Cursor or a Table

ly
of Records 6-17
Data Block Wizard 6-19
Data Block Properties 6-21
On
Data Source Guidelines 6-23
se
Summary 6-27
I U
Practice Overview: Lesson 6 6-29
OA
&
Practice 6 6-30

al
ern
Lesson 7: Working with Oracle8i Objects in Form Builder

t
Introduction 7-3

In
What Are Object Types? 7-5

cle
Review of Objects 7-7

ra Object REFs 7-9

.....................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II v
Contents
.....................................................................................................................................................

Supported Oracle8i Features 7-11


How Oracle Forms Developer Treats Objects 7-13
Object Type Displays 7-15
Creating Data Blocks Based on Oracle8i Objects 7-17
Selecting Object Table Columns 7-19
Selecting Object Column Attributes 7-21
Blocks with REF Lookups 7-23
The REF Column Value 7-25
LOVs for REFs 7-27
Summary 7-29
Practice Overview: Lesson 7 7-31
Practice 7 7-32

Lesson 8: Controlling Data Block Relationships


Introduction 8-3
Creating a Relation 8-5
Block Coordination 8-7
Coordinate Blocks Using REFs 8-9
Characteristics of Relation-Handling Triggers 8-11
Principles of Relation-Handling Code 8-13
Obtaining Relation-Handling Information 8-15

ly
Implementing a Coordination-Type Toggle 8-17
Forcing a Commit Per Master 8-19
On
e
Summary 8-21
Practice Overview: Lesson 8 8-23
Us
Practice 8 8-24
AI
Lesson 9: Building Multiple Form Applications
& O
l
Introduction 9-3
a
rn
OPEN_FORM to Invoke Additional Forms 9-5

e
Int
Closing Forms 9-7
Navigating Between Forms 9-9

cle
Transaction Processing for Opened Forms 9-11

ra
CALL_FORM to Invoke Additional Forms 9-13

.....................................................................................................................................................
vi Oracle iDS Forms: Build Internet Applications II
Contents
.....................................................................................................................................................

Transaction Processing for Called Forms 9-15


NEW_FORM to Invoke Additional Forms 9-19
Controlling Open Forms and Called Forms Together 9-21
Different Ways of Invoking Forms 9-23
Using Form Parameters 9-25
Parameter Lists 9-29
Creating and Manipulating Parameter Lists 9-31
Passing Data Between Forms 9-33
Summary 9-35
Practice Overview: Lesson 9 9-37
Practice 9 9-38

Lesson 10: Working with Record Groups


Introduction 10-3
Record Groups 10-5
Using Record Groups 10-7
Defining Record Groups at Design Time 10-9
Built-in Functions for Controlling Record Groups 10-11
Defining Query Record Groups Programmatically 10-17
Defining Nonquery Record Groups Programmatically 10-19
Manipulating Record Group Rows 10-21

ly
Manipulating Selected Record Group Rows 10-23
Defining Global Record Groups 10-25
On
e
Manipulating List Items Programmatically 10-27
Implementing Dynamic List Items 10-29
Us
Adding Values to Combo Boxes 10-31
AI
Summary 10-33
Practice Overview: Lesson 10 10-35
& O
al
Practice 10 10-36

ern
Int
Lesson 11: Using Reusable Components
Introduction 11-3

cle
Reusable Components 11-5

ra Reusable Components List 11-7

.....................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II vii
Contents
.....................................................................................................................................................

The Calendar Class 11-11


Calendar Object Group Content 11-13
Built-in for Manipulating the Calendar 11-15
Summary 11-17
Practice Overview: Lesson 11 11-19
Practice 11 11-20

Lesson 12: Using Java with Web-Deployed Forms


Introduction 12-3
Java and Oracle Forms Developer 12-5
Java in Web-Deployed Forms 12-7
The Forms Applet 12-9
Defining Fonts for Web-Deployed Forms 12-11
Pluggable Java Components 12-13
What Is a Bean Area? 12-17
Hosting a JavaBean 12-19
How a JavaBean Communicates 12-21
Communicating with the JavaBean 12-23
Exploiting Oracle8i Features 12-25
How to Create JavaBeans 12-27
The Java Importer 12-29

ly
The Java Importer Tool 12-31
Summary 12-33
On
e
Practice Overview: Lesson 12 12-35
Practice 12 12-36
Us
Lesson 13: Using Server Features in Form Builder
AI
Introduction 13-3
& O
l
Using Oracle Database Server Functionality in Forms 13-5
a
rn
Dealing with PL/SQL Code 13-7

e
Int
PL/SQL8 Support 13-9
PL/SQL8 Scalar Data Types 13-11

cle
Unsupported Oracle Forms Developer PL/SQL8 Features 13-13

ra
Handling Errors Raised by the Oracle Database Server 13-15

.....................................................................................................................................................
viii Oracle iDS Forms: Build Internet Applications II
Contents
.....................................................................................................................................................

Performing DDL with FORMS_DDL 13-19


Using FORMS_DDL 13-21
Summary 13-23
Practice Overview: Lesson 13 13-25
Practice 13 13-26

Lesson 14: Applying Timers


Introduction 14-3
Timers 14-5
Handling Timer Expiration 14-7
Creating a Timer 14-9
Modifying a Timer 14-11
Deleting a Timer 14-13
Summary 14-15
Practice Overview: Lesson 14 14-17
Practice 14 14-18

Lesson 15: Including Charts and Reports


Introduction 15-3
Including Charts by Using the Chart Wizard 15-5
Chart Item Properties 15-11
Reporting Within Form Builder 15-13
Report Object Properties 15-15
nly
Working with Reports 15-17

e O
s
Summary 15-23
Practice Overview: Lesson 15 15-25
I U
Practice 15 15-26
OA
Appendix A: Practice Solutions
l &
na
Practice 1 Solutions A-2

r
e
Practice 2 Solutions A-6

Int
Practice 3 Solutions A-9

cle
Practice 4 Solutions A-11

a
Practice 5 Solutions A-12

Or

.....................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II ix
Contents
.....................................................................................................................................................

Practice 6 Solutions A-15


Practice 7 Solutions A-16
Practice 8 Solutions A-18
Practice 9 Solutions A-21
Practice 10 Solutions A-24
Practice 11 Solutions A-27
Practice 12 Solutions A-30
Practice 13 Solutions A-33
Practice 14 Solutions A-35
Practice 15 Solutions A-37

Appendix B: Table Descriptions and Data


Summit Sporting Goods Database Diagram B-2
S_CUSTOMER Description B-3
S_CUSTOMER Data B-4
S_DEPT Description and Data B-8
S_EMP Description B-9
S_EMP Data B-10
S_ITEM Description B-13
S_ITEM Data B-14
S_ORD Description and Data B-16

ly
S_PRODUCT Description B-17
S_PRODUCT Data B-18
On
e
S_REGION Description and Data B-22
S_TITLE Description and Data B-23
Us
Oracle8i Objects: Types, Tables B-24
AI
Appendix C: Mouse Movement Events
& O
l
Introduction C-2
a
rn
Drag and Drop C-4

e
Int
Summary C-6

le
Appendix D: Introduction to Oracle8i Object Features

c
a
Introduction D-3

Or

.....................................................................................................................................................
x Oracle iDS Forms: Build Internet Applications II
Contents
.....................................................................................................................................................

New Oracle8i Data Types D-5


Object Types D-7
Creating Oracle8i Objects D-11
Object Columns D-13
Object Views D-15
INSTEAD-OF Triggers D-17
Referencing Objects D-19
Displaying Oracle8i Objects in the Object Navigator D-21
Summary D-29

Appendix E: Menu Run-Time Parameters


Introduction E-3
Substitution Parameters E-5
Defining a User-Named Substitution Parameter E-7
Substitution Parameter Built-ins E-9
Validating a Substitution Parameter Value E-11
Summary E-13

Appendix F: Handling Server-Side Errors


Introduction F-3
Obtaining the Cause of Declarative-Constraint Violations F-5
Customizing Oracle Server Error Messages F-7
Example Procedure for Handling Oracle Server Errors F-9
nly
Summary F-13

e O
Appendix G: EMP_PKG Package
Us
Package Specification G-2
AI
Package Body G-4

& O
al
Appendix H: Working with ActiveX Controls

rn
Introduction H-3

e
Int
What Are VBX, OCX, and ActiveX Controls? H-5
Comparison of VBX, OCX, and ActiveX Controls H-7

cle
ActiveX in Form Builder H-9

ra Implementing an ActiveX Control H-11

.....................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II xi
Contents
.....................................................................................................................................................

Inserting an ActiveX Control in an ActiveX Control Item H-13


Importing ActiveX Control Methods and Events Packages H-15
Setting and Getting ActiveX Control Properties H-17
Invoking ActiveX Control Methods H-21
Responding to ActiveX Control Events H-23
Handling Exceptions H-25
Registering an ActiveX Control H-27
Summary H-29

Appendix I: Using Oracle Server Roles at Run Time


Using Oracle Server Roles at Run Time I-3
Procedures for Managing Roles I-7

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

.....................................................................................................................................................
xii Oracle iDS Forms: Build Internet Applications II
................................

Using Reusable
Components

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Lesson 11: Using Reusable Components
......................................................................................................................................................

Objectives

After completing this lesson, you should


be able to do the following:
• List the reusable components
• Include the calendar object in
an application

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
In this lesson, you will learn about the reusable components that are
available with Oracle Forms Developer. You will learn how these
components can fit into any application.

Objectives
After completing this lesson, you should be able to do the following:
• List the reusable components
• Include the calendar object in an application

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-3
Lesson 11: Using Reusable Components
......................................................................................................................................................

Reusable Components

Picklist

Calendar

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-4 Oracle iDS Forms: Build Internet Applications II
Reusable Components
......................................................................................................................................................

Reusable Components
Oracle Forms Developer contains a complete set of demonstrations that
illustrate the power and productivity of the product. These demonstrations
contain many tips and techniques that you can copy and use in your own
applications.

Reusable Component Definition


A reusable component is a generic object (object group, block, PL/SQL
library, and so on) that you can reuse in all your applications. You can create
your own reusable components (code and object) by using the generic
programming characteristics.
Oracle Forms Developer also includes a number of reusable components
that enable you to easily and rapidly build applications that provide power
and performance while conforming to GUI standards. You can customize
these components.

Web Design Tip


JavaBeans and Enterprise JavaBeans are reusable components that you can
use with Web-deployed Oracle Forms Developer applications. These allow
you to create a customized look and feel for the user interface, and to add
additional functionality. The deployment of JavaBeans is covered in a later
lesson.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-5
Lesson 11: Using Reusable Components
......................................................................................................................................................

Reusable Components List

• ActiveX controls
• Java Beans
• Sample Icons
• Standard Menus
• PL/SQL Drag & Drop Library
• PL/SQL Utilities Library
• PL/SQL Conversion Library
• PL/SQL Window System Interface Library

Copyright  Oracle Corporation, 2000. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-6 Oracle iDS Forms: Build Internet Applications II
Reusable Components List
......................................................................................................................................................

Reusable Components List


The reusable components include:

Reusable Component Description


ActiveX controls An ActiveX control is a stand-alone software component that
you can include in your applications. Five ActiveX controls
are shipped with Oracle Forms Developer: Image, Sound,
Spread Table, Tabsheet, and a Video object.
ActiveX controls cannot be used with Web-deployed forms.
JavaBeans A JavaBean is a stand-alone software component that you
can include in your Web-deployed applications. JavaBeans
allow you to customize the user interface, and to add new
functionality.
Sample icon files Sample icons can be found on the demo CD provided with
Oracle Forms Developer CD pack. ICO and GIF icon files
used in the demonstrations and sample menus are included.
Standard menus These demonstrations include menudef.mmb and a number
of standard menus that you may want to reuse and customize.
PL/SQL Drag and drop This PL/SQL library provides procedures to implement drag
library and drop in client server applications.
PL/SQL Utilities library This PL/SQL library contains a procedure to write out the
contents of a block.

ly
PL/SQL Conversion library This PL/SQL library contains procedures to perform

n
complex conversions.
PL/SQL Window system
O
This PL/SQL library contains many commonly used routines

e
s
interface library specific to the Windows environment. The utility consists of

U
a PL/SQL library and a Windows dynamic-link library

I
A
(DLL) and can be used with either Form Builder or Report

O
Builder.

&
The PL/SQL library uses the ORA_FFI package and can be

al used as a model for creating your own DLL calls. The utility

ern FFI_GEN is also available to help you generate a PL/SQL

t
interface to DLLs.

In
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-7
Lesson 11: Using Reusable Components
......................................................................................................................................................

Reusable Components List

• Standard Object Library


• Calendar class
• Picklist class
• Wizard class
• Navigator class
• Help class
• Oracle Applications Object Library

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-8 Oracle iDS Forms: Build Internet Applications II
Reusable Components List
......................................................................................................................................................

Reusable Component Description


Standard object library The object library, stndrd20.olb, contains standard
classes and visual attribute groups to help you build your
applications to a standard look and feel. Some objects in the
library are set as SmartClasses so that they can be readily
applied to the objects created in your forms.
Calendar class This stndrd20.olb library component enables you
to add a calendar or date list of values to your application
Picklist class This stndrd20.olb library component enables you
to easily add a picklist or chooser-style interface to an appli-
cation, and to provide functionality that mimics the picklists
of wizards and other dialogs.
Wizard class This stndrd20.olb library component enables you
to easily add a wizard-style interface to an application, and to
provide functionality that mimics the wizards of the Oracle
Forms Developer builders and other Windows products.
Help class This stndrd20.olb library component enables you
to build an online Help facility with a Windows look and
feel. Help text is stored on the database.
Oracle applications object The object library, appsstds.olb, contains property
library classes and visual attribute groups that enable you to build
modules that have the same look and feel as Oracle
Applications. They have a Windows look and feel, but they

ly
have also been designed for maximum portability.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-9
Lesson 11: Using Reusable Components
......................................................................................................................................................

The Calendar Class

Copyright  Oracle Corporation, 2001. All rights reserved.

Creating a Calendar

To create a calendar:
1. Copy or make the Calendar Object
Group a subclass.
2. Attach the PL/SQL library
nly
O
CALENDAR.PLL.
3. Create a Key-Listval trigger.

se
U
4. Call Date_LOV.Get_Date.

AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
11-10 Oracle iDS Forms: Build Internet Applications II
The Calendar Class
......................................................................................................................................................

The Calendar Class


This component enables you to easily add a calendar or date list of values to
an application. The Calendar window automatically displays the calendar
according to the NLS settings that are currently in effect, adjusting the start
of the week (for example, Sunday in the United States, Monday in Western
Europe) and the month and day names accordingly.

Creating a Calendar
To create a calendar, follow the steps below:
1 Open the stndrd20.olb object library. From the Components page,
copy or subclass the Calendar object group.
2 Attach the PL/SQL library calendar.pll, which contains the
Date_LOV package, to your module.
3 Create a Key-Listval trigger on the date item for which you would like to
use the Date List of Values window. Add code to display the calendar
using the Date_LOV package.
4 If you want the end user to be able to close the Date List of Values
window by clicking the WindowClose button in the title bar, create a
form-level When-Window-Closed trigger.
The calendar appears whenever the end user invokes a list of values for the
date item. A single calendar can be reused on many different date items.
Simply create a Key-Listval trigger for each item.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-11
Lesson 11: Using Reusable Components
......................................................................................................................................................

Calendar Object Group Content

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-12 Oracle iDS Forms: Build Internet Applications II
Calendar Object Group Content
......................................................................................................................................................

Calendar Object Group Content


The component contains many different Form Builder objects. You can
customize those objects for your specific application.

The Blocks
The calendar object contains two blocks:
• Date_Control_Block: This block contains the buttons that control which
month and year is displayed.
• Date_Button_Block: This block contains the buttons that represent each
day of the month.

The Canvas
The calendar class contains a content canvas named Date_Lov_Canvas. This
canvas contains all the items from both blocks.

The Window
The calendar class contains a window named Date_Lov_Window. This
window is used to display the Date_Lov_Canvas.

The Visual Attributes


The calendar class contains three visual attributes:
• Date_Normal_VA: This visual attribute contains the attributes for a date
button that is displayed normally.
• Date_Selected_VA: This visual attribute contains the attributes for a date
button that is displayed as selected.
nly
• Date_Weekend_VA: This visual attribute contains the attributes for a
date button that is displayed as a weekend day.
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-13
Lesson 11: Using Reusable Components
......................................................................................................................................................

Built-in for Manipulating


the Calendar

Use Date_LOV.Get_Date to display the calendar


• Syntax
date_lov.get_date( display_date,return_item,
window_x_pos,window_y_pos,
window_title,
ok_label,cancel_label,
highlight,
autoconfirm,autoskip );

• Example
date_lov.get_date(sysdate,’s_ord.date_ordered’,240
date_lov.get_date(sysdate,’s_ord.date_ordered’,240
,60,’Order
,60,’Order Date’,’OK’,’Cancel’,TRUE,FALSE,FALSE);
Date’,’OK’,’Cancel’,TRUE,FALSE,FALSE);
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-14 Oracle iDS Forms: Build Internet Applications II
Built-in for Manipulating the Calendar
......................................................................................................................................................

Built-in for Manipulating the Calendar


To use the calendar class, you have to attach a PL/SQL library called
calendar.pll. This library contains a package called DATE_LOV. This
package contains routines that the developer uses to interact with the
component.

Date_LOV.Get_Date Procedure
This procedure displays the calendar with the month and year specified in
the Display_Date argument. The day of the month is displayed with bold
numbers. The date chosen by the end user is returned to the item specified
by the Return_Item argument.
. . .
PROCEDURE Date_LOV.Get_Date(
display_date DATE, return_item VARCHAR2,
v_x_pos NUMBER := 0, v_y_pos NUMBER := 0,
v_title VARCHAR2 := ’Date List of Values’,
v_ok VARCHAR2 := ’OK’,
v_cancel VARCHAR2 := ’Cancel’, v_highlight BOOLEAN := TRUE,
v_autoconfirm BOOLEAN := TRUE, v_autoskip BOOLEAN := FALSE );. . .

Argument Description
display_date The date to display when the Date List of Values window first
appears
return_item The name of the block and item to which to return the chosen date
v_x_pos Specifies the X coordinate of the Date List of Values window
v_y_pos
nly
Specifies the Y coordinate of the Date List of Values window
v_title
e O
Title to display in the Date List of Values window
v_ok Label for the OK button
Us
v_cancel Label for the Cancel button
AI
v_highlight

& O
Specifies that weekend days appear in a different color

al
v_autoconfirm Specifies that the date immediately be returned when the end user

ern clicks a day

t
v_autoskip

In
Specifies that the input focus moves to the next item in sequence

cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-15
Lesson 11: Using Reusable Components
......................................................................................................................................................

Summary

In this lesson, you should have learned to:


• Identify reusable components in Oracle Forms
Developer
• Create a Calendar class:
– Copy forms objects from calendar object
library
– Copy PL/SQL code from calendar PL/SQL
library

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-16 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
Reusable Components
• The purpose of a reusable component
• Reusable components list

The Calendar Class


• Create a calendar
• Calendar Object Group content
• Built-in for manipulating the calendar

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-17
Lesson 11: Using Reusable Components
......................................................................................................................................................

Practice 11 Overview

This practice covers the following topics:


• Creating a picklist class to display and
select the products available
• Attaching a calendar class to ORDERS
date items:
– date_ordered
– date_shipped

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-18 Oracle iDS Forms: Build Internet Applications II
Practice Overview: Lesson 11
......................................................................................................................................................

Practice Overview: Lesson 11


This practice guides you through the development of form functionality
based on reusable components.

Practice Contents
• Create a picklist to display and select the products available.
• Add a calendar on the S_ORD.DATE_ORDERED and
S_ORD.DATE_SHIPPED items.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-19
Lesson 11: Using Reusable Components
......................................................................................................................................................

Practice 11
1 Create a picklist by using the picklist class. This picklist enables the end
user to select order items from a product list, and to place selections in a
second list.
a Create a new form module, called PICKXX where XX is your student
course number. Open the Form_Builder_II.olb object
library. This library contains form objects and code for the picklist.
Copy the PICKLIST_BASIC object group to your form module.
Copy the PICKLIST object group into your new form module.
b Ensure the CONTROL block is the last defined data block in the
Object Navigator.
c Attach the picklist.pll library. This contains the functions
and procedures required for creating the picklist.
d Define a When-New-Form-Instance trigger which will create and
populate the picklist. You can import the code from the
pr11_1.txt file.
Create the picklist with the picklist.Create_Picklist procedure.
Call function pick_list.Populate_Picklist_With_Query to populate
the List_in object. You must define a query that returns the ID, name
and suggested prices from the S_PRODUCT table.
Call pick_list.Set_Picklist_Selection procedure to select the first
element in the list.
Display both lists by using the pick_list.Display_Picklist procedure.
Exclude from the query any products already in the current S_ITEM
block. You should use the global variable :GLOBAL.where_cls.
nly
e Save and compile your form. Deploy your form to the Web.
e O
f In your ORDERS form, modify the When-Button-Pressed trigger for
Us
the CONTROL.PRODUCT_LOV_BUTTON so that it calls your
new form module.
AI
g Save and compile your form. Deploy your form to the Web to test.
& O
al
ern
t
If you have time

In
2 In the ORDERS form, add a calendar on the S_ORD.DATE_ORDERED

le
item and S_ORD.DATE_SHIPPED item.

c
a
a From the calendar page of the Form_Builder_II.olb object
r
O
library, copy the calendar object group.

......................................................................................................................................................
11-20 Oracle iDS Forms: Build Internet Applications II
Practice 11
......................................................................................................................................................

b Attach the PL/SQL library calendar.pll, which contains the


Date_LOV package, to your module.
c Create a Key-Listval trigger on the date ordered item. Add code to
display the calendar using the Date_LOV package. You can import
the code from the pr11_2.txt file.
d Create a Key-Listval trigger on the date shipped item. Add code to
display the calendar using the Date_LOV package.You can import
the code from the pr11_3.txt file.
e Save and compile your form module. Deploy your form to the Web
to test.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 11-21
Lesson 11: Using Reusable Components
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
11-22 Oracle iDS Forms: Build Internet Applications II
................................

Using Java with


Web-Deployed Forms

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Objectives

After completing this lesson, you should


be able to do the following:
• Customize the user interface
• Incorporate JavaBeans in Web-deployed forms
by:
– Inserting Pluggable Java Components
– Creating Bean Areas
• Use Oracle8i Java with Web-deployed forms
• Use the Java Importer Tool

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
In this lesson you will learn how to enhance Web-deployed forms by using
JavaBeans to customize the user interface. You will also learn about
Oracle8i features that may be used within Web-deployed Oracle forms.

Objectives
After completing this lesson, you should be able to do the following:
• Customize the user interface
• Incorporate JavaBeans in Web-deployed forms by
- Inserting Pluggable Java Components
- Creating Bean Areas
• Exploit Oracle8i features with Web-deployed forms
• Invoke the Java Importer Tool

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-3
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Java and Oracle Forms Developer

• Java class files Platform independent


programs

• Java Runtime A Java Virtual Machine


Environment executes class files in Web
browser

• Forms Applet Downloads class files to


create and maintain the
Forms user interface

JavaBeans ³reusable programs for Forms!


®

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-4 Oracle iDS Forms: Build Internet Applications II
Java and Oracle Forms Developer
......................................................................................................................................................

Java and Oracle Forms Developer


Oracle Forms Developer applications are deployed on the Web by
downloading Java class files to the client browser. The class files create the
user interface for the Forms Server application modules and maintain
communications between Server and client browser.

Java Runtime Environment


At run time Java class files are executed by the Java Virtual Machine (JVM).
This is either included with a Web browser or with an AppletViewer. The
Java Runtime Environment (JRE) is the combination of the JVM and
supporting files.
Oracle JInitiator provides an alternative to the standard browser JRE; it
enhances the Web deployment of Oracle Forms Developer applications. It is
supplied as a Netscape plug-in or as an ActiveX component for MicroSoft
Internet Explorer.

Forms Applet
The Forms Applet is a Java code component embedded in the base HTML
file. It is responsible for downloading and executing the Java class files that
create the Oracle Forms Developer user interface.

JavaBeans
JavaBeans are portable, reusable and platform independent Java programs.
You can change the appearance and behavior of the Forms user interface by

ly
including JavaBeans in your Oracle Form Builder applications.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-5
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Java in Web-Deployed Forms

Oracle Look
and Feel

Bean
Areas

Pluggable Java
Components

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-6 Oracle iDS Forms: Build Internet Applications II
Java in Web-Deployed Forms
......................................................................................................................................................

Java in Web-Deployed Forms


You can customize the user interface for your Oracle Forms Developer
applications by using the following Java features.

Oracle Look and Feel


As an alternative interface to the traditional gray Windows look, Oracle
Forms Developer provides a Look and Feel parameter for the Forms Applet.
This allows you to change the appearance and color of the user interface for
an entire application.

JavaBeans
You can add JavaBeans to extend existing Oracle Form Developer
components using Pluggable Java Components. With Bean Areas you can
insert JavaBeans that provide new application functionality, and may also be
used to execute code on the user interface.

Pluggable Java Components


You can replace the original appearance or functionality of existing Form
items with a Pluggable Java Component (PJC). You can introduce variety
with your applications by displaying, for example, rounded buttons, “traffic
light” option buttons, and “smoking” checkbox.

Bean Areas
You can insert new functionality, such as slider controls or progress bars, by

ly
defining a Bean Area Item in your form module. With supplied triggers and

n
PL/SQL built-ins, you can communicate between the Form Server and the

O
client JavaBean.

se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-7
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Oracle Look and Feel

• Oracle Look and Feel


• Pluggable Java Components
• Bean Areas

Copyright  Oracle Corporation, 2001. All rights reserved.

Oracle Look and Feel

Oracle Look and Feel is defined in the Forms Applet


base HTML file
<HTML><BODY>

ly
<EMBED type="application/x-jinit-applet"

n
java_CODE="oracle.forms.engine.Main"
java_CODEBASE="/web_frms/"

O
java_ARCHIVE="f60all.jar"

e
WIDTH=750 HEIGHT=400

s
serverPort="5555"
serverArgs="module=emp userid=scott/tiger@mydatabase"

U
serverApp="/web_html/summit"

I
pluginspage="http://machine/jinit_download.htm"

A
splashScreen="/web_img/summitlo.gif"

O
lookAndfeel="Oracle"
colorScheme="teal">

&
</EMBED>

l
</BODY></HTML>

rna Copyright  Oracle Corporation, 2001. All rights reserved.


®

nte
e I
cl
ra
O

......................................................................................................................................................
12-8 Oracle iDS Forms: Build Internet Applications II
The Forms Applet
......................................................................................................................................................

The Forms Applet


When the base HTML file is downloaded, the embedded Forms Applet is
executed by the Java Virtual Machine (JVM) on the Forms Client. The JVM
may either be in a browser or in an AppletViewer.
You can test your Web forms without deploying them to the middle tier by
using Form Builder’s Web Previewer. This uses the AppletViewer as a JVM.

Oracle Look and Feel


IView is a Java class file which manages the display of Web-deployed
forms. Oracle Look and Feel exploits IView to provide you with an
alternative user interface to the MS Windows look. You can implement your
choice by specifying the Forms Applet lookAndFeel parameter in the base
HTML file:

Parameter Parameter Value


lookAndFeel Determines the application’s look and feel. Values:
Oracle or Generic (Windows 95 look-and-feel).
Default value is Generic.
colorScheme Determines the application’s color scheme. Values:
Teal, Titanium, Red, Khaki, Blue, Olive, or Purple.
Ignored when lookAndFeel is set to Generic.

Technical Note

ly
To enable the Web Previewer, you must have installed the Forms Server
Runtime Engine in your test environment.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-9
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Defining Fonts
for Web-Deployed Forms

Use Java supported fonts:


Java Font Windows Font XWindows Font Mac Font
Monospaced Courier New Adobe-courier Courier
Dialog MS San Serif b&h-lucida Geneva
DialogInput MS San Serif b&h-lucidatypewriter Geneva
Helvetica Arial Adobe-Helvetica Helvetica
Symbol Wingdings itc-zapfdingbats Symbol
Times Roman Times New Roman Adobe-times Times Roman

Define your default Java font in:


Oracle_Home…
/form60/java/oracle/forms/registry/reg
istry.dat ®

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-10 Oracle iDS Forms: Build Internet Applications II
Defining Fonts for Web-Deployed Forms
......................................................................................................................................................

Defining Fonts for Web-Deployed Forms


When you select a font for building your Web-deployed forms applications,
you should ensure that it will map to supported Java fonts. The Java
environment for Oracle Forms Developer supports the following fonts:

Java Font MS Windows Font Windows Font X Macintosh Font


Monospaced Courier New Adobe-courier Courier
Dialog Ms Sans Serif b&h-lucida Geneva
DialogInput Ms Sans Serif b&h-lucidatype- Geneva
writer
Helvetica Arial Adobe-Helvetica Helvetica
Symbol WingDings itc-zapfdingbats Symbol
TimesRoman Times New Roman Adobe-times Times Roman

At run time, Oracle Form Developer fonts are converted to their Java
equivalent using a reference to an alias file, Registry.dat. If your
selected Oracle Form Builder font does not map to a supported Java font, it
will be replaced with the default Java font. You can specify the default Java
font by editing the Java registry file. The Registry.dat file is located
in:
ORACLE_HOME/forms60/java/oracle/forms/registry/

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-11
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Pluggable Java Components

• Oracle Look and Feel


• Pluggable Java Components
• Bean Areas

Copyright  Oracle Corporation, 2001. All rights reserved.

Pluggable Java Components

Pluggable Java Components ( PJCs ) are JavaBeans


that enable you to customize the appearance and
functionality of existing Form Builder control items.

Pluggable Java Components are supported with the


nly
following Form Items:

e O
Check box List Item Push Button

Us
Text Item Radio Button

AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
12-12 Oracle iDS Forms: Build Internet Applications II
Pluggable Java Components
......................................................................................................................................................

Pluggable Java Components


When you deploy Oracle Forms Developer modules on the Web, native user
interface controls, such as push buttons or radio buttons, are replaced by a
Java user interface component. The Java components are defined as defaults
within Form Builder. They are based on Java class files supplied with Oracle
Forms Developer; you do not need to specify them.
As an alternative to the standard Java user interface component, you can
specify a Pluggable Java Component, which will enable you to customize
the appearance and functionality of the original control. The PJC is a
JavaBean that must support the properties and events specific to the type
of user interface component, for which it is being used.

Specifying Use of a PJC in an Oracle Forms Developer Module


You may specify a PJC for any form module user interface control which
has an Implementation Class property. Supported control types are:
• Check Box
• List Item
• Push Button
• Radio Button
• Text item

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-13
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Pluggable Java Components


Examples

Text Items:

Checkboxes:

Y N

Smoking ?

Radio Buttons
Cash
Credit Card
Cheque

Copyright  Oracle Corporation, 2001. All rights reserved.

Using Pluggable Java Components

• Select a valid Form Item

• Specify the name and path of your PJC

ly
in the ‘Implementation Class’ property:

On
se
I U
– Name: PasswordFieldPJC.class
– Path :
OA
l
FORMS60_JAVADIR oracle\forms\demos
&
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
12-14 Oracle iDS Forms: Build Internet Applications II
Pluggable Java Components
......................................................................................................................................................

Pluggable Java Components


Oracle provides Java class files for building components in Web-deployed
forms. The default value is the name of the standard PJC supplied with
Oracle Forms Developer. To use your own PJC, you must supply the fully
qualified name of the PJC Java class file:

Implementation Class property Description


Default value Oracle supplied PJC; value not displayed in
property palette
Fully qualified name of PJC Custom PJC specified by application
developer.
Example oracle.forms.demos.SecureText

Example: Specifying the ‘Securetext’ PJC


This PJC will display salary data as asterisk characters. When the user clicks
on the field, the PJC will reveal the salary values:
• Open the Property Palette for :EMP.SAL and select the Implementation
Class property.
• Specify the full name of the PJC: oracle.forms.pjc.demo.SecureText
Form Builder will search for the file SecureText.class in the
demos directory, in the path FORMS60_JAVADIR/oracle/forms/
• Compile the form module.

ly
Location of PJC Class Files
You should specify the FORMS60_JAVADIR environment variable to
On
e
enable Oracle Forms Developer to locate your JavaBeans. The default path
is: ORACLE_HOME/forms60/java. It is recommended that you place

Us
I
your custom JavaBean class files within a subdirectory in this path.

OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-15
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Bean Areas

• Pluggable Java Components


• Oracle Look and Feel
• Bean Areas

Copyright  Oracle Corporation, 2001. All rights reserved.

What is a Bean Area?

A Bean Area is a Forms item that enables you to


incorporate JavaBeans in your Web-deployed forms.
With Bean Areas you can:

ly
• Add new control

n
items and new Hello Forms!

O
functionality Someone hit the OK

e
button….

s
Execute Client- here’s the

U
side Java code “Date Changed” event
• Communicate
and

AI
a parameter list with

O
between Forms the selected date
Server and Client

l
with PL/SQL
&
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
12-16 Oracle iDS Forms: Build Internet Applications II
What Is a Bean Area?
......................................................................................................................................................

What Is a Bean Area?


Bean Areas are Forms objects that allow you to host JavaBeans in your
Web-deployed forms application. The behavior of these JavaBeans is
determined by you, and you can therefore use Bean Areas to provide new
functionality for your form module. Unlike Pluggable Java Components,
there is no assumed behavior. A PJC, such as a button, knows about being
pressed; the Bean Area functionality is derived totally from within the
JavaBean.

With PL/SQL built-ins and triggers, you can also communicate with the
JavaBean at run time.

Uses and Benefits of Bean Areas


• Add new control items and new functionality
• Execute Client side Java code
• Communicate between the Form Server and Client

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-17
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Hosting a JavaBean

1. Define a Bean Area

2. Specify the JavaBean

3. JavaBean is visible in
Layout Editor

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-18 Oracle iDS Forms: Build Internet Applications II
Hosting a JavaBean
......................................................................................................................................................

Hosting a JavaBean
You can host a JavaBean in your Oracle Forms Developer application by
creating a Bean area control item.

Creating a Bean Area


You can create a Bean Area in three ways:
• Use the Bean Area Item tool in the Layout Editor
• Use the Create icon in the Object Navigator
• Convert an existing item

Associating a JavaBean with Your Bean Area


In order to associate your JavaBean with the Bean Area, you will need to
name the JavaBean class file in the Bean Area Implementation class
property. This property entry is mandatory.
Oracle Forms Developer will locate your JavaBean class files by searching
the Java directory, specified in the FORMS60_JAVADIR environment
variable.
Java is a case sensitive language, and you must ensure that the class file
name is precisely specified. You must also supply a fully qualified name.
For example, the location of MyEg.class file is:
FORMS60_JAVADIR/oracle/forms/demos/MyEg.class
You should therefore specify an entry in the Implementation class property:
oracle.forms.demos.MyEg

ly
After you have specified the Implementation class property, the JavaBean
will be visible in the Bean Area (in the Layout Editor).
On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-19
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

How a JavaBean Communicates

A JavaBean communicates with a Web-deployed


form by issuing an ‘event’.

• When-Custom-Item-Event trigger

• System variables:
– :SYSTEM.CUSTOM_ITEM_EVENT
– :SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-20 Oracle iDS Forms: Build Internet Applications II
How a JavaBean Communicates
......................................................................................................................................................

How a JavaBean Communicates


Communicating with Forms from a JavaBean
A JavaBean will initiate communication with a form by firing a
CustomEvent. The JavaBean CustomEvent sends an event name, and the
name of a parameter list containing associated data, to the form module. You
can obtain this information from the system variables:

System Variable Description


:SYSTEM.CUSTOM_ITEM_EVENT Name of Custom event dispatched by Java
Bean; this is case sensitive.
:SYSTEM. Name of Parameter list containing
CUSTOM_ITEM_EVENT_PARAMETERS associated event data

How Forms Receives JavaBean CustomEvents


Whenever the JavaBean communicates with your form, the
When-Custom-Item-Event trigger will fire. This trigger should be attached
to the Bean Area hosting the JavaBean. By examining the form module
system variables from this trigger, you can identify which JavaBean
CustomEvent has occurred, and take appropriate action.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-21
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Communicating with the JavaBean

SET_CUSTOM_PROPERTY built-in
Example:
Declare
EventName varchar2(20) := :system.custom_item_event;
EventValues ParamList;
EventvalueType number;
TempString varchar2(4000);
Begin
If EventName = ‘ALARMFIRED’ then
EventValues := get_parameter_list(:system.custom_event_parameters);
get_parameter_attr(EventValues, ALARMTIME’, EventvalueType,
TempString);

If Summit_Show_Alert(‘Alarm Call:’||TempString) =
alert_button1 then
set_custom_property(‘jAlarmClock’, 1, ‘wakeuptime’, 1000);
end if;
end if;
End;

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-22 Oracle iDS Forms: Build Internet Applications II
Communicating with the JavaBean
......................................................................................................................................................

Communicating with the JavaBean


The JavaBean will accept parameters from PL/SQL that enable you to
change its run-time behavior. For example, you can alter the speed of a
progress bar or the time for a clock. You can communicate with your
JavaBean by calling the built-in SET_CUSTOM_PROPERTY:
SET_CUSTOM_PROPERTY(’bean_area’, row, ’property’, value);

Example
SET_CUSTOM_PROPERTY(’alarm_clock’,1, ’wakeuptime’, 1000);
In the following example the When-Custom-Item-Event trigger examines
the system variables to identify the contents of a parameter list sent by the
JavaBean. The JavaBean has sent date and time information to the form,
which is then displayed to the user using an alert.
Declare
EventName varchar2(20) := :system.custom_item_event;
EventValues ParamList;
Eventvalue Typenumber;
TempString varchar2(4000);
Begin
If EventName = ‘ALARMFIRED' then
EventValues := get_parameter_list(
:system.custom_event_parameters);
get_parameter_attr(EventValues, 'ALARMTIME',

ly
EventvalueType, TempString);
If Summit_Show_Alert(‘Alarm Call: '||TempString) =

On
e
alert_button1 then
set_custom_property(‘AlarmClock',
Us
1,‘wakeuptime', 1000);

AI
O
end if;

&
end if;
End;
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-23
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Exploiting Oracle 8i Features

Oracle 8i Java features that can be exploited in


Oracle Forms Developer:
• Java stored procedures
• Enterprise JavaBeans
• Business Components for Java

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-24 Oracle iDS Forms: Build Internet Applications II
Exploiting Oracle8i Features
......................................................................................................................................................

Exploiting Oracle8i Features


With Oracle8i you can create Java Stored procedures, develop Enterprise
JavaBeans (EJB), and build Business Components for Java (BC4J). These
features are available to Oracle Forms Developer applications, and they
allow you to develop features such as e-mail, and automated messaging.

Java Stored Procedures


Java stored procedures are Java classes which, like PL/SQL stored
procedures, are held on the Oracle8i database. In Oracle Forms Developer
applications, you are able to call Java stored procedure by writing a PL/SQL
wrapper.

Enterprise JavaBeans
Unlike JavaBeans, Enterprise JavaBeans (EJB) do not perform user
interface functions. EJB encapsulate and distribute Java backend logic
across many servers in order to manage data, transaction security, and
resources.

Business Components for Java


Business Components for Java (BC4J) is an application framework for
generating reusable business logic. You can encapsulate business rules in
Java component libraries, and reuse them by generating SQL-based views.
For example, with Oracle8i object views and XML (Extended Markup
Language), you can build message based e-commerce applications that
implement your business rules.

nly
O
Developing Server Side Java
You can develop Java stored procedures, EJB, and BC4J by using Oracle
se
U
JDeveloper. You will require knowledge in Java programming.

AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-25
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

How to Create JavaBeans

JavaBeans in Oracle Forms Developer are:


• Predefined Java class files

• Reusable Java class files

• Managed with a PL/SQL interface


(triggers and built-ins)

No Java programming is required

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-26 Oracle iDS Forms: Build Internet Applications II
How to Create JavaBeans
......................................................................................................................................................

How to Create JavaBeans


With Web-deployed form applications, you can reuse existing JavaBeans
supplied by Oracle or by a third-party developer. Java programming skills
are not required for implementing JavaBeans. In Oracle Forms Developer,
triggers and built-ins allow you to directly manipulate Java class files with
PL/SQL.

Creating Your Own JavaBeans


In order to create your own JavaBeans, you should use a Java development
tool such as Oracle JDeveloper or the Sun Java Developers Kit (JDK). You
can find examples of writing JavaBeans in Forms online Help and in
JDeveloper online Help. The JDK can be downloaded from
http://www.javasoft.com/.

Implementing a Development Environment for Testing JavaBeans


You should ensure that your JavaBean class files are placed in the
Oracle_Home/forms60/java directory or subdirectory. At run time
certain environment variables are used by Forms Server in order to obtain
Java classes. You should include:
The java ‘bin’ directory within the PATH environment variable setting for
your User:
Oracle_Home/jdk/bin
The ‘java’ directory within the CLASSPATH environment variable setting
for your User:
Oracle_Home/forms60/java

nly
Technical Note
e O
You should only deploy light-weight JavaBeans with your Web-deployed
Us
I
forms applications; the light-weight JavaBean user interface (UI)
components are rendered completely and can be used independently of any
operating system. In contrast, heavy-weight JavaBeans rely on UI objects
OA
&
provided by the client operating system. Oracle Forms Developer uses light-
l
rna
weight JavaBeans to provide a common look and feel across different
operating systems.

nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-27
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

The Java Importer

The Java Importer enables you to:


• Access components written in Java and
invoke them from Forms applications
• Build middle-tier integration layers between
applications and technologies
– XML, EJB, BC4J
– Data sources other than Oracle
– Nonstandard devices

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-28 Oracle iDS Forms: Build Internet Applications II
The Java Importer
......................................................................................................................................................

The Java Importer


While PL/SQL provides a powerful and productive development
environment, it is sometimes necessary to integrate Forms applications with
other external application services and providers. Usually, these external
applications are not written in PL/SQL so some form of integration
capability is required. Traditionally, the interfaces and libraries exposed by
external applications have been based on the C programming language, and
the ORA_FFI built-in package has proved more than sufficient.
With the increasing momentum of the Java movement within the
Information Technology industry, many applications are now providing
integration points in Java. Similarly, the number of standard Java libraries
for enterprise applications is continually growing.
Oracle Forms 6i Release 2 introduced a new feature, the Java Importer, to
facilitate the invocation of business logic written in Java from a Forms
application. With the Java Importer, you can automatically generate PL/SQL
packages and procedures that allow you to create and use Java objects
directly in your Forms applications.

Components of the Java Importer


The Java Importer enables a Forms application to call out to Java to make
use of code contained within compiled Java classes. The components of the
Java Importer make it possible to create PL/SQL packages for specified Java
classes within a Forms application, and to instantiate, use, and destroy the
Java object instances when the Forms application is run. These components

ly
are:
• Java Importer Tool, which allows you to select and specify which Java
classes you want to access in your application.
On
• Java Importer Generator, which creates PL/SQL packages that provide
se
access to the specified Java class.
I U
• ORA_JAVA package, which provides a set of functions to assist you in
working with the selected Java packages.
OA
l
• Oracle Forms Services Java Native Interface (JNI) Bridge, which
&
na
handles low level interaction with the Java classes at runtime.

r
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-29
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Invoking the Java Importer

Copyright  Oracle Corporation, 2001. All rights reserved.

Using the Java Importer

nly
2
e O
Us
3
AI
4 5
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
12-30 Oracle iDS Forms: Build Internet Applications II
The Java Importer Tool
......................................................................................................................................................

The Java Importer Tool


You can invoke the Java Importer Tool from the Program Menu in Form
Builder. The dialog box that displays enables you to select or specify the
Java classes you wish to make use of in your Forms application. Once you
select the required Java classes, the Java Importer Tool calls the PL/SQL
Generator to create a PL/SQL package for each class selected. You can
invoke the tool multiple times during a development session as new Java
class access requirements are discovered; it is not necessary to identify all
the classes needed at one time.
The Java Importer Tools consists of the following sections:
1 Class Browser: The class browser lists all of the Java classes found on
the CLASSPATH, displaying the classes in a hierarchical tree format.
When a class is selected, the fully qualified name of the class is added to
the Import Classes List field.
2 Import Classes List: This field displays a list of fully qualified classes
that will be made accessible to the Forms application when you press the
Import button. In addition to populating this list by selecting the class in
the Class Browser, you can directly enter the fully qualified class names
of the Java classes you wish to access.
3 Message Display: Output from the PL/SQL Generator is directed to the
Message display. Progress of the PL/SQL generation phase is displayed
and upon completion, so are the names of the packages generated for
each Java class selected.
4 Import Button: The Import button starts the PL/SQL generation process
for each Java class specified in the Import Classes list.
nly
O
5 Options Button: The Options button displays a dialog box that you use to
set the PL/SQL generation options. These options are described in the
se
U
documentation that accompanies the Java Importer.

AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-31
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Summary

In this lesson, you should have learned how to:


• Define Oracle ‘LookandFeel’ and Java fonts
• Incorporate Java in Web-deployed forms by:
– Inserting Pluggable Java Components
– Creating Bean Areas
• Use Oracle 8i features by exploiting Java
stored procedures, EJB and BC4J
• Use the Java Importer to build PL/SQL interfaces
to Java classes

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-32 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
Customize the User Interface
• Specifying Oracle look and feel
• Specifying default Java fonts

Create JavaBean Areas


• Inserting Pluggable Java Components
• Creating Bean Areas
• Communicating with JavaBeans

Exploit Oracle8i Features with Web-Deployed Forms


• Java stored procedures
• Enterprise JavaBeans
• Business Components for Java

Use the Java Importer Tool


• Utilize Java code contained in standard, compiled Java class libraries
from your Forms applications
• Automate the generation of PL/SQL procedures and functions to
interface with a specified Java class

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-33
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Practice 12 Overview

This practice covers the following topics:


• Providing an alternative UI for text items by
including PJC for
– Changing the mouse cursor style
– Displaying secure data as asterisks
• Add a Bean Area to allow users to specify
hyperlinks of their choice

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
12-34 Oracle iDS Forms: Build Internet Applications II
Practice Overview: Lesson 12
......................................................................................................................................................

Practice Overview: Lesson 12


This practice guides you through defining Pluggable Java Components, and
hosting Java Beans with a Bean Area.

Practice Contents
• Provide an alternative UI for text items by including PJC
- Change the mouse cursor style
- Display secure data as ‘asterisks’.
• Add a Java Bean to allow users to specify hyperlinks of their choice.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 12-35
Lesson 12: Using Java with Web-Deployed Forms
......................................................................................................................................................

Practice 12
1 Provide an alternative user interface for your Web-deployed forms by
including Pluggable Java Components (PJCs).
a Open the JAVAEMP.fmb form module. Save as JAVAXX.fmb,
where XX is your student course code.
b Change the :EMP.SAL item so that values are displayed as asterisks
at run time. Use the PJC ‘PasswordFieldPJC.class’.
This class file is held in the folder:
FORMS60_JAVADIR /oracle/forms/demos
c Change the :EMP.ENAME item so that the mouse cursor changes to
‘hand’ style whenever the cursor is moved over the item. Use the
PJC ‘ModCursor.class’.
This class file is held in the folder:
FORMS60_JAVADIR /oracle/forms/demos
d Use the built-in SET_CUSTOM_PROPERTY in an appropriate
trigger, to specify the cursor style:
SET_CUSTOM_PROPERTY(’Emp.Ename’,1,
’DOCURSOR’,’HAND’);
e Save and compile your form. Deploy your form to the Web to test.

2 Create a JavaBean area in the Layout Editor to enable users to specify


hyperlinks of their choice.
a Create a new data block called ‘LINK’ in your JAVAEMP form.

ly
b Create a Bean Area called ‘HYPERLINK1’ in the new data block
and specify the class file ‘HyperLinkWrapper.class’.

On
e
c Create an appropriate trigger to identify the user-supplied URL from
the JavaBean, and to download his or her Web page. You can import

Us
I
the code from the pr12_1.txt file.
d Create two text items, one called ‘URL’ to accept a URL and one
called ‘LABEL’ to accept a URL label. These will enable the user to
OA
l
select a different URL. Set the maximum length for the URL text
&
rna
item to 255.

e
e Create a push button with an appropriate trigger that will accept

nt
values from the URL and LABEL text items, and pass them to the
I
JavaBean. You can import the code from the pr12_2.txt file.

cle
f Save and compile your form. Deploy your form to the Web to test.

ra
O

......................................................................................................................................................
12-36 Oracle iDS Forms: Build Internet Applications II
................................

Using Server Features


in Form Builder

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Objectives

After completing this lesson, you should


be able to do the following:
• Use Oracle server functionalities in forms
• Deal with server-side PL/SQL
• Recognize which PL/SQL8 features are supported
in forms
• Handle Oracle server errors
• Perform DDL commands by using the
FORMS_DDL built in subprograms

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
This lesson covers the use of Oracle database server features in Form
Builder applications. You will learn about storing and calling PL/SQL code,
handling Oracle database server errors, and issuing DDL commands from
within forms.

Objectives
After completing this lesson, you should be able to do the following:
• Use Oracle database server functionalities in forms
• Deal with server-side PL/SQL
• Recognize which PL/SQL8 features are supported in forms
• Handle Oracle database server errors
• Perform DDL commands by using the FORMS _DDL built-in
subprograms

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-3
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Using Oracle Database Server


Functionality in Forms

Useful Oracle server features:


• Declarative constraints
• Stored program units
• Database triggers
• DDL

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-4 Oracle iDS Forms: Build Internet Applications II
Using Oracle Database Server Functionality in Forms
......................................................................................................................................................

Using Oracle Database Server Functionality in Forms


The Oracle8i database offers several powerful features to implement
functionality in the Oracle database server. You can call that functionality in
your forms to handle possible errors.

Oracle Database Server Features Useful for Forms


The following useful features are available to application developers:
• Declarative integrity constraints
• Stored program units: procedures, functions, and packages
• Built-in database packages
• Database triggers
• Database roles
• DDL
• SQL Optimizer; shared SQL
• Locking
• Sequences
Some of these features are discussed in more depth later in this lesson.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-5
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Dealing with PL/SQL Code

• Where to store PL/SQL code:


– On the Oracle server
– In the attached PL/SQL libraries
– In the form itself
• Where to call PL/SQL code:
– From database triggers
– From forms triggers
• Application partitioning

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-6 Oracle iDS Forms: Build Internet Applications II
Dealing with PL/SQL Code
......................................................................................................................................................

Dealing with PL/SQL Code


You can store and call your code in two places: the Oracle database server
and the Oracle Form Builder application.

Where to Store PL/SQL Code


To maintain your code, you should not store the code in more locations than
necessary. The places to store PL/SQL code, in order of preference, are as
follows:
1 The Oracle Database Server
2 Attached PL/SQL libraries
3 The form itself
Note: PL/SQL code cannot be stored in the Oracle database server if it
contains bind variables or calls to Forms built-ins.

Where to Call PL/SQL Code


PL/SQL code is eventually called from triggers. Also, for easier
maintenance, the places to call PL/SQL code, in order of preference, are as
follows:
1 Database triggers
2 Forms triggers
Note: Database triggers fire only at commit time. If you want to give
immediate feedback to the user, you must use forms triggers.

ly
Application Partitioning
For enhanced performance, you may want to call or store PL/SQL code on
either the Oracle database server or the Oracle Form Builder application.
On
In Form Builder you can drag and drop PL/SQL program units between the
se
Oracle database server and the application. This is called application
I U
A
partitioning. With Web-deployed forms it is also possible to place code on
the client by using JavaBeans. In this way, you can optimally divide
application code over the available resources.
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-7
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

PL/SQL8 Support in Oracle Forms

• Client-side program units cannot support


Oracle8i object-related functionality.
• Stored program units can use PL/SQL8
features.

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-8 Oracle iDS Forms: Build Internet Applications II
PL/SQL8 Support
......................................................................................................................................................

PL/SQL8 Support
Oracle Forms Developer uses PL/SQL8 in the Oracle database server and
the Oracle Form Builder application. However, Form Builder module
program units currently cannot support Oracle8i object-related functionality.
The Stored Program Unit editor has been extended in Oracle Forms
Developer to allow editing of the type body (methods) and type
specification (attributes) of Oracle8i user-defined data types.

Object Iron Packages


Object Iron is a set of database packages that helps you to access tables
containing instances of Oracle8i object types. The packages generate a
table-specific package, which you use to access data from the specified
table. After generation, the table-specific package appears under the Stored
Program Units node. It contains code that allows you to select, insert,
update, delete, and lock records in the specified table.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-9
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

PL/SQL8 Scalar Types

• NCHAR and NVARCHAR2


• SIGNTYPE
• FLOAT
• NATURALN
• POSITIVEN
• PLS_INTEGER

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-10 Oracle iDS Forms: Build Internet Applications II
PL/SQL8 Scalar Data Types
......................................................................................................................................................

PL/SQL8 Scalar Data Types


• NCHAR stores fixed-length (blank-padded if necessary) NLS character
data. How the data is represented internally depends on the national
character set, which might use a fixed-width encoding such as
US7ASCII or a variable-width encoding such as JA16SJIS.
• NVARCHAR2 stores variable-length NLS character data. How the data
is represented internally depends on the national character set, which
might use a fixed-width encoding such as WE8EBCDIC37C or a
variable-width encoding such as JA16DBCS.
• SIGNTYPE lets you restrict an integer variable to the values -1, 0, and 1,
which is useful in programming tri-state logic.
• FLOAT is a subtype of NUMBER. However, you cannot specify a scale
for FLOAT variables. You can specify only a binary precision.
• NATURALN is like subtype NATURAL but prevents the assignment of
NULL.
• POSITIVEN is like subtype POSITIVE but prevents the assignment of
NULL.
• PLS_INTEGER stores signed integers. Its magnitude range is
-2147483647 ... 2147483647. PLS_INTEGER values require less
storage than NUMBER values. Also, PLS_INTEGER operations use
machine arithmetic, so they are faster than NUMBER and
BINARY_INTEGER operations, which use library arithmetic.
Besides the database character set, which is used for identifiers and source

ly
code, PL/SQL8 now supports a second character set called the national

n
character set, which is used for NLS data. The PL/SQL data types NCHAR
and NVARCHAR2 allow you to store character strings formed from the

e O
s
national character set.

I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-11
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Unsupported Client-Side
PL/SQL8 Features

• Untrusted external procedures


• Object types
• Collection types
• LOB types
• Methods
• Objects as stored procedure parameters

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-12 Oracle iDS Forms: Build Internet Applications II
Unsupported Oracle Forms Developer PL/SQL8 Features
......................................................................................................................................................

Unsupported Oracle Forms Developer PL/SQL8 Features


The following features are supported in database server PL/SQL8 but are
not currently supported in Form Builder module PL/SQL8:
• Object types
• Collection types
• LOB types
• Methods
• Objects as stored procedure parameters
Because these features are supported in database server PL/SQL8, you can
use them by writing stored (server-side) subprograms, and calling the
subprograms from Oracle Forms Developer. However, the last restriction
requires that you decompose any object data types before returning them to
the client side.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-13
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Causes of Oracle Server Errors

Form Oracle Server

Base table block Declarative


constraint
Implicit DML

Database
Trigger/PU
trigger
Explicit DML
Stored
Stored PU call program unit

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-14 Oracle iDS Forms: Build Internet Applications II
Handling Errors Raised by the Oracle Database Server
......................................................................................................................................................

Handling Errors Raised by the Oracle Database Server


Oracle server errors can have different causes; for example, a declarative
constraint or a stored program unit. You should know how to handle errors
that may occur in different situations.

Causes of Oracle Server Errors


Cause Error Message
Declarative constraint Causes predefined error message
Database trigger Error message specified in RAISE_APPLICATION_ERROR
Stored program unit Error message specified in RAISE_APPLICATION_ERROR

Types of DML Statements


Declarative-constraint violations and firing of database triggers are in turn
caused by DML statements. For error-handling purposes, you must
distinguish between the following two types of DML statements:
Type Description
Implicit DML DML statements that are associated with base table blocks.
Implicit DML is also called base table DML. By default,
Forms constructs and issues these DML statements.
Explicit DML DML statements that a developer explicitly codes in triggers
or program units.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-15
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Trapping Server Errors

Form Oracle Server


Constraint
Base table block
Predefined
On-Error: message
DBMS_ERROR_CODE
DBMS_ERROR_TEXT
DB trigger
RAISE_
APPLICATION_
Explicit DML/PU call
ERROR
When Others: Stored PU
RAISE_
SQLCODE
APPLICATION_
SQLERRM ERROR

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-16 Oracle iDS Forms: Build Internet Applications II
Handling Errors Raised by the Oracle Database Server
......................................................................................................................................................

How to Trap Different Types of Oracle Database Server Errors


Type Error Handling
Implicit DML Use the Forms built-ins DBMS_ERROR_CODE and
DBMS_ERROR_TEXT in an On-Error trigger.
Explicit DML Use the PL/SQL functions SQLCODE and SQLERRM in a
WHEN OTHERS exception handler of the trigger or program
unit that issued the DML statements.
Stored program unit Use the PL/SQL functions SQLCODE and SQLERRM in a
WHEN OTHERS exception handler of the trigger or program
unit that called the stored program unit.

Note: Declarative-constraint violations and database triggers may be caused


by both implicit DML and explicit DML. Stored program units are always
called explicitly from a trigger or program unit.

Technical Note
The values of DBMS_ERROR_CODE and DBMS_ERROR_TEXT are the
same as what a user would see after selecting [Display Error]; the values are
not automatically reset following successful execution.
Appendix F “Handling Server-Side Errors” covers server-side error
handling in more detail.

FRM-Error Messages Caused by Implicit DML Errors


If an implicit DML statement causes an Oracle server error, Forms displays
one of these FRM-error messages:
• FRM-40508: ORACLE error: unable to INSERT record.
nly
O
• FRM-40509: ORACLE error: unable to UPDATE record.
• FRM-40510: ORACLE error: unable to DELETE record.
se
You can use ERROR_CODE to trap these errors in an On-Error trigger and
I U
A
then use DBMS_ERROR_CODE and DBMS_ERROR_TEXT to determine
the ORA-error code and message.

& O
al
FRM-Error Messages with Web-Deployed Forms

rn
A generic FRM-999999 is the most common error displayed with Web

e
t
forms. You can obtain meaningful information from the JInitiator Control

In
Panel, or from the DOS window if you run the form from a Java

le
Appletviewer. For further information see Oracle 9iAS Forms Services:

c
a
Deploy Internet Applications.

Or

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-17
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Performing DDL with FORMS_DDL

• Syntax: FORMS_DDL (statement);


• Parameter (<=32K):PL/SQL block, DML
or DDL statement
• Characteristics:
– Unrestricted; valid in Enter Query mode
– Statement must not contain bind-
variable references

Copyright  Oracle Corporation, 2001. All rights reserved.

Performing DDL with FORMS_DDL

• Characteristics:
– Statement cannot return results directly
– Use FORM_SUCCESS to check


success of statement

nly
O
Hints:
– Create SQL Query record group
instead of FORMS_DDL
se
– Call stored program unit instead of
I U
FORMS_DDL

OA
l &
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
13-18 Oracle iDS Forms: Build Internet Applications II
Performing DDL with FORMS_DDL
......................................................................................................................................................

Performing DDL with FORMS_DDL


Forms is intended primarily to perform DML operations. However, in some
cases you may find it useful to issue DDL statements from a form. You can
do this using the FORMS_DDL built-in function.

Syntax
FORMS_DDL(statement);

Description
FORMS_DDL issues dynamic SQL statements at run time, including
server-side PL/SQL and DDL.

Parameter
The specified statement can be any string expression up to 32K
representing a:
• PL/SQL block
• DML statement
• DDL statement
Do not end the PL/SQL block with a slash or the DML or DDL statement
with a semicolon.

Characteristics
FORMS_DDL is an unrestricted procedure that is also valid in Enter Query
mode.
• The specified statement must not contain bind-variable references.
nly
O
However, you can concatenate the values of bind variables into the

e
specified string.
• The statement executed using FORMS_DDL cannot return results to
Us
Forms directly.
AI
O
• Use the FORM_SUCCESS built-in to check whether the statement

&
issued using FORMS_DDL executed correctly.

al
Note: Consider using a query record group with a SELECT statement or

rn
calling a stored program unit, instead of executing FORMS_DDL.

e
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-19
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Performing DDL with FORMS_DDL

• Example: Create temporary table


FORMS_DDL (‘CREATE table temp (n_col number)‘);
IF not FORM_SUCCESS THEN
MESSAGE (‘Table creation failed.‘);
RAISE form_trigger_failure;
END IF;

• Example: Execute procedure with given name


FORMS_DDL
FORMS_DDL (‘BEGIN
(‘BEGIN ‘‘ ||
|| p_proc_name
p_proc_name ||‘;
||‘; END;
END; ‘);
‘);
IF
IF not
not FORM_SUCCESS
FORM_SUCCESS THEN
THEN
handle_server_error(DBMS_ERROR_CODE,
handle_server_error(DBMS_ERROR_CODE,
DBMS_ERROR_TEXT);
DBMS_ERROR_TEXT);
END
END IF;
IF;

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-20 Oracle iDS Forms: Build Internet Applications II
Using FORMS_DDL
......................................................................................................................................................

Using FORMS_DDL
The following examples show how you can use the FORMS_DDL built-in
function.

Example
Create a temporary table at the start of a post.
Pre-commit trigger at form level:
BEGIN
FORMS_DDL(’CREATE table temp(n_col number)’);
IF not FORM_SUCCESS THEN
MESSAGE (’Table creation failed.’);
RAISE form_trigger_failure;
END IF;
END;

Example
Execute a procedure with a given name. This is useful if you want to determine
dynamically which procedure should be executed in a certain situation.
PROCEDURE exec_proc (p_proc_name IN VARCHAR2)
IS
BEGIN
FORMS_DDL(’BEGIN ’|| p_proc_name ||’; END;’);
IF not FORMS_SUCCESS THEN
handle_server_error(DBMS_ERROR_CODE,DBMS_ERROR_TEXT);
END IF;
END;
Note: If the FORMS_DDL built-in fails, Forms sets the DBMS_ERROR_CODE
nly
O
and DBMS_ERROR_TEXT built-ins. Therefore, you can handle Oracle server

e
errors using the HANDLE_SERVER_ERROR procedure discussed earlier.
Always test the SYSTEM.FORM_STATUS before calling the FORMS_DDL
Us
built-in.
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-21
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Summary

In this lesson, you should have learned how to:


• Identify Oracle server features useful
for Form Builder
• Identify PL/SQL8 supported features
• Write PL/SQL code to trap errors raised
by the Oracle server
– Implicit DML
– Explicit DML or stored program units
• Perform DDL with FORMS_DDL

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-22 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
Oracle Database Server Features Useful for Form Builder
• Declarative integrity constraints
• Stored program units
• Database triggers
• DDL

Dealing with PL/SQL Code


• Store PL/SQL code in
- Oracle server
- Library
- Form
• Call PL/SQL code from
- Database trigger
- Form trigger
• Application partitioning

Handling Errors Raised by the Oracle Database Server


• Causes: Declarative constraints, database triggers, stored program units
• Trap implicit-DML errors by using DBMS_ERROR_CODE and
DBMS_ERROR_TEXT in an On-Error trigger

ly
• Trap explicit DML errors and stored program unit errors by using

n
SQLCODE and SQLERRM in a WHEN OTHERS exception handler

Performing DDL with FORMS_DDL


e O
Parameter is a string (less than or equal to 32 K) representing a PL/SQL
Us
block or DML or DDL statement.
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-23
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Practice 13 Overview

This practice covers the following topics:


• Handling errors caused by stored program units
• Handling errors caused by declarative
constraint violation

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
13-24 Oracle iDS Forms: Build Internet Applications II
Practice Overview: Lesson 13
......................................................................................................................................................

Practice Overview: Lesson 13


This practice guides you through handling Oracle server errors.

Practice Contents
• Handle errors caused by stored program units.
• Handle errors caused by declarative-constraint violations.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 13-25
Lesson 13: Using Server Features in Form Builder
......................................................................................................................................................

Practice 13
1 Create a stored procedure, and process error messages that it may
generate in the CUSTSERVER form.
a Open the CUSTSERVER form and save as CUSTSERVXX where
XX is your student course number. Copy the code in the
SELECT_CODE program unit and create a stored procedure called
SELECT_CUSTOMER. This procedure takes a user supplied value
from :CONTROL.NAME to check whether a customer name already
exists. Existing names will generate an error.
b Modify the When-Button-Pressed trigger for the CONTROL block
CHECK_CUSTOMER button, to trap any errors generated from the
stored procedure SELECT_CUSTOMER. If a customer already
exists, display a warning message to the user.
c Save and compile your form module; test.

2 Whenever the user attempts to save a new customer record with an


existing primary key, display an appropriate warning message.
a Run your CUSTSERVER form. Attempt to insert a record with an
existing primary key. Note the generated error message.
b Define an appropriate trigger to trap the generated error message,
and display the database constraint violation message and error code.
Ensure that any other generated messages will continue to be
displayed.

ly
c Display all messages in an ALERT called ‘errors’.
d Save and compile your form module; test your form.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
13-26 Oracle iDS Forms: Build Internet Applications II
................................

Applying Timers

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Lesson 14: Applying Timers
......................................................................................................................................................

Objectives

After completing this lesson, you should


be able to do the following:
• Describe timers
• Create a timer
• Modify a timer
• Delete a timer
• Handle timer expiration

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
This lesson covers time-initiated processing; that is, processing that occurs
after a certain amount of time has elapsed. The mechanism you use to do this
is called a timer and it is created, modified, and deleted at run time.

Objectives
After completing this lesson, you should be able to do the following:
• Describe timers
• Create a timer
• Modify a timer
• Delete a timer
• Handle timer expiration

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-3
Lesson 14: Applying Timers
......................................................................................................................................................

Timers

• What is a timer?
• Built-ins for timers:
– FIND_TIMER
– CREATE_TIMER
– SET_TIMER
– DELETE_TIMER
– GET_APPLICATION_PROPERTY
(TIMER_NAME)

Copyright  Oracle Corporation, 2001. All rights reserved.

Timers

• When-Timer-Expired trigger
• Using timers:
– Poll database
– Periodically query, commit, or rollback
nly
– Show “About…” information at startup

e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

Technical Note
nte
e I
l
Timers are not suitable means of shutting down an application. It is the job

rac
of the operating system to recognize idle processes and shut them down.

......................................................................................................................................................
14-4 Oracle iDS Forms: Build Internet Applications II
Timers
......................................................................................................................................................

Timers
Forms typically processes events that are user initiated. You can use timers
when you want Forms to initiate actions after a specific time period time.

What Is a Timer?
A timer is a programmatic construct similar to an “internal alarm clock.”
You can create, modify, or delete timers with built-ins. When you create or
modify a timer, you can specify the time period for the timer. Using a
trigger, you can specify actions to be performed at the end of that period.

Built-in Functions for Timers


Built-in Description
FIND_TIMER Returns the internal timer ID (of data type
TIMER) of a timer with the given name
CREATE_TIMER Creates a timer with a given name, a defined time
interval, and whether the timer should repeat on
expiration.
SET_TIMER Changes the settings for the given timer (You can
modify the time interval and the repeat behavior.)
DELETE_TIMER Deletes the given timer
GET_APPLICATION_PROPERTY The TIMER_NAME property returns the name of
the most recently expired timer.

When-Timer-Expired Trigger

ly
This trigger fires when the specified time interval of the timer has elapsed.

Uses of Timers
On
• Polling the database to check if a certain event has occurred
se
• Performing an automatic query at regular intervals
I U
• Showing “About this...” information at form startup
• Performing automatic commits or rollbacks after a specified idle time
OA
l &
rna
Web Design Tip

e
You should restrict the frequency of timers in Web-deployed forms in order

nt
to reduce a potential increase in network traffic. Replacing timers with
I
e
JavaBeans, which provide similar functionality, will benefit users as code

cl
would be executed on the Web client without invoking network traffic.

ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-5
Lesson 14: Applying Timers
......................................................................................................................................................

Handling Timer Expiration


Timer A Timer B Start
created created
A
Timer A
expired When-Timer-Expired (A)
Query
issued
(R) Timer B
expired B

Timer A B,A
expired
Query
complete
(R) When-Timer-Expired (B)

When-Timer-Expired (A)

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-6 Oracle iDS Forms: Build Internet Applications II
Handling Timer Expiration
......................................................................................................................................................

Handling Timer Expiration


When a timer expires, the When-Timer-Expired trigger fires and executes
the desired actions. If you define more than one timer, you need to know
which timer expired and how expired timers are handled.

Timer Queue
When a timer expires, it is put in a queue of expired timers. Forms services
this timer queue on a first-in-first-out basis, but only while it is waiting for
user actions. After an expired timer is handled, it is removed from the queue.
Note: A repeating timer will not begin the next iteration while it is still in
the timer queue.

When-Timer-Expired Trigger
When using the When-Timer-Expired trigger remember that it:
• Fires once for each timer that expires, but only after Form Builder has
completed any current processing of triggers and built-in functions
• Fires after the specified time interval, rather than exactly on the moment
of expiration
• Must be defined at the form level
• Should include the GET_APPLICATION_PROPERTY built-in function
for you to find out which timer has expired

Example

ly
Handle the expiration of two timers named HOUR_ALARM and

n
ABOUT_STARTUP.
DECLARE
v_timer_name VARCHAR2(30);
e O
BEGIN

Us
I
v_timer_name := GET_APPLICATION_PROPERTY(timer_name);

A
IF v_timer_name = ’HOUR_ALARM’ THEN

O
MESSAGE(’One hour has passed again.’);

&
ELSIF v_timer_name = ’ABOUT_STARTUP’ THEN

l
DELETE_TIMER(’ABOUT_STARTUP’);

a
n
END IF;

e
END;

t r
In
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-7
Lesson 14: Applying Timers
......................................................................................................................................................

Creating a Timer

• Syntax:
CREATE_TIMER
CREATE_TIMER (timer_name,
(timer_name, milliseconds,
milliseconds, iterate)
iterate)

• Example:
v_timer_id
v_timer_id := CREATE_TIMER ((′hour_alarm’,
:= CREATE_TIMER ′hour_alarm’, cst_hour);
cst_hour);

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-8 Oracle iDS Forms: Build Internet Applications II
Creating a Timer
......................................................................................................................................................

Creating a Timer
You can create a timer by using the CREATE_TIMER built-in function,
which returns type TIMER.

Syntax

CREATE_TIMER(timer_name, milliseconds, iterate)

Parameter Description
timer_name The timer name
milliseconds The duration of the timer in milliseconds (Value must be
between 1 and 2147483648, approximately 25 days.)
iterate Specifies whether the timer should repeat upon expiration
(Valid values are REPEAT—the default—and NO_REPEAT.)

Example
At form startup, create a timer named HOUR_ALARM that expires every
hour.
DECLARE
cst_hour constant NUMBER(7) := 3600000;
--3600000 is one hour in milliseconds
v_timer_id TIMER;
BEGIN
v_timer_id := CREATE_TIMER(’hour_alarm’, cst_hour);
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-9
Lesson 14: Applying Timers
......................................................................................................................................................

Modifying a Timer

• Syntax:
SET_TIMER
SET_TIMER (timer_name,
(timer_name, milliseconds,
milliseconds, iterate)
iterate)
SET_TIMER
SET_TIMER (timer_id, iterate))
(timer_id, milliseconds, iterate
milliseconds,

• Example:

SET_TIMER ((′hour_alarm’,
SET_TIMER ′hour_alarm’, no_change, no_repeat);
no_change, no_repeat );

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-10 Oracle iDS Forms: Build Internet Applications II
Modifying a Timer
......................................................................................................................................................

Modifying a Timer
You can modify a timer by using the SET_TIMER built-in procedure.

Syntax

SET_TIMER(timer_name, milliseconds, iterate)


SET_TIMER(timer_id, milliseconds, iterate)

Parameter Description
timer_name The timer name
timer_id The internal timer ID
millisec- The duration of the timer in milliseconds (Value must be between 1 and
onds 2147483648—approximately 25 days—or must be NO_CHANGE.)
iterate Specifies whether the timer should repeat upon expiration (Valid
values are REPEAT (default), NO_REPEAT, and NO_CHANGE.)

Example
Set the repeat behavior of a timer named HOUR_ALARM without changing
the time interval. The trigger name depends on the situation.
BEGIN
SET_TIMER(’hour_alarm’, no_change, no_repeat);
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-11
Lesson 14: Applying Timers
......................................................................................................................................................

Deleting a Timer

• Syntax:
DELETE_TIMER
DELETE_TIMER (timer_name)
(timer_name)
DELETE_TIMER
DELETE_TIMER (timer_id)
(timer_id)

• Example:
...
...
IF
IF NOT
NOT ID_NULL (FIND_TIMER ((′hour_alarm
ID_NULL (FIND_TIMER ′hour_alarm′))
′)) THEN
THEN
DELETE_TIMER (’hour_alarm’);
DELETE_TIMER (’hour_alarm’);
END
END IF;
IF;
...
...

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-12 Oracle iDS Forms: Build Internet Applications II
Deleting a Timer
......................................................................................................................................................

Deleting a Timer
You can delete a timer by using the DELETE_TIMER built-in procedure.

Syntax

DELETE_TIMER(timer_name)
DELETE_TIMER(timer_id)

Parameter Description
timer_name The timer name
timer_id The internal timer ID

Note: Forms generates an error if you attempt to delete a nonexistent timer.

Example
Delete a timer named HOUR_ALARM after first checking that it exists. The
trigger name depends on the situation.
BEGIN
IF NOT ID_NULL(FIND_TIMER(’hour_alarm’)) THEN
DELETE_TIMER(’hour_alarm’);
END IF;
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-13
Lesson 14: Applying Timers
......................................................................................................................................................

Summary

In this lesson, you should have learned how to:


• Create and modify a timer with built-in
functions
– FIND_TIMER
– CREATE_TIMER
– SET_TIMER
– DELETE_TIMER
– GET_APPLICATION_PROPERTY
(TIMER_NAME)

Copyright  Oracle Corporation, 2001. All rights reserved.

Summary

• Handle timer expiration:


– Timer queue
– When-Timer-Expired trigger

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
14-14 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
A timer is a programmatic construct much like an “internal alarm clock.”

Built-ins for Timers


• FIND_TIMER
• CREATE_TIMER
• SET_TIMER
• DELETE_TIMER
• GET_APPLICATION_PROPERTY(TIMER_NAME)

Uses of Timers
• Polling the database to check if a certain event has occurred
• Performing an automatic query at regular intervals
• Showing “About this...” information at form startup
• Performing an automatic commit or rollback after a specific amount of
idle time

Handling Timer Expiration


• When a timer expires, it is put in a first-in-first-out timer queue.
• The When-Timer-Expired trigger fires once for each timer that expires,
but only after Forms has completed any current processing.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-15
Lesson 14: Applying Timers
......................................................................................................................................................

Practice 14 Overview

This practice covers the following topic:


• Periodically checking to see if there are
locked records and asking the user to
commit or rollback

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-16 Oracle iDS Forms: Build Internet Applications II
Practice Overview: Lesson 14
......................................................................................................................................................

Practice Overview: Lesson 14


This practice guides you through the implementation of time-initiated
processing. You will use the appropriate timer built-ins and triggers to create
a timer and handle timer expiration.

Practice Contents
If table rows are locked, display an alert that asks the user to commit or roll
back changes after a set period of time.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 14-17
Lesson 14: Applying Timers
......................................................................................................................................................

Practice 14
1 Automatically ask the users if they want to commit after a set period of
time.
a Open your CUSTOMERS form module.
b At the startup of the form, create a global variable called
GLOBAL.LOCKS_PENDING. This will indicate at all times
whether rows of the S_CUSTOMER table are locked. The default
value is NULL. Append your new code to existing code.
c Create the On-Lock trigger to implement the default lock processing,
update the global variable, and create the timer. You can import the
code from the pr14_1.txt file.
d Display an alert if locks are still pending after a certain period of
time elapses. This alert should ask the user to commit or roll back the
changes. The alert, ASK_SAVE, already exists in your form. Define
an appropriate trigger. You can import the code from the
pr14_2.txt file.
e Create a Post-Database-Commit trigger to restore the NULL value to
the global variable. You can import the code from the pr14_3.txt
file.
f Create the On-Rollback trigger to implement the default rollback
processing and restore the NULL value to the global variable. You
can import the code from the pr14_4.txt file.
g Save and compile your form to test.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
14-18 Oracle iDS Forms: Build Internet Applications II
................................

Including Charts
and Reports

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Objectives

After completing this lesson, you should


be able to do the following:
• Include charts in an application
• Include reports in an application
• Integrate other documents with
Web-deployed forms

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
In this lesson, you will learn how to include charts and reports in your
application. You will also learn how to invoke additional document types
with Web-deployed forms.

Objectives
After completing this lesson, you should be able to do the following:
• Include charts in an application
• Include reports in an application
• Integrate other documents with Web-deployed forms

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-3
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Including Charts by Using


the Chart Wizard

To invoke the Chart Wizard:


• Use the
Chart tool
to drag a
chart area
onto
the canvas.

• Select Tools—>Chart Wizard

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-4 Oracle iDS Forms: Build Internet Applications II
Including Charts by Using the Chart Wizard
......................................................................................................................................................

Including Charts by Using the Chart Wizard


You are able to create charts and reports within Form Builder without
launching separate chart or reports engines.
The Chart Wizard leads you step-by-step through the process of creating a
chart from within a form or a report.
Once the chart is created, you can modify or enhance the chart by using
Graphics Builder.

Invoking the Chart Wizard


To invoke the Chart Wizard:
• From the Layout Editor, use the Chart tool to drag a chart area onto the
canvas.
• The New Chart Wizard dialog box appears. Click on the OK button to
accept the default option, “Use the Chart Wizard.”

Incorporating a Chart
The steps to create a chart are:
1 Specify a chart type and subtype.
2 Specify the data block that contains the data you want to assign to chart
columns.
3 Specify the data to appear on the Category (X) axis of the chart.
4 Specify the data to appear on the Value (Y) axis of the chart.
Follow the prompts on each page of the wizard to specify the settings for the
chart you want to create.
nly
Re-entering the Chart Wizard
e O
A powerful quality of the Chart Wizard is its ability to operate in reentrant
Us
mode. This means you can use the Chart Wizard to modify an existing chart
created with the wizard.
AI
To invoke the Chart Wizard in reentrant mode, select the chart object in the
& O
l
Object Navigator, and then select Tools—>Chart Wizard from the menu.
a
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-5
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Including Charts by Using


the Chart Wizard

Chart
type

Copyright  Oracle Corporation, 2001. All rights reserved.

Including Charts by Using


the Chart Wizard

Arrow indicates that


data from the block

ly
is represented in the
chart.

On
se
I U
OA
l &
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
15-6 Oracle iDS Forms: Build Internet Applications II
Including Charts by Using the Chart Wizard
......................................................................................................................................................

Chart Type
Select the style of chart that you require. The picture on the left of the wizard
displays the relevant chart style.
The chart subtype options are context-sensitive; the number and style of
options change depending on the chart type that you choose. Select the chart
subtype that you require, and then click Next to continue to the next wizard
page.

Chart Type Description


Column Data is plotted as columns.
Bar Data is plotted as horizontal bars.
Pie Data is plotted as individual “slices” showing the relationship of parts to
the whole.
Line Data is plotted as points along a line.
Mixed Data is charted using multiple chart types, such as bar and line.

Data Source
The next step in the Chart Wizard is to select the block that contains the data
you want to represent in the chart. The data block you select determines the
data that is available for assignment to the Category and Value axes of your
chart.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-7
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Including Charts by Using


the Chart Wizard

Arrow points to the


Category axis.

Copyright  Oracle Corporation, 2001. All rights reserved.

Including Charts by Using


the Chart Wizard

Arrow points to
the Value axis.

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
15-8 Oracle iDS Forms: Build Internet Applications II
Including Charts by Using the Chart Wizard
......................................................................................................................................................

Category Axis
To use the Chart Wizard to map data to your chart’s Category (X) axis:
1 In the Available Fields list, select the field that you want to map to the
Category (X) axis of the chart.
2 Transfer the selected field from the Available Fields list to the Category
Axis list.

Chart Type Description


Column, Line, Mixed chart Categories appear along the x-axis.
Bar chart Categories appear down the y-axis.
Pie chart Each category represents one segment of the pie.

Value Axis
To use the Chart Wizard to map data to your chart’s Value (Y) axis:
1 In the Available Fields list, select the field that you want to map to the
Value (Y) axis of the chart.
2 Transfer the selected field from the Available Fields list to the Value
Axis list.

Chart Type Description


Column, Line, Mixed chart Values are represented by the height of the column against
the y-axis.

ly
Bar chart Values are represented by the length of the column against
the x-axis.

On
e
Pie chart Values are represented by the size of each segment.

Us
You must transfer at least one field from the Available Fields list to the
Category Value list before navigating to the next page.
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-9
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Chart Item Properties

Filename
Execution Mode
Communication Mode
Data Source Data Block
Query Name
Data Source X Axis
Data Source Y Axis
Update on Query
Update on Commit

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-10 Oracle iDS Forms: Build Internet Applications II
Chart Item Properties
......................................................................................................................................................

Chart Item Properties


The chart item properties are the following:

Property Description
Filename Specifies the name of the file where the chart is stored
Execution Mode Specifies the execution version of Graphics Builder to use:
BATCH or RUNTIME
Communication Mode Specifies the communication mode to be used when calling
Graphics Builder: SYNCHRONOUS or ASYNCHRONOUS
Data Source Data Block Specifies the block that contains the data to represent in the chart
Query Name Specifies the name of the query used to display the chart
Data Source X Axis Specifies the item name used to map data to the chart Category
(X) axis
Data Source Y Axis Specifies the item name used to map data to the chart Value (Y)
axis
Update on Query Specifies that the chart is refreshed each time you perform a
query
Update on Commit Specifies that the chart is refreshed each time you perform a
commit

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-11
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Reporting Within Form Builder

• Create report objects in Object Navigator


• Run a report against a local or remote server
• Base a report on a data block

Copyright  Oracle Corporation, 2001. All rights reserved.

Technical Note
Passing data is applicable only if running against a local server.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-12 Oracle iDS Forms: Build Internet Applications II
Reporting Within Form Builder
......................................................................................................................................................

Reporting Within Form Builder


Oracle Forms Developer provides the ability to run a report against a local
or a remote server with considerable ease. A report object is available that
allows you to specify all the commands necessary for running a report.

Using the Report Wizard


Using the Report Wizard within Form Builder, you can:
• Create a new report module based on one data block in your form
• Create a new report module
• Use an existing report module
Note: You can modify or enhance the report module by using Oracle
Reports Developer.

Creating a Report Object Based on a Data Block


The ability to base a report on a data block represents an efficient way of
passing data from a form module to a report. Select the Report node in the
Object Navigator.
1 Create a new report object by clicking the Create icon.
Form Builder displays the New Report dialog box.
2 Specify a filename and a block name.
3 Click OK.
Form Builder runs Report Builder and displays the Report Wizard.

ly
4 Choose the report style that most closely resembles the report you want

n
to create.
5 Select the fields you would like to display in your report.

e O
s
6 Select the fields you would like to total by choosing from a list of
possible calculations. (This step is optional.)
I U
8 Select a template for your report and then click the Finish button.
OA
7 Enter labels and widths for your fields and totals. (This step is optional.)

l
The Live Previewer is displayed.
&
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-13
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Report Object Properties

Oracle Forms Developer


integration properties

Filename
Filename
Execution
Execution Mode
Mode
Communication
Communication Mode
Mode
Data
Data Source
Source Data
Data Block
Block
Query
Query Name
Name

Copyright  Oracle Corporation, 2001. All rights reserved.

Report Object Properties

Report Destination Type


Report Destination Name
Report Destination Format
Report Server

ly
Other Report Parameters

On
se
I U
A
Reports properties

& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
15-14 Oracle iDS Forms: Build Internet Applications II
Report Object Properties
......................................................................................................................................................

Report Object Properties


Oracle Forms Developer Integration Properties

Property Name Description


Filename Specifies the name of the report module to be executed by
Report Builder
Execution Mode Specifies the execution mode to be used when running Report
Builder (Valid numeric constants for this property are BATCH
and RUNTIME.)
Communication Mode SYNCHRONOUS specifies that control returns to Form
Builder only after Report Builder has been exited. The end user
cannot work in the form while Report Builder is running.
ASYNCHRONOUS specifies that control returns to the calling
application immediately, even if Report Builder has not
completed its display.
Data Source Data Block Block name used by Report Builder as data source
Query Name Query name used by Report Builder to retrieve the data (When
the report is based on data from a Form Builder block, the
query name property value is the block name.)

Reports Properties

ly
Property Name Description
Report Destination Type
n
Specifies the type of device that will receive the report
output
O
Report Destination Name
se
Specifies the name of the file, printer, or Oracle Office

I U
username (or distribution list) to which the report output will

A
be sent
Report Destination Format
O
Specifies the format of your report (values are PDF, HTML,

&
l
HTMLCSS, XML) or the printer driver to be used when

rna DESTYPE is File.)

te
Report Server

n
Name of the remote server on which the report is run

e I
Other Report Parameters Declares additional parameters

cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-15
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Working with Reports

Built-ins for interacting with reports:


• RUN_REPORT_OBJECT
• FIND_REPORT_OBJECT
• GET_REPORT_OBJECT_PROPERTY
• SET_REPORT_OBJECT_PROPERTY
• CANCEL_REPORT_OBJECT
• COPY_REPORT_OUTPUT
• REPORT_OBJECT_STATUS
• RUN_PRODUCT

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-16 Oracle iDS Forms: Build Internet Applications II
Working with Reports
......................................................................................................................................................

Working with Reports


When running a form you can control reports in the Report Server
dynamically by including the following built-ins in your trigger code:

Built-in Description
RUN_REPORT_OBJECT Runs a specified report on a specified server
FIND_REPORT_OBJECT Returns the internal ID of a report object
GET_REPORT_OBJECT_PROPERTY Dynamically gets report object properties at
run time
SET_REPORT_OBJECT_PROPERTY Dynamically sets report object properties at
run time
CANCEL_REPORT_OBJECT Cancels a report in the server queue
COPY_REPORT_OUTPUT Copies the report output back to the client
REPORT_OBJECT_STATUS Returns the current status of a report (The status
codes can be FINISHED, RUNNING,
CANCELED, OPENING_REPORT,
ENQUEUED, INVALID_JOB,
TERMINATED_WITH_ERROR, or
CRASHED.)
RUN_PRODUCT Invokes one of the supported Oracle tools
products and specifies the name of the module or
modules to be run

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-17
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Running a Report Against


a Local Server

DECLARE
v_rep VARCHAR2(100);
repid REPORT_OBJECT;
BEGIN
repid := FIND_REPORT_OBJECT(’deptrpt’);
v_rep := RUN_REPORT_OBJECT(repid);
end;

Copyright  Oracle Corporation, 2001. All rights reserved.

Running a Report Against


a Remote Server

. . .
repid := FIND_REPORT_OBJECT(’barcode’);

ly
v_rep := RUN_REPORT_OBJECT(repid);
rep_status := REPORT_OBJECT_STATUS(v_rep);
IF rep_status = ’FINISHED’ THEN
On
COPY_REPORT_OBJECT_OUTPUT(v_rep,’c:\local.pdf’);

se
U
HOST(’netscape c:\local.pdf’);
END IF;

AI
O
. . .

l &
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
15-18 Oracle iDS Forms: Build Internet Applications II
Working with Reports
......................................................................................................................................................

Running a Report Against a Local Server


This example allows the user to run a report against a local server.
DECLARE
v_rep VARCHAR2(100);
repid REPORT_OBJECT;
rep_status VARCHAR2(20);
BEGIN
repid := FIND_REPORT_OBJECT(’deptrpt’);
v_rep := RUN_REPORT_OBJECT(repid);
end;

Running a Report Against a Remote Server


You can run a report on a remote server by naming the server in the Report
Object property, Report Server. RUN_REPORT_OBJECT returns a string
that uniquely identifies the report.
In this Client Server example, this string can be used to get the report status
and to copy the output.
....
v_rep := RUN_REPORT_OBJECT(repid);
IF REPORT_OBJECT_STATUS(v_rep) = ’FINISHED’ THEN
COPY_REPORT_OBJECT_OUTPUT(v_rep,’c:\local.pdf’);
HOST(’netscape c:\local.pdf’);
ELSE
MESSAGE(’Error when running report.’);

ly
END IF;

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-19
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Running a Report from


a Web-Deployed Form

Built-in for downloading reports:


• WEB.SHOW_DOCUMENT
WEB.SHOW_DOCUMENT(‘url’,
WEB.SHOW_DOCUMENT(‘url’, ‘target’);
‘target’);

Example
my_url
my_url :=
:= ‘http://www.summit.com/repts/emps.pdf’;
‘http://www.summit.com/repts/emps.pdf’;
WEB.SHOW_DOCUMENT(my_url,
WEB.SHOW_DOCUMENT(my_url, ‘_SELF’);
‘_SELF’);

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-20 Oracle iDS Forms: Build Internet Applications II
Working with Reports
......................................................................................................................................................

Running a Report from a Web-Deployed Form


When you call RUN_REPORT_OBJECT from a Web-deployed form, the
report is created on the Web server. You can specify a directory location for
report output, and a Web-deployable report format, with the following
Report Object properties:

Property Value
Report Destination Format File
Report Destination Name ‘pathname’ / ‘report filename’
Report Destination Format HTML
HTMLCSS
PDF
XML

Viewing Report Output from a Web-Deployed Form


You can view report output with the built-in WEB.SHOW_DOCUMENT.
This is supplied with the Oracle Forms Developer WEB built-in package,
and you can only use it with Web-deployed forms. The built-in has two
parameters:
• URL of the document to be downloaded. The document may, for
example, be a report, an image, a form that you wish to run on the Web,
or for another Web-site.

ly
• Target window or frame for displaying the report:
‘_BLANK’ specifies that the document can be downloaded in a new
HTML window.
On
‘_SELF’ specifies that the document is downloaded to the base HTML
se
page window or frame.
I U
‘_TOP’ specifies that the document is downloaded to the base HTML
page, replacing any frames.
OA
l
‘_PARENT’ specifies that the document is downloaded to the parent &
na
window of the base HTML page.
r
te
In this example, WEB.SHOW_DOCUMENT is used to download the emps

n
I
report which has been formatted in pdf:

cle WEB.SHOW_DOCUMENT(’http://www.summit.com/repts/emps.pdf’,

a
‘_blank’);

Or

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-21
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Summary

In this lesson, you should have learned how to:


• Invoke the Chart Wizard
• Exploit Report features in Form Builder
– Create report objects
– Run against local or remote server
– Base reports on data blocks
• Manage report objects with forms built-ins
– GET_REPORT_OBJECT_PROPERTY
– SET_REPORT_OBJECT_PROPERTY

Copyright  Oracle Corporation, 2001. All rights reserved.

Summary

• Communicate with Report server


– RUN_REPORT_OBJECT
– FIND_REPORT_OBJECT
– CANCEL_REPORT_OBJECT
nly
– REPORT_OBJECT _STATUS

e O
s
– COPY_REPORT_OUTPUT
• Communicate with a Web server

I U
A
– WEB.SHOW_DOCUMENT

& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
15-22 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
In this lesson, you should have learned how to include charts and reports in
your application. You should have learned how to invoke the Chart Wizard.

Reporting Features in Form Builder


• Create report objects
• Base reports on data blocks
• Run against local or remote server
• Run reports from Web-deployed forms

Interacting with Reports


• RUN_REPORT_OBJECT
• FIND_REPORT_OBJECT
• CANCEL_REPORT_OBJECT
• REPORT_OBJECT_STATUS
• COPY_REPORT_OUTPUT
• GET_REPORT_OBJECT_PROPERTY
• SET_REPORT_OBJECT_PROPERTY
• WEB.SHOW_DOCUMENT

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-23
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Practice 15 Overview

This practice covers the following topics:


• Creating a chart to display the total orders
for each customer
• Creating a report based on the
S_CUSTOMER block

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-24 Oracle iDS Forms: Build Internet Applications II
Practice Overview: Lesson 15
......................................................................................................................................................

Practice Overview: Lesson 15


This practice guides you in creating and displaying charts and reports within
your forms application.

Practice Contents
• Create a chart to display the total orders for each customer.
• Create a report based on the S_CUSTOMER block.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-25
Lesson 15: Including Charts and Reports
......................................................................................................................................................

Practice 15
1 Create a chart object by using the Chart Wizard. This chart should
display the total orders for each customer.
a Open the ORDCHART form module. Save as ORDCHARTXX
where XX is your student course number. This form module contains
a S_ORD block. Only one item from this block is visible: TITLE.
This item displays a title for your chart.
b In the Layout Editor, use the Chart tool to drag a chart area onto the
canvas. Select “Use the Chart Wizard” from the New Chart Object
dialog box. Do not specify a title for the chart.
c Select Column as chart type, Plain as chart subtype.
d Specify the S_ORD block as the data block that contains the data
you want to assign to chart columns.
e Select CUSTOMER_NAME to appear on the Category (X) axis, and
TOTAL to appear on the Value (Y) axis of the chart.
f Click the Finish button.
g Save and compile your form module. Deploy your form to the Web
to test. To display the chart, click in the Title item on the Chart tab.

2 Create a report object based on the S_CUSTOMER block. This report


displays a customer list using a tabular layout. Display only the ID,
NAME, COUNTRY, and REGION_ID fields.
a Open the CUSTREPT form. Save as CUSTREPXX where XX is your
student course number. Create a new report object.

nly
O
This will invoke Report Builder. Within the Report Wizard:
Choose the report style Tabular.
se
U
Select the ID, NAME, COUNTRY, and REGION_ID fields.
Do not select fields to total.
Change labels and widths for your fields.
AI
Select a template for your report.
& O
l
b Save your report and exit Report Builder.
a
rn
c Set the Execution Mode report object property to “runtime” and the

e
t
Report Destination Type report object property to “screen”. Rename

In
the report object to “my_report”.

le
d Create a button named CUST_REP_BUTTON in the control block.

c
a
Display this button on the CANVAS2 canvas.

Or

......................................................................................................................................................
15-26 Oracle iDS Forms: Build Internet Applications II
Practice 15
......................................................................................................................................................

e Create a When-Button-Pressed trigger on the


CUST_REP_BUTTON button to run the report.
f Change the Query All Record property value to Yes for the
S_CUSTOMER block.
g Save and compile your form module. Deploy your form to the Web
to test. Query a customer record before calling the report.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II 15-27
Lesson 15: Including Charts and Reports
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
15-28 Oracle iDS Forms: Build Internet Applications II
................................

Practice Solutions

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 1 Solutions
1 Create a new menu module.
a Using the following screenshot as a guideline, create a new menu
module called M_SUMMITXX where XX is your student course
number.

- Select the Menus node in the Object Navigator and click the
Create tool.
- Invoke the Menu Editor.
- This automatically creates the main menu.
nly
O
- Change the name of the menu to MAIN_MENU.
- Rename the menu item New Item to File. Click New Item twice
se
U
to obtain the text cursor. Erase the old name. Enter the name
File.
AI
- Create new menu items under File. Click File. Click the Create
Down tool. Change the name.
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
A-2 Oracle iDS Forms: Build Internet Applications II
Practice 1 Solutions
......................................................................................................................................................

- Set the properties as follows:


- File Menu

Visible in
Menu Visible Horiz.
Item Command Menu Item in Menu Icon
Label Type Type Code Menu Toolbar Filename
Save Plain PL/SQL DO_KEY(’CO Yes Yes Save
MMIT_FORM’
);
Clear Plain PL/SQL DO_KEY(’ Yes Yes Abort
CLEAR_FORM
’);
Null1 Separator Null Yes Yes
Exit Plain PL/SQL DO_KEY( Yes Yes Exit
’EXIT_FORM
’);
Null2 Separator Null No Yes

- Note the exact names of the Main Menu, and each of its menu
items. These will be needed in a later exercise.
- Create a new menu item to the right of File and rename it Edit.
- Click the File menu item.
- Click the Create Right tool.
nly
O
- Name the new menu item Edit.
- Create new menu items under Edit. Click Edit. Click the Create
se
U
Down tool. Change the name.

AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-3
Appendix A: Practice Solutions
......................................................................................................................................................

- For each of the items, set the properties as follows:


• Edit Menu

Visible in
Menu Magic Command Visible Horiz. Menu Icon
Label Item Type Item Type in Menu Toolbar Filename
Cut Magic Cut Null Yes Yes Cut
Copy Magic Copy Null Yes Yes Copy
Paste Magic Paste Null Yes Yes Paste
Null3 Separator Null No Yes

- Create a new menu item to the right of Edit and rename it Sort
By. Click Edit. Click the Create Right tool. Rename the new
menu item Sort By.
- Create three new menu items under Sort By. Click Sort By. Click
the Create Down tool. Change the name. Set additional
properties as follows:
• Sort By Menu

Menu Menu Item


Item Radio Command
Menu Label Type Group Type Menu Item Code
Order Id Radio Order_By PL/SQL SET_BLOCK_PROPERTY(

nly
’s_ord’, order_by,

e O’id’ ) ;
Customer Id Radio Order_By PL/SQL

Us SET_BLOCK_PROPERTY(

AI ’s_ord’, order_by,
’customer_id’ ) ;
Sales Rep Id Radio Order_By PL/SQL
& O SET_BLOCK_PROPERTY(

al ’s_ord’, order_by,

ern ’sales_rep_id’ ) ;

Int
cle
ra
O

......................................................................................................................................................
A-4 Oracle iDS Forms: Build Internet Applications II
Practice 1 Solutions
......................................................................................................................................................

- Create a new menu to the right of Sort By and rename it Query.


See the previous solution.
- Create two new menu items under Query. See the previous
solution. Set the properties as follows:
• Query Menu

Visible in
Menu Command Horiz. Menu Icon
Label Item Type Type Menu Item Code Toolbar Filename
Enter Plain PL/SQL DO_KEY(’ Yes query
Query ENTER_QUERY’);
eXe- Plain PL/SQL DO_KEY(’EXECUT Yes execute
cute E_QUERY’);
Query

b Save as M_SUMMIT and compile the menu module.


c Attach the menu module to the ORDERS form.
- Open the ORDERS form and set the Menu Module property to
M_SUMMIT for the form module.
d Save and compile the form module as ORDGXX where XX is your
student course number.
e Run and test your ORDERS form.
2 Add pop-up menus to the CUSTOMERS form.

ly
a Open the CUSTOMERS form module. Save as CUSTGXX where
XX is your student course number.
On
e
b Copy the EDIT_MENU menu from your M_SUMMIT menu
module to your CUSTOMERS form. Attach this pop-up menu to the
Us
I
Comments item.
- Select EDIT_MENU from the M_SUMMIT menu module.
OA
&
- Click the right mouse button and select Copy.

al
- Select the Pop-up Menus node from the CUSTOMERS form

rn
module.

e
Int
- Click the right mouse button and select Paste.
- Select this pop-up menu in the Popup Menu property for the

cle Comments item.

ra c Save and compile the form module. Deploy your form to the Web to

O
test.

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-5
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 2 Solutions
1 Define a check menu item.
a Open your M_SUMMIT menu module and add a new menu item to
the Sort By menu; name it Display_Help.
- See previous solution.
- Set the properties as follows:

Menu Label Menu Item Type Command Type


Display Help Check PL/SQL

If Display_Help is selected, enable the ORDERS form toolbar HELP


b
button and set the toolbar canvas background color to grey.
If Display_Help is not selected, disable the ORDERS form toolbar
HELP button and set the toolbar canvas background color to red.
You can import the code from the pr2_1.txt file.
- Import the pr2_1.txt file.
If get_menu_item_property(
’sort_by_menu.display_help’,
checked) = ’TRUE’ then
set_canvas_property(’toolbar’,
visual_attribute,’Toolnormal’);
set_item_property(’control.showhelp’,

ly
enabled, property_true);
Else

On
e
set_canvas_property(’toolbar’,
visual_attribute,’Toolred’);

Us
I
set_item_property(’control.showhelp’,

End If;
enabled, property_false);

OA
l
c Save and compile the menu module. &
rna
d Deploy your ORDERS form on the Web to test your menu.

te
2 Synchronize the menu module with the form.

n
I
a Write startup code for your M_SUMMIT menu module that

e
l
synchronizes the Display_Help menu item with the toolbar HELP
c
a
button. You can import the code from the pr2_2.txt file.
r
O

......................................................................................................................................................
A-6 Oracle iDS Forms: Build Internet Applications II
Practice 2 Solutions
......................................................................................................................................................

- Use the Startup Code menu module property to invoke the


PL/SQL Editor.
If Get_Item_Property(’Control.Showhelp’,
Enabled) = ’TRUE’ Then
Set_Menu_Item_Property(
’Sort_By_Menu.Display_Help’,
Checked, Property_True );
Else
Set_Menu_Item_Property(
’Sort_By_Menu.Display_Help’,
Checked, Property_False );
End If;

bSave and compile your menu module.


c Deploy your ORDERS form on the Web to test your menu.
3 Attach your M_SUMMIT menu to your CUSTOMERS form. The menu
item Sort_By is not relevant, and should not be visible to the user.
a Attach the menu module to your CUSTOMERS form.
- Open the CUSTOMERS form and set the Menu Module
property to M_SUMMIT for the form module.
b Modify the startup code of the M_SUMMIT menu module to hide
the SORT_BY menu when the CUSTOMERS form is opened. You
can import the code from the pr2_3.txt file to replace the

ly
existing code. You may need to change the code to conform to the
exact names you gave to the Main Menu and its menu items. Also,
be sure the When-Button-Pressed trigger on the Orders button refers
On
to your Orders form.
se
- Import pr2_3.txt file to add the following code.
I U
If :System.current_form = ’CUSTOMERS’then
set_menu_item_property(
OA
l
’main_menu.sort_by’,
&
rna visible,

e
property_false);

Int
End if;

cle
c Save and compile the menu module.

a
d Deploy your CUSTOMERS form to the Web and test your

Or application. Execute a Query and click the Orders button to move to


the ORDERS form. Note that the Sort_By menu item is hidden
when the CUSTOMERS form is current, and is visible when the
ORDERS form is current.

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-7
Appendix A: Practice Solutions
......................................................................................................................................................

4 With both the ORDERS and CUSTOMERS form modules, restore the default
menu, (DEFAULT&SMARTBAR).

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
A-8 Oracle iDS Forms: Build Internet Applications II
Practice 3 Solutions
......................................................................................................................................................

Practice 3 Solutions
1 Maintain consistent functionality in your form module by using key
triggers. Define a key trigger in your ORDERS form to give users
consistent functionality whenever they exit the form, either using the
menu or when the CONTROL.EXIT_BUTTON button is pressed.
a Redefine [Exit Form] in your ORDERS form so that an alert
message is displayed to users before allowing them to exit the form.
b Amend the entry in Keyboard Help to “Exit Orders” for the key
trigger.
c Save and compile your form. Deploy your form to the Web to test.
- Create a form-level KEY-EXIT trigger. Copy the code from the
CONTROL.EXIT_BUTTON When-button-pressed trigger.
Set_Alert_Property(’Exit_Alert’,
ALERT_MESSAGE_TEXT,
’Do you really want to leave the form?’);
If show_alert(’EXIT_ALERT’) = alert_button1
then
exit_form;
End if;
- Change the keyboard help text in the KEY-EXIT trigger
property palette to “Exit Orders”, and set keyboard help display
to YES.

ly
d Customize the Alert Text message in your key trigger and ensure that

n
it is displayed whenever the user exits the form using the
EXIT_BUTTON on the Control block.

e O
s
- Replace the code in the EXIT_BUTTON When-Button -Pressed
trigger with: do_key(’Exit_Form’);
I U
A
e Save and compile your form module. Deploy to the Web and test
your form.
If you have time
& O
al
2 Disable [Enter query] in your CUSTOMERS form by creating an

rn
appropriate key trigger. Replace [Enter Query] functionality with a call
e
nt
to the customized query form CUSTQUERY. This form allows the user

I
to select a CUSTOMER ID, a CUSTOMER NAME, or a SALES REP

cle
ID. The user selections are returned to your CUSTOMER form using

ra global variables.

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-9
Appendix A: Practice Solutions
......................................................................................................................................................

a Add the following code to your key trigger:


call_form(’custquery’,no_hide);
execute_query;
- Create a form-level KEY-ENTQRY trigger. Add the code:
call_form(’custquery’,no_hide);
execute_query;
You may import the code from pr3_1.txt file.
b The CUSTQUERY form will return three values, held in global
variables. The contents should be passed to your CUSTOMERS
form to allow the user to execute a restricted query. Use the
following global variables:
:global.custid;
:global.custname;
:global.repid;
- Pass the values to the S_CUSTOMER block items in a
PRE_QUERY trigger:
:s_customer.id := :global.custid;
:s_customer.name := :global.custname;
:s_customer.sales_rep_id := :global.repid;
c Define the global variables in your CUSTOMERS form to ensure
that the user can perform unrestricted queries.
- Define the global variables in the When-New-Form-Instance

ly
trigger:
default_value(’’,’global.custid’);
On
e
default_value(’’,’global.custname’);
default_value(’’,’global.repid’);
Us
d Save and compile your CUSTOMER form. Deploy your form to the

AI
O
Web to test.

l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
A-10 Oracle iDS Forms: Build Internet Applications II
Practice 4 Solutions
......................................................................................................................................................

Practice 4 Solutions
In this practice, you provide additional functionality in your forms by
defining mouse event triggers.
1 In your CUSTOMERS form, define a mouse event trigger on
S_CUSTOMER.COMMENTS that invokes the item’s editor when the
user double-clicks the item.
- When-Mouse-Doubleclick on s_customer.comments
Edit_TextItem;
2 In your ORDERS form change the mouse cursor symbol to “busy” while
the HELP canvas is displayed.
a Ensure that the default symbol is restored whenever the user hides
the HELP canvas.
- When-Button-Pressed on :control.showhelp
Set_Application_Property(cursor_style,’help’);
- When-Button-Pressed on :control.hidehelp
Set_Application_Property(cursor_style,’normal’);

b The user can close the HELP canvas without pressing the
HIDEHELP button, by navigating to an item in another block. How
can you ensure that the mouse cursor is always restored?
- Define a Post-Block trigger for the Control Data block.
Copy the code to restore the mouse cursor from your

ly
:Control.hidehelp button When-Button-Pressed trigger.
c Save and compile your form modules. Deploy your forms to the Web
to test.You can call the ORDERS form from your CUSTOMERS
On
form.
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-11
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 5 Solutions
1 Manipulate a multiple-window form.
aIn your ORDERS form module, ensure that the form is exited when a
user closes the orders window using the window system menu box.
An alert should be displayed to users asking them to confirm that
they wish to leave the application.
- Define a When-Window-Closed trigger at Form Level.
- Call the do_key built-in to execute [Exit_Form].
b If a user closes the Inventory window through the system menu box,
ensure that the form remains open with the cursor positioned in the
Orders window.
- In the When-Window-Closed trigger, use :system.event_window
to identify the current window:
If :system.event_window = ’WIN_ORDER’ then
do_key(’exit_form’);
else
go_block(’s_ord’);
end if;
c Whenever the user navigates between the order and inventory
windows, place the cursor in the first navigable item within the
current window.
- Define a When-Window-Activated trigger at form level. Use

ly
:system.event_window to identify the current window, and use
the GO_BLOCK built in to enforce navigation within the
appropriate window.
On
d Save and compile your form. Deploy your form to the Web to test.
se
2 In your CUSTOMERS form module, define triggers to manage tab page
I U
navigation.
a Using an appropriate trigger, disable the COMMENTS tab page
OA
l
whenever the COMMENTS item contains no text.
&
na
b The trigger should fire whenever the user navigates to another

r
e
record.

Int
cle
ra
O

......................................................................................................................................................
A-12 Oracle iDS Forms: Build Internet Applications II
Practice 5 Solutions
......................................................................................................................................................

- Modify the WHEN-NEW-RECORD-INSTANCE trigger. If the


item COMMENTS contains no data, use the built-in
SET_TAB_PAGE_PROPERTY to disable the COMMENTS
page. You may import the code from the pr5_1.txt file.
Declare
tb_pg_id TAB_PAGE;
Begin
tb_pg_id := FIND_TAB_PAGE(‘COMMENTS’);
If :s_customer.comments is null then
set_tab_page_property(‘comments’, enabled, property_false);
else
set_tab_page_property(‘comments’, enabled, property_true);
end if;
:GLOBAL.custid := s_customer.id;
End;
c Whenever the user moves from one tab page to another, ensure that
the mouse cursor is placed in the first navigable field within the
page.
- Define a WHEN-TAB-PAGE-CHANGED trigger. Identify the
current tab page with the :system.tab_new_page system
variable. Use the GO_ITEM built-in to place the cursor in the
first navigable field.
Begin
if :SYSTEM.tab_new_page = ‘ADDRESS’

nly
O
then GO_ITEM(‘s_customer.name’);
else if :SYSTEM.tab_new_page = ‘BILLING’
se
then GO_ITEM(‘s_customer.credit_rating’);
I U
A
else GO_ITEM(‘s_customer.comments’);
end if;

& O
l
end if;

n
End;
r a
te
d Save and compile your form. Deploy your form to the Web to test.

n
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-13
Appendix A: Practice Solutions
......................................................................................................................................................

If you have time


3 How can you ensure that the user is returned to the first navigable item
within a tab page after navigating from the last navigable item?
- You can use the ‘NEXT’ and ‘PREVIOUS’ navigation item
properties.
4 How can you enforce item navigation dynamically within a tab page?
- Use GO_ITEM in a KEY-NEXT-ITEM or KEY-PREV-ITEM
trigger.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
A-14 Oracle iDS Forms: Build Internet Applications II
Practice 6 Solutions
......................................................................................................................................................

Practice 6 Solutions
1 Create a server-side package containing a procedure to return a REF
cursor.
a Create the Orders_pkg package specification; you can import the
code from the pr6_1.txt file.
b Create the Orders_pkg package body; you can import the code from
the pr6_2.txt file.
- Use the Stored Procedure editor in Forms and import the code
from the files.
c Examine the Orders_pkg package body to identify required
parameter values.
- A value of ‘P’,’C’ or ‘S’ is passed to the REF cursor to determine
which query is required. The REF cursor can query on either
products, customers, or sales reps.
2 Open the ORDERREFCURSOR.fmb file and save as ORDREFXX where
XX is your student course number. This form contains a control block,
called CHOOSE, and a group of option buttons which allows the user to
specify a parameter value to be passed to the REF cursor.
a Create a data block called SELECTION and base it on the REF
cursor procedure that you have just created.
- Use the Data Block Wizard and select “Stored Procedures” for
data block type.
- Specify full procedure name:
‘orders_pkg.query_proc’
nly
- Press the Refresh button. Available columns will be displayed.

e O
s
- Select all as Database Items.
b Pass the name of the radio group as the value for the P_VIEW
I U
A
argument: ‘:choose.view_type’.
- For the P_VIEW argument, set the value to
‘:choose.view_type’
& O
al
- Select Finish to end the wizard.

ern
c In the layout editor, customize the canvas layout to ensure that

Int
SELECTION items are displayed to the left of the option buttons

e
group.

cl
d Save and compile your form. Deploy your form to the Web to test.

ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-15
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 7 Solutions
1 Create a data block based on a relational table with an object column.
aCreate a form called OBJ_COLXX where XX is your student course
number.
b Using the Data Block Wizard, create a block based on the
REL_EMP_TABLE_OBJCOL relational table.
c Select the columns ID, FIRST_NAME, and LAST_NAME.
d Expand the object column DEPT_ID and select the attributes ID and
NAME. Note the names that are given to the new items.
e In the Layout Wizard, select all available items for display. Change
the prompt for item DEPT_ID to Department ID and
DEPT_ID_NAME to Department Name. Use a form layout.
f Save, compile, and test your form.
If you have time
2 Create a block based on a relational table with an REF column, and
specify an LOV to populate the REF column.
a Create a form called REF_COLXX where XX is your student course
number.
b Create a block based on the REL_EMP_TABLE_REFCOL
relational table.
c Select the columns ID, FIRST_NAME, and LAST_NAME.
d Select the DEPT_ID attributes ID and NAME.

ly
- Note that there are two items called DEPT_ID. The first is
expandable and has the term “LOOKUP” in parentheses after
the name. The second represents the REF column value itself.
On
The REF item is included automatically when the LOV is
se
created.)
I U
e Create an LOV for the REF item DEPT_ID. Select the check box,
and select OO_DEPT_TABLE as the source for the LOV.
OA
l
f In the Layout Wizard, select all available items for display.
&
na
- The REF item DEPT_ID is included in the list of items in the
r
e
Object Navigator but is not included in the list of available items

nt
in the Layout Wizard.
I
e
g In the Object Navigator, identify the canvas with which item

cl
DEPT_ID is associated.

ra
O

......................................................................................................................................................
A-16 Oracle iDS Forms: Build Internet Applications II
Practice 7 Solutions
......................................................................................................................................................

- REF item values are normally not displayed, so by default the


REF item is assigned to the Null canvas.)
h In the Object Navigator, check that an LOV and associated record
group have been created.
i Save, compile, and test the form.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-17
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 8 Solutions
1 Open your ORDERS form and examine the properties of the relation
called S_ORD_S_ITEM.
a Note the deletion and coordination property values.
b Run the ORDERS form and test the way deletes are handled.
2 Implement a query coordination-type toggle.
a Add two check boxes to the control block with the following
properties:

Property Check Box 1 Check Box 2


Name IMMEDIATE AUTO_QUERY
Enabled Yes No
Label Immediate Auto Query
Value When Checked Y Y
Value When Unchecked N N
Check Box Mapping of CHECKED UNCHECKED
Other Value
Keyboard Navigable No No
Mouse Navigate No No
Data Type CHAR CHAR
Initial Value Y

nly Y
DataBase Item No

e O No
Canvas TOOLBAR

Us TOOLBAR

b Use the Layout Editor to position the check boxes appropriately in


AI
the Toolbar canvas.

& O
l
c Make sure that the first check box enables a user to toggle between

na
immediate coordination and deferred coordination. You can import

r
e
the code from the pr8_1.txt file.

Int
- When-Checkbox-Changed on CONTROL.IMMEDIATE

cle
ra
O

......................................................................................................................................................
A-18 Oracle iDS Forms: Build Internet Applications II
Practice 8 Solutions
......................................................................................................................................................

If GET_RELATION_PROPERTY( ’s_ord_s_item’,
DEFERRED_COORDINATION )
= ’FALSE’ Then
SET_RELATION_PROPERTY(’s_ord_s_item’,
DEFERRED_COORDINATION,
PROPERTY_TRUE);
SET_ITEM_PROPERTY(’control.auto_query’,
ENABLED,
PROPERTY_TRUE );
Else
SET_RELATION_PROPERTY(’s_ord_s_item’,
DEFERRED_COORDINATION,
PROPERTY_FALSE);
SET_ITEM_PROPERTY(’control.auto_query’,
ENABLED,
PROPERTY_FALSE );
End If;

d Make sure that the second check box enables a user to toggle
between automatic query and no automatic query for the detail
block. This check box should be disabled if the other check box
indicates immediate coordination. You can import the code from the
pr8_2.txt file.

ly
- When-Checkbox-Changed on CONTROL.AUTO_QUERY
If GET_RELATION_PROPERTY(’s_ord_s_item’,
On
e
AUTOQUERY ) = ’FALSE’ Then
SET_RELATION_PROPERTY(’s_ord_s_item’,
Us
AUTOQUERY, PROPERTY_TRUE );

AI
O
Else

&
SET_RELATION_PROPERTY(’s_ord_s_item’,

al AUTOQUERY, PROPERTY_FALSE);

rn
End If;

e
Int
e Save, compile, and test your form.

cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-19
Appendix A: Practice Solutions
......................................................................................................................................................

If you have time


3 Synchronize the check boxes at form startup.
a Open your ORDERS form module
b Create a procedure called SYNCHRONIZE_CHECKBOX. This
procedure synchronizes the IMMEDIATE and AUTO_QUERY
check boxes with the current default value. You can import the code
from the pr8_3.txt file.
- Procedure synchronize_checkbox IS
Begin
IF GET_RELATION_PROPERTY(’s_ord_s_item’',
DEFERRED_COORDINATION) = 'FALSE' Then
:control.immediate := ’Y’;
SET_ITEM_PROPERTY(’control.auto_query’,
ENABLED, PROPERTY_FALSE);
Else
:control.immediate := ’N’;
SET_ITEM_PROPERTY(’control.auto_query’,
ENABLED, PROPERTY_TRUE );
End If;
If GET_RELATION_PROPERTY(’s_ord_s_item’,
AUTOQUERY) = ’TRUE’ Then
:control.auto_query := ’Y’;

ly
Else
:control.auto_query := ’N’;
On
e
End If;
End;
Us
c Call this procedure from the When-New-Form-Instance trigger.
AI
d Save, compile, and run the module.

& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
A-20 Oracle iDS Forms: Build Internet Applications II
Practice 9 Solutions
......................................................................................................................................................

Practice 9 Solutions
1 Create a multiple-form application by linking the CUSTOMERS and the
SALESREP forms. The SALESREP form provides a look up facility for
:S_CUSTOMER.SALES_REP_ID. It replaces the SALES_REP_LOV
list of values. Values are selected by mouse double click.
a Open SALESREP form and save as SALESREPXX where XX is
your student course number.
b In your CUSTOMERS form, modify the code in the
SALES_LOV_BUTTON When-Button-Pressed trigger to call the
SALESREP form.
c Ensure that the user can see, but not navigate to, your CUSTOMERS
form, while the SALESREP form is open.
d Update :S_CUSTOMER.SALES_REP_ID with the value selected
by the user in the SALESREP form. The selected Sales Rep ID is
returned in a GLOBAL variable called “salesrepid”. This variable
contains either a valid value or the text “NOT SELECTED”.
- Ensure that you call your SALESREP form which is identified
by the XX suffix.
CALL_FORM(‘SALESREP’,no_hide);
If :global.salesrepid <> ‘NOT SELECTED’ then
:S_CUSTOMER.SALES_REP_ID :=
:global.salesrepid
End if;

ly
e Save and compile your form. Deploy your form to the Web to test.

2 Modify your multiple-form application to enable the SALESREP form


On
to be called in post mode only.
se
a Hide the CUSTOMERS form when the SALESREP form is
I U
displayed.
- Change your When-Button-Pressed trigger code for the
OA
l
SALES_LOV_BUTTON in the CUSTOMERS form:
&
na
CALL_FORM(‘SALESREP’,hide);

r
e
If :global.salesrepid <> ‘NOT 4SELECTED’ then

Int :S_CUSTOMER.SALES_REP_ID :=

e
:global.salesrepid

cl End if;

ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-21
Appendix A: Practice Solutions
......................................................................................................................................................

b In the SALESREP form, ensure that whenever the form has been
opened by ‘CALL_FORM’, that a [Commit Form] performs a POST.
- In a KEY-COMMIT trigger, define the following code:
If get_application_property(calling_form)
is not null then
post;
else
commit_form;
end if;
c Ensure that updates in SALESREP are not cleared when the user
exits the form.
- SALESREP form KEY-EXIT trigger
If get_application_property(calling_form)
is not null then
exit_form(do_commit,no_rollback);
else
exit_form;
end if;
d Save and compile your form. Deploy your form to the Web to test.

3 The SALESREP form displays a list of all employees; modify your


application to ensure that only Sales Representatives are displayed when

ly
the form is called from CUSTOMERS.
a Create a parameter called ‘EVERYONE’ in the SALESREP form.

On
e
Specify a default value of ‘Y’.
- Create a PARAMETER object, called “EVERYONE” in the
Us
I
Object Navigator. Define as character type CHAR, with a
default value of “Y”.
b Ensure that the SALESREP form will perform an unrestricted query
OA
l
whenever the parameter value = ‘Y’. If the parameter value = ‘S’, a
&
na
restricted query should be performed, selecting only Sales

r
e
Representatives.

Int
- Create a PRE-QUERY trigger :

cle
If :parameter.everyone = ‘S’ then

ra
O

......................................................................................................................................................
A-22 Oracle iDS Forms: Build Internet Applications II
Practice 9 Solutions
......................................................................................................................................................

:s_emp.title := Sales Representative’;


end if;
c In the CUSTOMERS form, pass the parameter value “S” to the
SALESREP form.
Create a parameter list called EMPS. Add the ‘EVERYONE’
parameter to the parameter list. The type of this parameter is
TEXT_PARAMETER, and it is initialized with the value “S”.
Pass the parameter list to the SALESREP form by using the
CALL_FORM built-in.
You can import the code from the pr9_1.txt file. Be sure to change
the name of the module in the CALL_FORM built-in.
- Insert the following code for the SALES_LOV_BUTTON
When-Button-Pressed trigger:
Declare
vpid PARAMLIST;
Begin
If not Id_Null(
Get_Parameter_List( ’EMPS’ ) ) Then
Destroy_Parameter_List(’EMPS’);
End If;
vpid := Create_Parameter_List(’EMPS’);
Add_Parameter( vpid, ’everyone’,
TEXT_PARAMETER,’S’);
Call_Form(’SALESREP’, Hide, No_Replace,
nly
O
No_Query_Only,

e
No_Share_Library_Data, ‘EMPS’ );
If :global.salesrepid = ‘NOT SELECTED’ then
Us
message(‘New Sales Rep not selected’);
AI
Else
:s_customer.sales_rep_id :=
& O
al :global.salesrepid;

ern End if;

Int
End;

e
d Save and compile your forms. Deploy your form to the Web to test.

cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-23
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 10 Solutions
1 Create a dynamic list item populated from a design-time query record
group. The record group will hold region ID and the name of the
departments in the S_DEPT table.
a Open the Employees form. Save as EmpXX where XX is your student
course number. In the Object Navigator, create a record group named
DEPT_ID based on the query below:
SELECT name || ‘ in region ’ ||
TO_CHAR(region_id) Name,
TO_CHAR(id) Id
FROM s_dept
UNION
SELECT ‘none’ Name, ‘0’ Id from dual
ORDER BY 1
b Convert the text item DEPT_ID into a list item, with a Poplist style.
Resize the list item in the Layout Editor.
c Create one element in the list item. Specify a label of ‘Dummy’ and a
value of ‘0’. Set the Mapping of Other Values property to ‘0’.
d Create a procedure called POPULATE_DEPT_LIST. This procedure
will accept the list item name as an argument and populate the list
item dynamically at run time, using the design-time query record
group.
You can import the code from the pr10_1.txt file.

ly
- Procedure Populate_Dept_List
p_list_item in varchar2) is

On
e
cst_rg_nom constant varchar2( 30 ) :=
Get_Item_Property(p_list_item,
Us
I
Item_Name );
Begin
OA
&
If Populate_Group( cst_rg_nom ) = 0 then

al
Populate_List( p_list_item, cst_rg_nom );

rn
End If;

e
Int
Copy(Get_List_Element_Value( p_list_item,1),
p_list_item);

cle
End;

ra
O

......................................................................................................................................................
A-24 Oracle iDS Forms: Build Internet Applications II
Practice 10 Solutions
......................................................................................................................................................

e Call the procedure each time a new record is created.


- When-Create-Record Trigger on the EMP Block:
Clear_List(‘S_Emp.Dept_Id’);
POPULATE_DEPT_LIST(‘S_Emp.Dept_Id’);
f Compile and save your form module. Test.

If you have time


2 Replace the design-time query record group in the Employee form with
a run-time query based record group.
a Delete the DEPT_ID record group and remove the code from the
When-Create-Record trigger.
b Create a procedure called CREATE_DEPT_LIST which will
dynamically create a record group called QDEPT, if it does not
already exist. The procedure will also populate the record group by
using the query:
SELECT name ||TO_CHAR(region_id) Name,
TO_CHAR(id) Id
FROM s_dept
UNION
SELECT ‘none’ Name, TO_CHAR(0) Id
FROM dual
ORDER BY 1

ly
c The procedure will also populate the list item S_EMP.DEPT_ID.
d You can import the procedure code from pr10_2.txt file.

On
e
- Procedure Create_Dept_List is
v_rg_id recordgroup;
Us
v_error number;
AI
Begin
rg_count number;

& O
al
v_rg_id := find_group(’qdept’);

ern if id_null(v_rg_id) then

Int v_rg_id :=

e
create_group_from_query(’qdept’,

cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-25
Appendix A: Practice Solutions
......................................................................................................................................................

’Select name||to_char(region_id),
to_char(id)
from s_dept
UNION
Select ‘‘none’’ Name, to_char(0) Id
from dual
order by 1');
end if;
v_error := populate_group(v_rg_id);
populate_list('s_emp.dept_id',v_rg_id);
Copy(Get_List_Element_Value('s_emp.dept_id',
1), 's_emp.dept_id');
End;
e Call the procedure from the When-Create-Record trigger.
- When-Create-Record Trigger on the S_EMP Block:
Create_Dept_List;
f Compile and save your form module. Test.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
A-26 Oracle iDS Forms: Build Internet Applications II
Practice 11 Solutions
......................................................................................................................................................

Practice 11 Solutions
1 Create a picklist by using the picklist class. This picklist enables the end
user to select order items from a product list, and to place selections in a
second list.
a Create a new form module, called PICKXX where XX is your student
course number. Open the Form_Builder_II.olb object
library. This library contains form objects and code for the picklist.
Copy the PICKLIST_BASIC object group to your form module.
Copy the PICKLIST object group into your new form module.
b Ensure the CONTROL block is the last defined data block in the
Object Navigator.
c Attach the picklist.pll library. This contains the functions
and procedures required for creating the picklist.
d Define a When-New-Form-Instance trigger which will create and
populate the picklist. You can import the code from the
pr11_1.txt file.
- Declare
dummy number;
Begin
Default_Value(‘Y’,’Global.where_cls’);
pick_list.create_picklist;
if :GLOBAL.where_cls = ‘Y’ then
dummy := pick_list.populate_picklist_with_query(
pick_list.list_in, ‘select name, id from
s_product ‘ order by 1’);
nly
O
else

e
dummy := pick_list.populate_picklist_with_query(
pick_list.list_in, ‘select name, id from
Us
I
s_product where ‘ || :GLOBAL.where_cls ||’ order
by 1’);
end if;
OA
l
pick_list.set_picklist_selection(
&
rna pick_list.list_in,1,null);
pick_list.display_picklist(pick_list.list_in);

nte pick_list.display_picklist(pick_list.list_out);

e I End;

cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-27
Appendix A: Practice Solutions
......................................................................................................................................................

Create the picklist with the picklist.Create_Picklist procedure.


Call function pick_list.Populate_Picklist_With_Query to populate
the List_in object. You must define a query that returns the ID, name
and suggested prices from the S_PRODUCT table.
Call pick_list.Set_Picklist_Selection procedure to select the first
element in the list.
Display both lists by using the pick_list.Display_Picklist procedure.
Exclude from the query any products already in the current S_ITEM
block. You should use the global variable :GLOBAL.where_cls.
e Save and compile your form. Deploy your form to the Web.
f In your ORDERS form, modify the When-Button-Pressed trigger for
the CONTROL.PRODUCT_LOV_BUTTON so that it calls your
new form module.
- Call_Form(’pickXX’, No_Hide );
g Save and compile your form. Deploy your form to the Web to test.

If you have time


2 In the ORDERS form, add a calendar on the S_ORD.DATE_ORDERED
item and S_ORD.DATE_SHIPPED item.
a From the calendar page of the Form_Builder_II.olb object
library, copy the calendar object group.
b Attach the PL/SQL library calendar.pll, which contains the

ly
Date_LOV package, to your module.

n
c Create a Key-Listval trigger on the date ordered item. Add code to
display the calendar using the Date_LOV package. You can import

e O
s
the code from the pr11_2.txt file.
- date_lov.get_date( sysdate, -- initial date
I U
A
’s_ord.date_ordered’, -- return block.item
240,
60,
-- window x position
-- window y position
& O
al ’Order Date’, -- window title

ern ’OK’, -- ok button label

t
’Cancel’, -- cancel button label

In TRUE, -- highlight weekend days

cle FALSE, -- autoconfirm selection

a
FALSE); -- autoskip after selection

Or

......................................................................................................................................................
A-28 Oracle iDS Forms: Build Internet Applications II
Practice 11 Solutions
......................................................................................................................................................

d Create a Key-Listval trigger on the date shipped item. Add code to


display the calendar using the Date_LOV package.You can import
the code from the pr11_3.txt file.
- date_lov.get_date( sysdate + 7, -- initial date
’s_ord.date_shipped’, -- return block.item
240, -- window x position
60, -- window y position
’Shipped Date’, -- window title
’OK’, -- ok button label
’Cancel’, -- cancel button label
TRUE, -- highlight weekend days
FALSE, -- autoconfirm selection
FALSE); -- autoskip after selection
e Save and compile your form module. Deploy your form to the Web
to test.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-29
Appendix A: Practice Solutions
......................................................................................................................................................

Practice 12 Solutions
1 Provide an alternative user interface for your Web-deployed forms by
including Pluggable Java Components (PJCs).
a Open the JAVAEMP.fmb form module. Save as JAVAXX.fmb,
where XX is your student course code.
b Change the :EMP.SAL item so that values are displayed as asterisks
at run time. Use the PJC ‘PasswordFieldPJC.class’.
This class file is held in the folder:
FORMS60_JAVADIR /oracle/forms/demos
- In the :EMP.SAL Property Palette, set the implementation class
to ‘oracle.forms.demos.PasswordFieldPJC’.
c Change the :EMP.ENAME item so that the mouse cursor changes to
‘hand’ style whenever the cursor is moved over the item. Use the
PJC ‘ModCursor.class’.
This class file is held in the folder:
FORMS60_JAVADIR /oracle/forms/demos
- In the :EMP.ENAME property palette, set the implementation
class to ‘oracle.forms.demos.ModCursor’.

d Use the built-in SET_CUSTOM_PROPERTY in an appropriate


trigger, to specify the cursor style:
SET_CUSTOM_PROPERTY(‘Emp.Ename’,1,
‘DOCURSOR’,‘HAND’);

ly
- In the When-New-Form-Instance trigger, include:

n
SET_CUSTOM_PROPERTY(‘EMP.ENAME’,1,
‘DOCURSOR’,‘HAND’);

e O
s
e Save and compile your form. Deploy your form to the Web to test.

I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
A-30 Oracle iDS Forms: Build Internet Applications II
Practice 12 Solutions
......................................................................................................................................................

2 Create a JavaBean area in the Layout Editor to enable users to specify


hyperlinks of their choice.
a Create a new data block called ‘LINK’ in your JAVAEMP form.
b Create a Bean Area called ‘HYPERLINK1’ in the new data block
and specify the class file ‘HyperLinkWrapper.class’.
- Create a new data block called ‘LINK’, and define a Bean Area
in the Layout editor. In the Bean Area property palette, set the
Implementation class to
‘oracle.forms.demos.HyperLinkWrapper’.

c Create an appropriate trigger to identify the user-supplied URL from


the JavaBean, and to download his or her Web page. You can import
the code from the pr12_1.txt file.
- Attach the When-Custom-Item-Event trigger to the Bean Area
and include the following code:
Declare
eventName varchar2(20) :=
:system.custom_item_event;
eventValues ParamList;
eventValueType number;
url varchar2(255);
Begin
eventValues := get_parameter_list(

ly
:system.custom_item_event_parameters);
if(eventName = ’LINKEVENT’) then
On
get_parameter_attr(eventValues,
se
U
’LINKEVENTDATA’,
eventValueType,url);

AI
O
web.show_document(url,’_blank’);

&
end if;

al
End;

ern
d

Int Create two text items, one called ‘URL’ to accept a URL and one
called ‘LABEL’ to accept a URL label. These will enable the user to

cle select a different URL. Set the maximum length for the URL text

a
item to 255.

Or

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-31
Appendix A: Practice Solutions
......................................................................................................................................................

- Create two text items, URL and LABEL, in the Data Block
‘LINK’.

e Create a push button with an appropriate trigger that will accept


values from the URL and LABEL text items, and pass them to the
JavaBean. You can import the code from the pr12_2.txt file.
Create a push button and add the following code to the
When-Button-Pressed trigger:
If(:URL is not null) and
(:LABEL is not null) then
set_custom_property(’HYPERLINK1’,1,
’LINKLABEL’, :label);
set_custom_property(’HYPERLINK1’,1,
’LINKURL’, :URL);
set_custom_property(’HYPERLINK1’,1,
’ACTIVECOLOR’,
’#8BFC5E’);
set_custom_property(’HYPERLINK1’,1,
’VISITEDCOLOR’,
’#DF37E1’);
set_custom_property(’HYPERLINK1’,1,
’NORMALCOLOR’,
’#F3F4AA’);
else
set_custom_property(’HYPERLINK1’,1,
nly
’LINKLABEL’,

e O
s
’Oracle Technet!’);
set_custom_property(’HYPERLINK1’,1,
I U
A
’LINKURL’,

O
’http://technet.oracle.com’);
end if;
l &
rna
e
f Save and compile your form. Deploy your form to the Web to test.

Int
cle
ra
O

......................................................................................................................................................
A-32 Oracle iDS Forms: Build Internet Applications II
Practice 13 Solutions
......................................................................................................................................................

Practice 13 Solutions
1 Create a stored procedure, and process error messages that may be
generated in the CUSTSERVER form.
a Open the CUSTSERVER form and save as CUSTSERVXX where
XX is your student course number. Copy the code in the
SELECT_CODE program unit and create a stored procedure called
SELECT_CUSTOMER. This procedure takes a user supplied value
from :CONTROL.NAME to check whether a customer name already
exists. Existing names will generate an error.
b Modify the When-Button-Pressed trigger for the CONTROL block
CHECK_CUSTOMER button, to trap any errors generated from the
stored procedure SELECT_CUSTOMER. If a customer already
exists, display a warning message to the user.
- Add the following code:
exception
when others then
message(sqlcode||’ ‘||sqlerrm);
raise form_trigger_failure;
c Save and compile your form module; test.

2 Whenever the user attempts to save a new customer record with an


existing primary key, display an appropriate warning message.
a Run your CUSTSERVER form. Attempt to insert a record with an
existing primary key. Note the generated error message.
nly
- Form - 40508 error code is generated

e O
s
b Define an appropriate trigger to trap the generated error message,
and display the database constraint violation message and error code.
I U
A
Ensure that any other generated messages will continue to be

O
displayed.

l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-33
Appendix A: Practice Solutions
......................................................................................................................................................

c Display all messages in an ALERT called ‘errors’.


- Define a form level ON-ERROR trigger and include the
following code:
Declare
nums number;
errmess varchar2(200);
v_constraint_name varchar2(255);
begin
if error_code = 40508 then
errmess := ’Constraint violation ’
||dbms_error_text||
’ (’||dbms_error_code||’)’;
else
errmess := error_type ||
to_char( -error_code ) ||
’: ’ || error_text;
end if;
set_alert_property(’errors’,
alert_message_text,
errmess);
nums := show_alert(’errors’);
End;

ly
d Save and compile your form module; test your form.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
A-34 Oracle iDS Forms: Build Internet Applications II
Practice 14 Solutions
......................................................................................................................................................

Practice 14 Solutions
1 Automatically ask the users if they want to commit after a set period of
time.
a Open your CUSTOMERS form module.
b At the startup of the form, create a global variable called
GLOBAL.LOCKS_PENDING. This will indicate at all times
whether rows of the S_CUSTOMER table are locked.
The default value is NULL. Append your new code to existing code.
- When-New-Form-Instance Trigger at Form Level
...
Default_Value( NULL, ’GLOBAL.locks_pending’);

c Create the On-Lock trigger to implement the default lock processing,


update the global variable, and create the timer. You can import the
code from the pr14_1.txt file.
- On-Lock Trigger at Form Level
Declare
timer_id TIMER;
Begin
LOCK_RECORD;
If FORM_SUCCESS then
If :GLOBAL.locks_pending IS NULL then

ly
:GLOBAL.locks_pending := ’TRUE’;
timer_id := CREATE_TIMER( ’locks’,
On
e
5000 );
End If;
Us
Else
AI
O
Raise Form_Trigger_Failure;
End If;
l &
End;

rna
e
d Display an alert if locks are still pending after a certain period of

Int
time elapses. This alert should ask the user to commit or roll back the
changes. The alert, ASK_SAVE, already exists in your form. Define

cle an appropriate trigger. You can import the code from the

ra pr14_2.txt file.

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-35
Appendix A: Practice Solutions
......................................................................................................................................................

- When-Timer-Expired Trigger at Form Level


If GET_APPLICATION_PROPERTY( TIMER_NAME ) =
’LOCKS’ then
If :GLOBAL.locks_pending is not NULL then
If SHOW_ALERT( ’ask_save’ ) =
ALERT_BUTTON1 then
COMMIT_FORM;
Else
CLEAR_FORM( no_validate );
End If;
If :SYSTEM.FORM_STATUS <> ’CHANGED’ then
DELETE_TIMER(’locks’);
End If;
End If;
End If;

e Create a Post-Database-Commit trigger to restore the NULL value to


the global variable. You can import the code from the pr14_3.txt
file.
- Post-Database-Commit Trigger at Form Level
:GLOBAL.locks_pending := NULL;
f Create the On-Rollback trigger to implement the default rollback
processing and restore the NULL value to the global variable. You
nly
O
can import the code from the pr14_4.txt file.
- On-Rollback Trigger at Form Level
se
Issue_Rollback(
I U
A
Get_Application_Property( savepoint_name ) );
If Form_Success then

& O
l
:Global.locks_pending := NULL;
End If;

rna
e
g Save and compile your form to test.

Int
cle
ra
O

......................................................................................................................................................
A-36 Oracle iDS Forms: Build Internet Applications II
Practice 15 Solutions
......................................................................................................................................................

Practice 15 Solutions
1 Create a chart object by using the Chart Wizard. This chart should
display the total orders for each customer.
a Open the ORDCHART form module. Save as ORDCHARTXX
where XX is your student course number. This form module contains
a S_ORD block. Only one item from this block is visible: TITLE.
This item displays a title for your chart.
b In the Layout Editor, use the Chart tool to drag a chart area onto the
canvas. Select “Use the Chart Wizard” from the New Chart Object
dialog box. Do not specify a title for the chart.
c Select Column as chart type, Plain as chart subtype.
d Specify the S_ORD block as the data block that contains the data
you want to assign to chart columns.
e Select CUSTOMER_NAME to appear on the Category (X) axis, and
TOTAL to appear on the Value (Y) axis of the chart.
f Click the Finish button.
g Save and compile your form module. Deploy your form to the Web
to test. To display the chart, click in the Title item on the Chart tab.

2 Create a report object based on the S_CUSTOMER block. This report


displays a customer list using a tabular layout. Display only the ID,
NAME, COUNTRY, and REGION_ID fields.
a Open the CUSTREPT form. Save as CUSTREPXX where XX is your
student course number.Create a new report object.

nly
O
- Select the Reports node in the Object Navigator.
- Click the Create icon.
se
- Specify a filename of ‘myreport’ and a block name.
I U
A
Click OK.
b This will invoke Report Builder. Within the Report Wizard:
Choose the report style Tabular.
& O
al
Select the ID, NAME, COUNTRY, and REGION_ID fields.

ern
Do not select fields to total.

Int Change labels and widths for your fields.


Select a template for your report.

cle c Save your report and exit Report Builder.

ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II A-37
Appendix A: Practice Solutions
......................................................................................................................................................

d Set the Execution Mode report object property to “runtime” and the
Report Destination Type report object property to “screen”. Rename
the report object to “my_report”.
- Display the Property Palette for the report object.
- Select Execution Mode and change the value to “RUNTIME”.
- Select Report Destination Type and change the value to
“SCREEN”.
e Create a button named CUST_REP_BUTTON in the control block.
Display this button on the CANVAS2 canvas.
f Create a When-Button-Pressed trigger on the
CUST_REP_BUTTON button to run the report.
- DECLARE
repid REPORT_OBJECT;
v_rep VARCHAR2(100);
rep_status VARCHAR2(20);
BEGIN
repid := FIND_REPORT_OBJECT(‘my_report’);
v_rep := RUN_REPORT_OBJECT(repid);
END;
g Change the Query All Record property value to Yes for the
S_CUSTOMER block.
h Save and compile your form module. Deploy your form to the Web

ly
to test. Query a customer record before calling the report.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
A-38 Oracle iDS Forms: Build Internet Applications II
................................

Table Descriptions
and Data

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

Summit Sporting Goods Database Diagram

ORD_ID
ID
S_ITEM S_ORD

PRODUCT_ID CUSTOMER_ID
SALES_REP_ID

S_INVENTORY
*
PRODUCT_ID
ID

ID ID
S_CUSTOMER
S_PRODUCT SALES_REP_ID

IMAGE_ID

ID ID ID

S_IMAGE S_EMP
DEPT_ID

nly
e O ID

S_DEPT Us
A I
*Unique occurrences are identified by PRODUCT_ID and
& O
WAREHOUSE_ID.
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-2 Oracle iDS Forms: Build Internet Applications II
S_CUSTOMER Description
.....................................................................................................................................................

S_CUSTOMER Description
Column Name Null? Datatype
-------------- --------- ------------- -----------------
ID NOT NULL NUMBER(7)
NAME NOT NULL VARCHAR2(50)
PHONE VARCHAR2(25)
ADDRESS VARCHAR2(400)
CITY VARCHAR2(30)
STATE VARCHAR2(20)
COUNTRY VARCHAR2(30)
ZIP_CODE VARCHAR2(75)
CREDIT_RATING VARCHAR2(9)
SALES_REP_ID NUMBER(7)
REGION_ID NUMBER(7)
COMMENTS VARCHAR2(255)

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-3
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_CUSTOMER Data

SQL> SELECT * FROM s_customer;

Id Name Phone Address


------ ------------------ ------------ -----------
City State Country
------------------ ---------------- -----------
Zip_code Credit_ra Sales_rep_id Region_id
---------- --------- ------------ ---------
Comments
--------------------------------------------------
201 Unisports 55-2066101 72 Via Bahia
Sao Paolo Brazil
Excellent 12 2
Customer usually orders large amounts and has a high order
total. This is okay as long as the credit rating remains
excellent.

202 Oj Athletics 6741 Takashi Blvd. 81-20101


Osaka Japan
Poor 14 4

ly
Customer should always pay by cash until his credit rating

n
improves.

e O
s
203 Delhi Sports 91-10351 11368 Chanakya
New Delhi India

I U
A
Good 14 4
Customer specializes in baseball equipment and is the largest

& O
l
retailer in India.

rna
nte
e I
cl
ra
O

......................................................................................................................................................
B-4 Oracle iDS Forms: Build Internet Applications II
S_CUSTOMER Data
.....................................................................................................................................................

Id Name Phone Address


------ ------------------ ------------ -----------
City State Country
------------------ ---------------- -----------
Zip_code Credit_ra Sales_rep_id Region_id
---------- --------- ------------ ---------
Comments
--------------------------------------------------
204 Womansport 1-206-104-0103 281 King Street
Seattle Washington USA
98101 EXCELLENT 11 1

205 Kam’s Sporting Goods 852-3692888 15 Henessey Road


Hong Kong EXCELLENT 15 4

206 Sportique 172 Rue de Rivoli 33-2257201


Cannes France
EXCELLENT 15 5
Customer specializes in soccer. Likes to order accessories in
bright colors.

207 Sweet Rock Sports 234-603620


nly 6 Saint Antoine
Lagos
e O Nigeria

Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-5
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

Id Name Phone Address


------ ------------------ ------------ -----------
City State Country
------------------ ---------------- -----------
Zip_code Credit_ra Sales_rep_id Region_id
---------- --------- ------------ ---------
Comments
--------------------------------------------------
208 Muench Sports 49-527454 435 Gruenestrasse
Stuttgart Germany
GOOD 15 5
Customer usually pays small orders by cash and large orders on
credit.

209 Beisbol Si! 809-352689 789 Playa Del Mar


San Pedro de Macon’s Dominican Republic
EXCELLENT 11 1

210 Futbol Sonora 52-404562 3 Via Saguaro


Nogales

ly
EXCELLENT 12 2
Customer is difficult to reach by phone. Try mail.

On
211 Kuhn’s Sports 42-111292
se 7 Modrany
Prague
I U Czechoslovakia
EXCELLENT 15
OA 5

l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
B-6 Oracle iDS Forms: Build Internet Applications II
S_CUSTOMER Data
.....................................................................................................................................................

Id Name Phone Address


------ ------------------ ------------ -----------
City State Country
------------------ ---------------- -----------
Zip_code Credit_ra Sales_rep_id Region_id
---------- --------- ------------ ---------
Comments
--------------------------------------------------
212 Hamada Sport 20-1209211 57A Corniche
Alexandria Egypt
EXCELLENT 13 3
Customer orders sea and water equipment.

213 Big John’s Sports 1-415-555-6281 4783 18th Street


Emporium
San Francisco CA USA
94117 EXCELLENT 11 1
Customer has a dependable credit record.

214 Ojibway Retail 1-716-555-7171 415 Main Street

ly
Buffalo NY USA
14202 POOR 11
On 1

se
U
215 Sporta Russia 7-3892456 6000 Yekatamina
St. Petersburg Russia

AI
O
POOR 15 5

&
This customer is very friendly, but has difficulty paying bills.

al
Insist upon cash.

ern
Int
le
Note: This display has been formatted.

c
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-7
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_DEPT Description and Data


Column Name Null? Datatype
---------------------- ------------- --------------
ID NOT NULL NUMBER(7)
NAME NOT NULL VARCHAR2(25)
REGION_ID NUMBER(7)

SQL> SELECT * FROM s_dept;

ID NAME REGION_ID
------ ---------------- -----------------
10 Finance 1
31 Sales 1
32 Sales 2
33 Sales 3
34 Sales 4
35 Sales 5
41 Operations 1
42 Operations 2
43 Operations 3
44 Operations 4
45 Operations 5
50 Administration 1

12 rows selected.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-8 Oracle iDS Forms: Build Internet Applications II
S_EMP Description
.....................................................................................................................................................

S_EMP Description
Column Name Null? Datatype
------------------------ -------------- --------------
ID NOT NULL NUMBER(7)
LAST_NAME NOT NULL VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
USERID VARCHAR2(8)
START_DATE DATE
COMMENT VARCHAR2(255)
MANAGER_ID NUMBER(7)
TITLE VARCHAR2(25)
DEPT_ID NUMBER(7)
SALARY NUMBER(11,2)
COMMISSION_PCT NUMBER(4,2)

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-9
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_EMP Data

SQL> SELECT * FROM s_emp;

ID LAST_NAME FIRST_NAME USERID START_DAT


---- ----------------- ---------------- -------- ---------
COMMENTS
--------------------------------------------------------------
MANAGER_ID TITLE DEPT_ID SALARY
---------- ---------------------------- ------- ------
COMMISSION_PCT
---------------
1 Velasquez Carmen cvelasqu 03-MAR-90
President 50 2500
2 Ngao LaDoris lngao 08-MAR-90
1 VP, Operations 41 1450

3 Nagayama Midori mnagayam 17-JUN-91


1 VP, Sales 31 1400

4 Quick-To-See Mark mquickto 07-APR-90


1 VP, Finance 10 1450

nly
O
5 Ropeburn Audry aropebur 04-MAR-90
1 VP, Administration
se 50 1550

I U
A
6 Urguhart Molly murguhar 18-JAN-91
2 Warehouse Manager

& O 41 1200

al
n
7 Menchu Roberta rmenchu 14-MAY-90

ter 2 Warehouse Manager 42 1250

In
8 Biri Ben bbiri 07-APR-90

le
2 Warehouse Manager 43 1100

rac 9 Catchpole Antoinette acatchpo 09-FEB-92

O 2 Warehouse Manager 44 1300

......................................................................................................................................................
B-10 Oracle iDS Forms: Build Internet Applications II
S_EMP Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID START_DAT


---- ----------------- ---------------- -------- ---------
COMMENTS
--------------------------------------------------------------
MANAGER_ID TITLE DEPT_ID SALARY
---------- ---------------------------- ------- ------
COMMISSION_PCT
---------------
10 Havel Marta mhavel 27-FEB-91
2 Warehouse Manager 45 1307

11 Magee Colin cmagee 14-MAY-90


3 Sales Representative 31 1400
10

12 Giljum Henry hgiljum 18-JAN-92


3 Sales Representative 32 1490
12.5

13 Sedeghi Yasmin ysedeghi 18-FEB-91


3 Sales Representative

nly 33 1515

O
10

se
U
14 Nguyen Mai mnguyen 22-JAN-92
3 Sales Representative
AI 34 1525
15

& O
al
15 Dumas Andre adumas 09-OCT-91

ern 3 Sales Representative 35 1450

Int 17.5

cle 16 Maduro Elena emaduro 07-FEB-92

ra 6 Stock Clerk 41 1400

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-11
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID START_DAT


---- ----------------- ---------------- -------- ---------
COMMENTS
--------------------------------------------------------------
MANAGER_ID TITLE DEPT_ID SALARY
---------- ---------------------------- ------- ------
COMMISSION_PCT
---------------
17 Smith George gsmith 08-MAR-90
6 Stock Clerk 41 940

18 Nozaki Akira anozaki 09-FEB-91


7 Stock Clerk 42 1200

19 Patel Vikram vpatel 06-AUG-91


7 Stock Clerk 42 795

20 Newman Chad cnewman 21-JUL-91


8 Stock Clerk 43 750

21 Markarian Alexander

nly amarkari 26-MAY-91

O
8 Stock Clerk 43 850

se
U
22 Chang Eddie echang 30-NOV-90
9 Stock Clerk

AI 44 800

23 Patel Radha
& O rpatel 17-OCT-90

al
9 Stock Clerk 34 795

ern
Int
24 Dancs Bela bdancs 17-MAR-91

e
10 Stock Clerk 45 860

cl
ra 25 Schwartz Sylvie sschwart 09-MAY-91

O 10 Stock Clerk 45 1100

Note: This display has been formatted.

......................................................................................................................................................
B-12 Oracle iDS Forms: Build Internet Applications II
S_ITEM Description
.....................................................................................................................................................

S_ITEM Description
Column Name Null? Datatype
------------------------- -------------- ----------
ORD_ID NOT NULL NUMBER(7)
ITEM_ID NOT NULL NUMBER(7)
PRODUCT_ID NOT NULL NUMBER(7)
PRICE NUMBER(11,2)
QUANTITY NUMBER(9)
QUANTITY_SHIPPED NUMBER(9)

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-13
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_ITEM Data

SQL> SELECT * FROM s_item;

ORD_ID ITEM_ID PRODUCT_ID PRICE QUANTITY QUANTITY_SHIPPED


------ -------- ----------- ------ -------- -----------------
100 1 10011 135 500 500
100 2 10013 380 400 400
100 3 10021 14 500 500
100 5 30326 582 600 600
100 7 41010 8 250 250
100 6 30433 20 450 450
100 4 10023 36 400 400
101 1 30421 16 15 15
101 3 41010 8 20 20
101 5 50169 4.29 40 40
101 6 50417 80 27 27
101 7 50530 45 50 50
101 4 41100 45 35 35
101 2 40422 50 30 30
102 1 20108 28 100 100
102 2 202011 23 45 45
103 1 30433 20 15 15
103 2 32779 7 11 11
104 1 20510 9 7 7
104 4 30421 16 35 35

ly
104 2 20512 8 12 12
104
105
3
1
30321
50273
1669 19
22.8 16
19
16
On
105 3 50532 47 28
se
28
105 2 50419 80 13

I U13

OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
B-14 Oracle iDS Forms: Build Internet Applications II
S_ITEM Data
.....................................................................................................................................................

ORD_ID ITEM_ID PRODUCT_ID PRICE QUANTITY QUANTITY_SHIPPED


------- ------- ----------- ------ -------- -----------------
106 1 20108 28 46 46
106 4 50273 22.89 75 75
106 5 50418 75 98 98
106 6 50419 80 27 27
106 2 20201 123 21 21
106 3 50169 4.29 125 125
107 1 20106 11 50 50
107 3 20201 115 130 130
107 5 30421 16 55 55
107 4 30321 1669 75 75
107 2 20108 28 22 22
108 1 20510 9 9 9
108 6 41080 35 50 50
108 7 41100 45 42 42
108 5 32861 60 57 57
108 2 20512 8 18 18
108 4 32779 7 60 60
108 3 30321 1669 85 85
109 1 10011 140 150 150
109 5 30426 18.25 500 500
109 7 50418 75 43 43
109 6 32861 60 50 50

ly
109 4 30326 582 1500 1500
109
109
2
3
10012
10022
175

On
600
21.95 300
600
300
110 1 50273
se
22.89 17 17

U
110 2 50536 50 23 23
111
111
1
2
40421
41080
AI
65
35
27
29
27
29
97 1 20106

& O 9 1000 1000

l
97 2 303211 500 50 50
98

r
99
na 1
1
404218
20510
5
9
7
18
7
18

nte
99 2 20512 8 25 25

I
99 3 50417 80 53 53

cle 99 4 50530 45 69 69

ra
O
Note: This display has been formatted.

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-15
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_ORD Description and Data


Column Name Null? Datatype
------------------------ ------ ---------------------
ID NOT NULL NUMBER(7)
CUSTOMER_ID NOT NULL NUMBER(7)
DATE_ORDERED DATE
DATE_SHIPPED DATE
SALES_REP_ID NUMBER(7)
TOTAL NUMBER(11,2)
PAYMENT_TYPE VARCHAR2(6)
ORDER_FILLED VARCHAR2(1)

SQL> SELECT * FROM s_ord;

ID CUSTOMER_ID DATE_ORDE DATE_SHIPSALES_REP_IDTOTAL PAYMEN ORDER_F


--- ----------- --------- ---------------------------------- ------
100 204 31-AUG92 10-SEP-9211 601100 CREDIT Y
101 205 31-AUG-92 15-SEP-9214 8056.6 CREDIT Y
102 206 01-SEP-92 08-SEP-9215 8335 CREDIT Y
103 208 02-SEP-92 22-SEP-9215 377 CASH Y
104 208 03-SEP-92 23-SEP-9215 32430 CREDIT Y
105 209 04-SEP-92 18-SEP-9211 2722.24 CREDIT Y
106 210 07-SEP-92 15-SEP-9212 15634 CREDIT Y
107 211 07-SEP-92 21-SEP-9215 142171 CREDIT Y
108 212 07-SEP-92 10-SEP-9213 149570 CREDIT Y
109 213 08-SEP-92 28-SEP-9211 1020935 CREDIT Y

ly
110 214 09-SEP-92 21-SEP-9211 1539.13 CASH Y
111 204 09-SEP-92 21-SEP-9211 2770 CASH Y
97
98
201
202
28-AUG-92
31-AUG-92
17-SEP-9212
10-SEP-9214
On
84000
595
CREDIT
CASH
Y
Y
99 203 31-AUG-92 18-SEP-9214

se 7707 CREDIT Y

U
112 210 31-AUG-92 10-SEP-9212 550 CREDIT Y

16 rows selected.

AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-16 Oracle iDS Forms: Build Internet Applications II
S_PRODUCT Description
.....................................................................................................................................................

S_PRODUCT Description
Column Name Null? Datatype
---------------------------------- -----------------
ID NOT NULL NUMBER(7)
NAMENOT NULL VARCHAR2(50)
SHORT_DESC VARCHAR2(255)
LONGTEXT_ID NUMBER(7)
IMAGE_ID NUMBER(7)
SUGGESTED_WHLSL_PRICE NUMBER(11,2)
WHLSL_UNITS VARCHAR2(25)

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-17
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_PRODUCT Data

SQL> SELECT * FROM s_product;

ID NAME SHORT_DESC LONGTEXT_ID


---- -------------------------- -----------
IMAGE_ID SUGGESTED_WHLSL_PRICEWHLSL_UNITS
-------- --------------------------------
10011 Boot Beginner’s ski boot 518
1001 150

10012 Ace Ski BootIntermediate ski boot519


1002 200

10013 Pro Ski BootAdvanced ski boot 520


1003 410

10021 Bunny Ski PoleBeginner’s ski pole528


1011 16.25

10022 Ace Ski PoleIntermediate ski pole529


1012 21.95

10023 Pro Ski PoleAdvanced ski pole 530


1013 40.95

ly
20106 Junior Soccer BallJunior soccer ball613
11

On
20108 World Cup Soccer BallWorld cup soccer ball615
se
U
28

20201 World Cup NetWorld cup net


AI 708
123

& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-18 Oracle iDS Forms: Build Internet Applications II
S_PRODUCT Data
.....................................................................................................................................................

ID NAME SHORT_DESC LONGTEXT_ID


---- ---------------------------------------
IMAGE_IDSUGGESTED_WHLSL_PRICEWHLSL_UNITS
----------------------------------------
20510 Black Hawk Knee pads, pair 1017
Knee Pads 9

20512Black Hawk Elbow pads, pair 1019


Elbow Pads 8

30321 Grand Prix Bicycle Road bicycle828


1291 1669

30326 Himalaya BicycleMountain bicycle833


1296 582

30421 Grand Prix Road bicycle tires927


Bicycle Tires16

30426 Himalaya TiresMountain bicycle tires933


18.25

30433New Air PumpTire pump 940


20

32779 Slaker Water Water bottle 1286

ly
Bottle 7

32861 Safe-T HelmetBicycle helmet 1368


On
1829 60
se
40421 Alexeyer ProStraight bar
I U
928

1381
Lifting Bar
65
OA
l &
1382
rna
40422 Pro Curling BarCurling bar
50
929

nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-19
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID NAME SHORT_DESC LONGTEXT_ID


---- ---------------------------------------
IMAGE_ID SUGGESTED_WHLSL_PRICEWHLSL_UNITS
-------- --------------------------------
40421 Alexeyer ProStraight bar 928
Lifting Bar
1381 65

40422 Pro Curling BarCurling bar 929


1382 50

41010 Prostar 10 Ten pound weight 517


Pound Weight
8

41020 Prostar 20 Twenty pound weight527


Pound Weight
12

41050 Prostar 50 Fifty pound weight557


Pound Weight
25

41080 Prostar 80 Eighty pound weight587


Pound Weight
35

41100 Prostar 100 One hundred pound 607


nly
Pound Weightweight

e O
s
45

I U
A
50169 Major League Baseball 676

O
Baseball

&
1119 4.29

al
ern
Int
cle
ra
O

......................................................................................................................................................
B-20 Oracle iDS Forms: Build Internet Applications II
S_PRODUCT Data
.....................................................................................................................................................

ID NAME SHORT_DESC LONGTEXT_ID


---- -----------------------------------------
IMAGE_IDSUGGESTED_WHLSL_PRICEWHLSL_UNITS
----------------------------------------
50273Chapman HelmetBatting helmet 780
1223 22.89

50417 Griffey GloveOutfielder’s glove 924


1367 80

50418 Alomar GloveInfielder’s glove 925


1368 75

50419 Steinbach GloveCatcher’s glove 926


1369 80

50530Cabrera Bat Thirty inch bat 1037


1480 45

50532 Puckett Bat Thirty-two inch bat 1039


1482 47

50536 Winfield BatThirty-six inch bat 1043


1486 50

Note: This display has been formatted.


nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-21
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

S_REGION Description and Data


Column Name Null? Datatype
------------------------------ ----------------
ID NOT NULL NUMBER(7)
NAME NOT NULL VARCHAR2(50)

SQL> SELECT * FROM s_region;

ID NAME
--- --------------------------
1 North America
2 South America
3 Africa / Middle East
4 Asia
5 Europe

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-22 Oracle iDS Forms: Build Internet Applications II
S_TITLE Description and Data
.....................................................................................................................................................

S_TITLE Description and Data


Column Name Null? Datatype
---------------------------------- ----------------
TITLE NOT NULL VARCHAR2(25)

SQL> SELECT * FROM s_title;

TITLE
------------------------
President
Sales Representative
Stock Clerk
VP, Administration
VP, Finance
VP, Operations
VP, Sales
Warehouse Manager

8 rows selected.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-23
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

Oracle8i Objects: Types, Tables


emp_type_ObjCol
Name Null? Type
-------------------- ------------- ----------------
ID NUMBER(7)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
USERID VARCHAR2(8)
START_DATE DATE
MANAGER_ID NUMBER(7)
TITLE VARCHAR2(25)
DEPT_ID DEPT_TYPE
SALARY NUMBER(11,2)
COMMISSION_PCT NUMBER(4,2)

emp_type_RefCol
Name Null? Type
-------------------- ------------- ----------------
ID NUMBER(7)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
USERID VARCHAR2(8)

ly
START_DATE DATE
MANAGER_ID
On NUMBER(7)

e
TITLE VARCHAR2(25)
DEPT_ID
Us REF OF DEPT_TYPE
SALARY

AI NUMBER(11,2)

O
COMMISSION_PCT NUMBER(4,2)

dept_type
l &
na
---------------------------------

r
----------------

e
ID NUMBER

Int
NAME VARCHAR2(25)

cle REGION_ID NUMBER(7)

ra
O

......................................................................................................................................................
B-24 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

Tables

oo_emp_Table_ObjCol
Name Null? Type
-------------------- ------------- ----------------
ID NUMBER(7)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
USERID VARCHAR2(8)
START_DATE DATE
MANAGER_ID NUMBER(7)
TITLE VARCHAR2(25)
DEPT_ID DEPT_TYPE
SALARY NUMBER(11,2)
COMMISSION_PCT NUMBER(4,2)
ID LAST_NAME FIRST_NAME USERID
--------- --------------------- --------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
-----------------------------------------------------------
SALARY COMMISSION_PCT

ly
---------- --------------

n
1Velasquez Carmencvelasqu
03-MAR-90 President

e O
s
DEPT_TYPE(50, ’Administration’, 1)
2500
I U
2Ngao
OA
LaDorislngao
08-MAR-90
l & 1 VP Operations

na
DEPT_TYPE(41, ’Operations’, 1)

r
te
1450

In
cle 3Nagayama Midorimnagayam

a
17-JUN-91 1 VP Sales

Or
DEPT_TYPE(31, ’Sales’, 1)
1400

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-25
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- ----------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
4 Quick-To-See Mark mquickto
07-APR-90 1 VP Finance
DEPT_TYPE(10, ’Finance’, 1)
1450

5 Ropeburn Audry aropebur


04-MAR-90 1 VP Administration
DEPT_TYPE(50, ’Administration’, 1)
1550

6 Urguhart Molly murguhar


18-JAN-91 2 Warehouse Manager
DEPT_TYPE(41, ’Operations’, 1)
1200

nly
O
7 Menchu Roberta rmenchu

e
14-MAY-90 2 Warehouse Manager
DEPT_TYPE(42, ’Operations’, 2)
Us
1250

AI
8 Biri Ben bbiri
& O
al
07-APR-90 2 Warehouse Manager

rn
DEPT_TYPE(43, ’Operations’, 3)

e
Int 1100

cle 9 Catchpole Antoinette acatchpo

ra 09-FEB-92 2 Warehouse Manager

O DEPT_TYPE(44, ’Operations’, 4)
1300

......................................................................................................................................................
B-26 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- ------------------------------ --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
10 Havel Marta mhavel
27-FEB-91 2 Warehouse Manager
DEPT_TYPE(45, ’Operations’, 5)
1307

11 Magee Colin cmagee


14-MAY-90 3 Sales Representative
DEPT_TYPE(31, ’Sales’, 1)
1400 10

12 Giljum Henry hgiljum


18-JAN-92 3 Sales Representative
DEPT_TYPE(32, ’Sales’, 2)
1490 13

nly
O
13 Sedeghi Yasmin ysedeghi

e
18-FEB-91 3 Sales Representative
DEPT_TYPE(33, ’Sales’, 3)
Us
1515 10

AI
14 Nguyen Mai mnguyen
& O
22-JAN-92
al 3 Sales Representative

rn
DEPT_TYPE(34, ’Sales’, 4)

e
Int
1525 15

cle 15 Dumas Andre adumas

ra
09-OCT-91 3 Sales Representative

ODEPT_TYPE(35, ’Sales’, 5)
145018

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-27
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- -------------- --------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
16 Maduro Elena emaduro
07-FEB-92 6 Stock Clerk
DEPT_TYPE(41, ’Operations’, 1)
1400

17 Smith George gsmith


08-MAR-90 6 Stock Clerk
DEPT_TYPE(41, ’Operations’, 1)
940

18 Nozaki Akira anozaki


09-FEB-91 7 Stock Clerk
DEPT_TYPE(42, ’Operations’, 2)
1200

nly
O
19 Patel Vikram vpatel

e
06-AUG-91 7 Stock Clerk
DEPT_TYPE(42, ’Operations’, 2)
Us
795

AI
20 Newman Chad
& O cnewman

al
21-JUL-91 8 Stock Clerk

rn
DEPT_TYPE(43, ’Operations’, 3)

e
Int 750

cle 21 Markarian Alexander amarkari

ra 26-MAY-91 8 Stock Clerk

O DEPT_TYPE(43, ’Operations’, 3)
850

......................................................................................................................................................
B-28 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- ------------------------------ --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
22 Chang Eddie echang
30-NOV-90 9 Stock Clerk
DEPT_TYPE(44, ’Operations’, 4)
800

23 Patel Radha rpatel


17-OCT-90 9 Stock Clerk
DEPT_TYPE(34, ’Sales’, 4)
795

24 Dancs Bela bdancs


17-MAR-91 10 Stock Clerk
DEPT_TYPE(45, ’Operations’, 5)
860

nly
O
25 Schwartz Sylvie sschwart

e
09-MAY-91 10 Stock Clerk
DEPT_TYPE(45, ’Operations’, 5)
Us
1100

AI
oo_emp_Table_RefCol
& O
Name

al Null? Type

n
------------------------------ ----------------
ID

ter NUMBER(7)

In
LAST_NAME VARCHAR2(25)

le
FIRST_NAME

c
VARCHAR2(25)

a
USERID VARCHAR2(8)

Or
START_DATE
MANAGER_ID
DATE
NUMBER(7)
TITLE VARCHAR2(25)

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-29
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

DEPT_ID REF OF DEPT_TYPE


SALARY NUMBER(11,2)
COMMISSION_PCTNUMBER(4,2)

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
1 Velasquez Carmen cvelasqu
03-MAR-90 President
0000220208447F54A9ED64676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
2500

2 Ngao LaDoris lngao


08-MAR-90 1 VP Operations
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408
002072C15B

ly
1450

3 Nagayama Midori mnagayam


On
17-JUN-91 1 VP Sales
se
0000220208447F54A9ED5A676AE03408002072C15B447F54A9ED55676AE03408
I U
A
002072C15B
1400

& O
al
n
4 Quick-To-See Mark mquickto

er
07-APR-90 1 VP Finance

t
In
0000220208447F54A9ED59676AE03408002072C15B447F54A9ED55676AE03408

e
002072C15B

cl 1450

ra
O 5 Ropeburn
04-MAR-90 1 VP Administration
Audry aropebur

0000220208447F54A9ED64676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1550
......................................................................................................................................................
B-30 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- ------------------ --------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
6 Urguhart Molly murguhar
18-JAN-91 2 Warehouse Manager
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1200

9 Catchpole Antoinette acatchpo


09-FEB-92 2 Warehouse Manager
0000220208447F54A9ED62676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1300

10 Havel Marta mhavel

ly
27-FEB-91 2 Warehouse Manager
0000220208447F54A9ED63676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
On
1307
se
I U
A
11 Magee Colin cmagee
14-MAY-90 3 Sales Representative

& O
l
0000220208447F54A9ED5A676AE03408002072C15B447F54A9ED55676AE03408
002072C15B

rna
e
1400 10

Int
e
13 Sedeghi Yasmin ysedeghi

cl
18-FEB-91 3 Sales Representative

ra
0000220208447F54A9ED5C676AE03408002072C15B447F54A9ED55676AE03408

O
002072C15B
1515 10

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-31
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- ------------------ --------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
14 Nguyen Mai mnguyen
22-JAN-92 3 Sales Representative
0000220208447F54A9ED5D676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1525 15

15 Dumas Andre adumas


09-OCT-91 3 Sales Representative
0000220208447F54A9ED5E676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1450 18

16 Maduro Elena emaduro


07-FEB-92 6 Stock Clerk

ly
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408

n
002072C15B
1400

e O
Us
I
17 Smith George gsmith

A
08-MAR-90 6 Stock Clerk
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408

& O
l
002072C15B
940

rna
nte
18 Nozaki Akira anozaki

e I
09-FEB-91 7 Stock Clerk

cl
0000220208447F54A9ED60676AE03408002072C15B447F54A9ED55676AE03408

ra
002072C15B

O 1200

......................................................................................................................................................
B-32 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
19 Patel Vikram vpatel
06-AUG-91 7 Stock Clerk
0000220208447F54A9ED60676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
795

20 Newman Chad cnewman


21-JUL-91 8 Stock Clerk
0000220208447F54A9ED61676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
750

21 Markarian Alexander amarkari


26-MAY-91 8 Stock Clerk

ly
0000220208447F54A9ED61676AE03408002072C15B447F54A9ED55676AE03408

n
002072C15B
850

e O
Us
I
22 Chang Eddie echang

A
30-NOV-90 9 Stock Clerk
0000220208447F54A9ED62676AE03408002072C15B447F54A9ED55676AE03408

& O
l
002072C15B
800

rna
nte
23 Patel Radha rpatel

e I
17-OCT-90 9 Stock Clerk

cl
0000220208447F54A9ED5D676AE03408002072C15B447F54A9ED55676AE03408

ra
002072C15B

O 795

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-33
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
24 Dancs Bela bdancs
17-MAR-91 10 Stock Clerk
0000220208447F54A9ED63676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
860

25 Schwartz Sylvie sschwart


09-MAY-91 10 Stock Clerk
0000220208447F54A9ED63676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1100

oo_dept_table
Name Null? Type
-------------------- ------------- ----------------
ID

nly NUMBER

O
NAME VARCHAR2(25)

e
REGION_ID NUMBER(7)

Us
AI
O
ID NAME REGION_ID

&
-------------------- ------------- ----------------
10
al Finance 1
31

ern Sales 1
32
33
Int Sales
Sales
2
3
34
cle Sales 4

ra
35 Sales 5

O41
42
Operations
Operations
1
2
43 Operations 3

......................................................................................................................................................
B-34 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

44 Operations 4
45 Operations 5
50 Administration 1

rel_emp_Table_Objcol
Name Null? Type
-------------------- ------------- ----------------
ID NUMBER(7)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
USERID VARCHAR2(8)
START_DATE DATE
MANAGER_ID NUMBER(7)
TITLE VARCHAR2(25)
DEPT_ID DEPT_TYPE
SALARY NUMBER(11,2)
COMMISSION_PCT NUMBER(4,2)

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE

ly
--------- ---------- -------------------------

n
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------

e O
s
SALARY COMMISSION_PCT
---------- --------------
I U
A
1 Velasquez Carmen cvelasqu
03-MAR-90 President

& O
l
DEPT_TYPE(50, ’Administration’, 1)
2500

rna
nte
I
2 Ngao LaDoris lngao

le
08-MAR-90 1 VP Operations

c
a
DEPT_TYPE(41, ’Operations’, 1)

Or 1450

3 Nagayama Midori mnagayam


17-JUN-91 1 VP Sales
DEPT_TYPE(31, ’Sales’, 1)
1400
......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-35
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
4 Quick-To-See Mark mquickto
07-APR-90 1 VP Finance
DEPT_TYPE(10, ’Finance’, 1)
1450

5 Ropeburn Audry aropebur


04-MAR-90 1 VP Administration
DEPT_TYPE(50, ’Administration’, 1)
1550

6 Urguhart Molly murguhar


18-JAN-91 2 Warehouse Manager
DEPT_TYPE(41, ’Operations’, 1)
1200

nly
O
7 Menchu Roberta rmenchu

e
14-MAY-90 2 Warehouse Manager
DEPT_TYPE(42, ’Operations’, 2)
Us
1250

AI
8 Biri Ben bbiri
& O
07-APR-90
al 2 Warehouse Manager

rn
DEPT_TYPE(43, ’Operations’, 3)

e
Int
1100

cle 9 Catchpole Antoinette acatchpo

ra
09-FEB-92 2 Warehouse Manager

ODEPT_TYPE(44, ’Operations’, 4)
1300

......................................................................................................................................................
B-36 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
10 Havel Marta mhavel
27-FEB-91 2 Warehouse Manager
DEPT_TYPE(45, ’Operations’, 5)
1307

11 Magee Colin cmagee


14-MAY-90 3 Sales Representative
DEPT_TYPE(31, ’Sales’, 1)
1400 10

12 Giljum Henry hgiljum


18-JAN-92 3 Sales Representative
DEPT_TYPE(32, ’Sales’, 2)
1490 13

nly
O
13 Sedeghi Yasmin ysedeghi

e
18-FEB-91 3 Sales Representative
DEPT_TYPE(33, ’Sales’, 3)
Us
1515 10

AI
14 Nguyen Mai mnguyen
& O
22-JAN-92
al 3 Sales Representative

rn
DEPT_TYPE(34, ’Sales’, 4)

e
1525

Int 15

cle 15 Dumas Andre adumas

ra
09-OCT-91 3 Sales Representative

O
DEPT_TYPE(35, ’Sales’, 5)
1450 18

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-37
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
16 Maduro Elena emaduro
07-FEB-92 6 Stock Clerk
DEPT_TYPE(41, ’Operations’, 1)
1400

17 Smith George gsmith


08-MAR-90 6 Stock Clerk
DEPT_TYPE(41, ’Operations’, 1)
940

18 Nozaki Akira anozaki


09-FEB-91 7 Stock Clerk
DEPT_TYPE(42, ’Operations’, 2)
1200

nly
O
19 Patel Vikram vpatel

e
06-AUG-91 7 Stock Clerk
DEPT_TYPE(42, ’Operations’, 2)
Us
795

AI
20 Newman Chad
& O cnewman
21-JUL-91
al 8 Stock Clerk

rn
DEPT_TYPE(43, ’Operations’, 3)

e
Int
750

cle 21 Markarian Alexander amarkari

ra
26-MAY-91 8 Stock Clerk

ODEPT_TYPE(43, ’Operations’, 3)
850

......................................................................................................................................................
B-38 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
22 Chang Eddie echang
30-NOV-90 9 Stock Clerk
DEPT_TYPE(44, ’Operations’, 4)
800

23 Patel Radha rpatel


17-OCT-90 9 Stock Clerk
DEPT_TYPE(34, ’Sales’, 4)
795

24 Dancs Bela bdancs


17-MAR-91 10 Stock Clerk
DEPT_TYPE(45, ’Operations’, 5)
860

nly
O
25 Schwartz Sylvie sschwart

e
09-MAY-91 10 Stock Clerk
DEPT_TYPE(45, ’Operations’, 5)
Us
1100

AI
rel_emp_Table_RefCol
& O
Name

al Null? Type

n
-------------------- ------------- ----------------
ID

ter NUMBER(7)

In
LAST_NAME VARCHAR2(25)

le
FIRST_NAME

c
VARCHAR2(25)

a
USERID VARCHAR2(8)

Or
START_DATE
MANAGER_ID
DATE
NUMBER(7)
TITLE VARCHAR2(25)

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-39
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

DEPT_ID REF OF DEPT_TYPE


SALARY NUMBER(11,2)
COMMISSION_PCT NUMBER(4,2)

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-40 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
1 Velasquez Carmen cvelasqu
03-MAR-90 President
0000220208447F54A9ED64676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
2500

2 Ngao LaDoris lngao


08-MAR-90 1 VP Operations
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1450

3 Nagayama Midori mnagayam


17-JUN-91 1 VP Sales

ly
0000220208447F54A9ED5A676AE03408002072C15B447F54A9ED55676AE03408

n
002072C15B
1400

e O
Us
I
4 Quick-To-See Mark mquickto

A
07-APR-90 1 VP Finance
0000220208447F54A9ED59676AE03408002072C15B447F54A9ED55676AE03408

& O
l
002072C15B
1450

rna
nte
5 Ropeburn Audry aropebur

e I
04-MAR-90 1 VP Administration

cl
0000220208447F54A9ED64676AE03408002072C15B447F54A9ED55676AE03408

ra
002072C15B

O 1550

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-41
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
6 Urguhart Molly murguhar
18-JAN-91 2 Warehouse Manager
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1200

9 Catchpole Antoinette acatchpo


09-FEB-92 2 Warehouse Manager
0000220208447F54A9ED62676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1300

10 Havel Marta mhavel


27-FEB-91 2 Warehouse Manager

ly
0000220208447F54A9ED63676AE03408002072C15B447F54A9ED55676AE03408

n
002072C15B
1307

e O
Us
I
11 Magee Colin cmagee

A
14-MAY-90 3 Sales Representative
0000220208447F54A9ED5A676AE03408002072C15B447F54A9ED55676AE03408

& O
l
002072C15B
1400

rna 10

nte
13 Sedeghi Yasmin ysedeghi

e I
18-FEB-91 3 Sales Representative

cl
0000220208447F54A9ED5C676AE03408002072C15B447F54A9ED55676AE03408

ra
002072C15B

O 1515 10

......................................................................................................................................................
B-42 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
14 Nguyen Mai mnguyen
22-JAN-92 3 Sales Representative
0000220208447F54A9ED5D676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1525 15

15 Dumas Andre adumas


09-OCT-91 3 Sales Representative
0000220208447F54A9ED5E676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1450 18

16 Maduro Elena emaduro


07-FEB-92 6 Stock Clerk

ly
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408

n
002072C15B
1400

e O
Us
I
17 Smith George gsmith

A
08-MAR-90 6 Stock Clerk
0000220208447F54A9ED5F676AE03408002072C15B447F54A9ED55676AE03408

& O
l
002072C15B
940

rna
nte
18 Nozaki Akira anozaki

e I
09-FEB-91 7 Stock Clerk

cl
0000220208447F54A9ED60676AE03408002072C15B447F54A9ED55676AE03408

ra
002072C15B

O 1200

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-43
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
19 Patel Vikram vpatel
06-AUG-91 7 Stock Clerk
0000220208447F54A9ED60676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
795

20 Newman Chad cnewman


21-JUL-91 8 Stock Clerk
0000220208447F54A9ED61676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
750

21 Markarian Alexander amarkari


26-MAY-91 8 Stock Clerk

ly
0000220208447F54A9ED61676AE03408002072C15B447F54A9ED55676AE03408

n
002072C15B
850

e O
Us
I
22 Chang Eddie echang

A
30-NOV-90 9 Stock Clerk
0000220208447F54A9ED62676AE03408002072C15B447F54A9ED55676AE03408

& O
l
002072C15B
800

rna
nte
23 Patel Radha rpatel

e I
17-OCT-90 9 Stock Clerk

cl
0000220208447F54A9ED5D676AE03408002072C15B447F54A9ED55676AE03408

ra
002072C15B

O 795

......................................................................................................................................................
B-44 Oracle iDS Forms: Build Internet Applications II
Oracle8i Objects: Types, Tables
.....................................................................................................................................................

ID LAST_NAME FIRST_NAME USERID


---------- --------------------------------- --------
START_DAT MANAGER_ID TITLE
--------- ---------- -------------------------
DEPT_ID(ID, NAME, REGION_ID)
------------------------------------------------------------
SALARY COMMISSION_PCT
---------- --------------
24 Dancs Bela bdancs
17-MAR-91 10 Stock Clerk
0000220208447F54A9ED63676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
860

25 Schwartz Sylvie sschwart


09-MAY-91 10 Stock Clerk
0000220208447F54A9ED63676AE03408002072C15B447F54A9ED55676AE03408
002072C15B
1100

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II B-45
Appendix B: Table Descriptions and Data
.....................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
B-46 Oracle iDS Forms: Build Internet Applications II
................................

Mouse Movement Events

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix C: Mouse Movement Events
.....................................................................................................................................................

Introduction
Overview
You have already seen how to use mouse action triggers and built-ins. This appendix
explains how to develop drag-and-drop functionality with Client Server forms
applications.

Objectives
After completing this appendix, you should be able to implement drag-and-drop
functionality with Client Server forms.

Drag and Drop

Items in original positions

Item-A highlighted

Items repositioned

nly
Copyright  Oracle Corporation, 2001. All rights reserved.

e O ®

Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
C-2 Oracle iDS Forms: Build Internet Applications II
Introduction
.....................................................................................................................................................

Notes Page

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II C-3
Appendix C: Mouse Movement Events
.....................................................................................................................................................

Drag and Drop


The drag-and-drop functionality is the ability for users to move items around the
canvas and arrange them in the order they require.

Implementing Drag and Drop Functionality


You can use the mouse button action triggers (When-Mouse-Down and When-Mouse-
Up) and the mouse position system variables to implement drag-and-drop
functionality in your form module.
You need to consider the following when implementing drag and drop:
• Changing the appearance of the item you want to drag and drop: Use the
SET_ITEM_PROPERTY built-in and a visual attribute.
• Changing the appearance of the cursor during the drag and drop process:
Use SET_APPLICATION_PROPERTY(cursor_style, ‘value’).
• Holding the name of the item being dragged and dropped.: Use a global
variable to store the initial value of SYSTEM.MOUSE_ITEM.
• Setting the new position, according to the mouse position: Use
SET_ITEM_PROPERTY(:global.variablename, position,
:SYSTEM.MOUSE_X_POS, :SYSTEM.MOUSE_Y_POS).
• Repositioning other items that may be affected.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
C-4 Oracle iDS Forms: Build Internet Applications II
Drag and Drop
.....................................................................................................................................................

Summary

In this appendix, you should have learned how to:


• Drag and Drop Items

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II C-5
Appendix C: Mouse Movement Events
.....................................................................................................................................................

Summary
In this Appendix, you should have learned how to implement drag-and-drop
functionality in your Client Server form applications by using appropriate mouse
triggers and system variables.

Mouse Triggers
• When_Mouse_Move
• When_Mouse_Up
• When_Mouse_Down

Mouse System Varaiables


• :SYSTEM.MOUSE_ITEM
• SYSTEM.MOUSE_X_POS
• :SYSTEM.MOUSE_Y_POS

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
C-6 Oracle iDS Forms: Build Internet Applications II
................................

Introduction to
Oracle8i Object Features

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Objectives

After completing this appendix, you should be able


to do the following:
• Describe the new Oracle8i scalar data types
• Describe object types and objects
• Describe object tables, object columns, and
object views
• Describe the INSTEAD-OF triggers
• Describe object REFs
• Identify the display of objects in Object Navigator

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
In this appendix you will review certain object features of Oracle8i. This appendix
also explains how these objects are displayed in the Object Navigator.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-3
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

New Oracle8i Scalar Data Types

• NCHAR
• NVARCHAR2
• FLOAT
• NLS types

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-4 Oracle iDS Forms: Build Internet Applications II
New Oracle8i Data Types
......................................................................................................................................................

New Oracle8i Data Types


Scalar Data Types
• NCHAR stores fixed-length (blank-padded if necessary) NLS character
data. How the data is represented internally depends on the national
character set, which might use a fixed-width encoding such as
US7ASCII or a variable-width encoding such as JA16SJIS.
• NVARCHAR2 stores variable-length NLS character data. How the data
is represented internally depends on the national character set, which
might use a fixed-width encoding such as WE8EBCDIC37C or a
variable-width encoding such as JA16DBCS.
• FLOAT is a subtype of NUMBER. However, you cannot specify a scale
for FLOAT variables. You can specify only a binary precision, which is
the total number of binary digits.
There is no change to the way scalar data types are displayed in Oracle Forms
Developer. The new data types are automatically converted to existing Oracle Forms
Developer item data types.

NLS Types
Oracle8i offers extended National Language Support (NLS) including national
character sets and the data types NCHAR and NVARCHAR2, which store NLS data.
With NLS, number and date formats adapt automatically to the language conventions
specified for a user session. Thus, users around the world can interact with the Oracle
Database Server in their native languages. NLS is discussed in Oracle8i Server

ly
Reference Manual.

On
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-5
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Types

Attributes

ORDER
po_no
custinfo
line_items
amount

Methods

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-6 Oracle iDS Forms: Build Internet Applications II
Object Types
......................................................................................................................................................

Object Types
An object type is a user-defined composite data type. You build object types from
predefined data types or from previously defined object types. When you create an
object type you specify the component types from which it is built. You also specify
the functions and procedures that can act on the object type. Thus, an object type is in
some ways similar to a record type, and in some ways similar to a package.
An object type must have one or more attributes and can contain methods.

Attributes An object type is similar to a record type in that it is composed of one or


more subparts that are of predefined data types. Record types call these subparts fields,
but object types call these subparts attributes.
Attributes define the object structure.
CREATE TYPE address_type AS OBJECT
(address VARCHAR2(30),
city VARCHAR2(15),
stateCHAR(2),
zip CHAR(5));
CREATE TYPE phone_type AS OBJECT
(country NUMBER(2),
area NUMBER(4),
phoneNUMBER(9));
Just as the fields of a record type can be of other record types, the attributes of an
object type can be of other object types. Such an object type is called nested.
CREATE TYPE address_and_phone_type AS OBJECT
(address address_type,
phonephone_type);

nly
O
Object types are like record types in another sense: Both of them must be declared as
types before the actual object or record can be declared.
se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-7
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Types

Ship

ORDER

Check Cancel
status

Hold

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-8 Oracle iDS Forms: Build Internet Applications II
Object Types
......................................................................................................................................................

Object Types (continued)

Methods An object type is also similar to a package. Once an object is declared, its
attributes are similar to package variables. Like packages, object types can contain
procedures and functions. In object types, these subprograms are known as methods.
A method describes the behavior of an object type.
Like packages, object types can be declared in two parts: a specification and a body.
Like package variables, attributes declared in the object type specification are public
and those declared in the body are private. As with package subprograms, all methods
are defined in the package body, but only those whose specification appears in the
object type specification are public methods.
Here is an example of an object type:
CREATE TYPE dept_type AS OBJECT
(dept_idNUMBER(2),
dnameVARCHAR2(14),
loc VARCHAR2(3),
MEMBER PROCEDURE set_dept_id (d_id NUMBER),
PRAGMA RESTRICT_REFERENCES (set_dept_id,
RNDS,WNDS,RNPS,WNPS),
MEMBER FUNCTION get_dept_id RETURN NUMBER,
PRAGMA RESTRICT_REFERENCES (get_dept_id,
RNDS,WNDS,RNPS,WNPS));
CREATE TYPE BODY dept_type AS
MEMBER PROCEDURE set_dept_id (d_id NUMBER)
IS

ly
BEGIN
dept_id := d_id;
END;
On
MEMBER FUNCTION get_dept_id
se
U
RETURN NUMBER
IS
BEGIN
AI
RETURN (dept_id);

& O
l
END;
END;

rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-9
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Tables

Object table based on object type

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-10 Oracle iDS Forms: Build Internet Applications II
Creating Oracle8i Objects
......................................................................................................................................................

Creating Oracle8i Objects


Introduction
After you have declared an object type, you can create objects based on the type.

Object Tables
One way to create an object is to create a table whose rows are objects of that object
type.
Here is an example of an object table declaration:
CREATE TABLE o_dept OF dept_type;
SQL and PL/SQL treat object tables very similarly to relational tables, with the
attribute of the object corresponding to the columns of the table, but there are
significant differences. The most important difference is that rows in an object table
are assigned object IDs (OIDs) and can be referenced by using a REF type.
Note: REF types are reviewed later.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-11
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Columns

Object column based on object type

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-12 Oracle iDS Forms: Build Internet Applications II
Object Columns
......................................................................................................................................................

Object Columns
Another construct that you can base on an object type is an object column in a
relational table. Here is an example of a relational table creation statement with an
object column:
CREATE TABLE o_customer (
custid NUMBER (6) NOT NULL,
name VARCHAR2 (45),
repid NUMBER (4) NOT NULL,
creditlimit NUMBER (9,2),
address address_type,
phone phone_type);
In the object table, the rows of a table are objects. In a relational table with an object
column, the column is an object. The table will usually have standard columns, as well
as one or more object column.
Object columns are not assigned object IDs (OIDs), and therefore cannot be
referenced by using object REF values.
Note: Object REFs are reviewed later in this section.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-13
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Views

Object-oriented Object Relational


application view table

Object views based on object types

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-14 Oracle iDS Forms: Build Internet Applications II
Object Views
......................................................................................................................................................

Object Views
Often the most difficult part of adopting a new technology is the conversion process
itself. For example, a large enterprise might have several applications accessing the
same data stored in relational tables. If such an enterprise decided to start using object-
relational technology, it would not convert all of the applications at once, but would
convert the applications one at a time.
This presents a problem. The applications that have been converted need the data
stored as objects, while the applications that have not been converted need the data
stored in relational tables.
This dilemma is addressed by object views. Like all views, an object view transforms
the way a table appears to a user, without changing the actual structure of the table.
Object views make relational tables look like object tables. This enables developers to
postpone converting the data from relational structures to object-relational structures
until after all of the applications have been converted. During the conversion process,
the object-relational applications can operate against the object view, while the
relational applications can continue to operate against the relational tables.
Objects accessed through object views are assigned Object IDs (OIDs) and can be
referenced by using Object REFs.
Note: Object REFs are reviewed later in this section.
Here is an example of an object view creation statement:
CREATE VIEW emp_view OF emp_type
WITH OBJECT OID (eno)
AS
SELECT e.empno, e.ename, e.sal, e.job
FROM emp e;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-15
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

INSTEAD-OF Triggers

DECLARE

BEGIN

EXCEPTION

END;

Nonupdatable view INSTEAD-OF trigger

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-16 Oracle iDS Forms: Build Internet Applications II
INSTEAD-OF Triggers
......................................................................................................................................................

INSTEAD-OF Triggers
INSTEAD-OF triggers provide a transparent way of modifying views that cannot be
modified directly through SQL DML statements (INSERT, UPDATE, and DELETE).
These triggers are called INSTEAD-OF triggers because, unlike other types of
triggers, Oracle fires the trigger instead of executing the triggering statement. The
trigger performs update, insert, or delete operations directly on the underlying tables.
Users write normal INSERT, DELETE, and UPDATE statements against the view, and
the INSTEAD-OF trigger works invisibly in the background to make the right actions
take place.
INSTEAD-OF triggers are activated for each row.
Note: Although you can use INSTEAD-OF triggers with any view, they are typically
required with object views.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-17
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

References to Objects

OID

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-18 Oracle iDS Forms: Build Internet Applications II
Referencing Objects
......................................................................................................................................................

Referencing Objects
Introduction
In relational databases, primary-key values are used to uniquely identify records. In
object-relational databases, OIDs provide an alternate method.
When a row in an object table or object view is created, it is assigned automatically a
unique identifier called an object ID (OID).

Object REFs
With relational tables, you can associate two records by storing the primary key of one
record in one of the columns (the foreign-key column) of another.
In a similar way, you can associate a row in a relational table to an object by storing
the OID of an object in a column of a relational table.
Or you can associate two objects by storing the OID of one object in an attribute of
another.
The stored copy of the OID then becomes a pointer, or reference (REF), to the original
object.
The attribute or column that holds the OID is of data type REF.
Note: Object columns are not assigned OIDs and cannot be pointed to by a REF.
Here is an example of a table declaration that includes a column with a REF data type:
CREATE TABLE o_emp
( empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
job VARCHAR2(10),
mgr NUMBER(4),

ly
hiredate DATE,

n
sal NUMBER(7,2),
comm
dept
NUMBER(7,2),
REF dept_type SCOPE IS o_dept) ;
e O
Us
Note: The REF is scoped here to restrict the reference to a single table, o_dept. The

I
object itself is not stored in the table; only the OID value for the object is stored there.
A
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-19
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Types in Object Navigator

Copyright  Oracle Corporation, 2001. All rights reserved.

Object Type Wizard

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
D-20 Oracle iDS Forms: Build Internet Applications II
Displaying Oracle8i Objects in the Object Navigator
......................................................................................................................................................

Displaying Oracle8i Objects in the Object Navigator


In the Database Objects section, the Object Navigator lists declared types, along with
tables, views, and other Oracle objects.

Object Types
Both the attributes and the methods are listed under each type. Additionally, the nested
types within address_and_phone_type are displayed in an indented sublevel.
This convention is used for nested object and object type displays throughout Oracle
Forms Developer.

Oracle8i Type Wizard


You can create object types by using the Oracle8i Type Wizard, which enables you to
define attributes and methods.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-21
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Tables in Object Navigator

Copyright  Oracle Corporation, 2001. All rights reserved.

Object Columns in Object Navigator

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
D-22 Oracle iDS Forms: Build Internet Applications II
Displaying Oracle8i Objects in the Object Navigator
......................................................................................................................................................

Object Tables
Object tables are displayed like relational tables, with the attributes of the object
displayed like columns in a relational table. Additionally, the object table type name is
displayed in parentheses after the name of the object table.

Object Columns
Object columns are displayed with the object type in parentheses after the column
name, and with the attributes of the type indented underneath the column name.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-23
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object Views in Object Navigator

Copyright  Oracle Corporation, 2001. All rights reserved.

INSTEAD-OF Trigger Dialog Box

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
D-24 Oracle iDS Forms: Build Internet Applications II
Displaying Oracle8i Objects in the Object Navigator
......................................................................................................................................................

Object Views
Object views are displayed like any other view, except that the object type they are
based on is written in parentheses after the view name.

INSTEAD-OF Triggers
You can create INSTEAD-OF database triggers through the trigger creation dialog
box, just as you would any other database trigger.
INSTEAD-OF INSERT, UPDATE, and DELETE triggers allow you to directly insert,
update, and delete against object views. They can also be used with any other type of
view that does not allow direct DML.
When a view has an INSTEAD-OF trigger, the code in the trigger is executed in place
of the triggering DML code.

Reference For more information about INSTEAD-OF triggers, see:


• Oracle8i Server SQL Reference Manual
• Oracle8i Concepts Manual

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-25
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Object REFs in Object Navigator

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-26 Oracle iDS Forms: Build Internet Applications II
Displaying Oracle8i Objects in the Object Navigator
......................................................................................................................................................

Object REFs
Object types that contain attributes of type REF, and relational tables that have
columns of type REF, display the keyword REF before the name of the object type that
is being referenced.
The attributes of the referenced object type are displayed indented underneath the
column or attribute.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-27
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

Summary

In this appendix, you should have learned how:


• Oracle8i introduced three new scalar datatypes.
• Objects and object types allow representation of
complex data.
• Three kinds of objects are object tables,
object columns, and object views.

Copyright  Oracle Corporation, 2001. All rights reserved.

Summary

In this appendix, you should have learned how to:


• INSTEAD-OF triggers allow DML on
object views.
• Object REFs store the object identifier of
certain types of objects.
nly
• The Object Navigator can display certain
e O
s
types of objects.

I U
OA
l &
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
D-28 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
New Oracle8i Data Types
Oracle8i introduced three new scalar data types and new composite data types such as
object types.

Objects
Three kinds of objects are object tables, object columns, and object views.
INSTEAD-OF triggers allow DML on object views.
Object REFs store the Object Identifier of certain types of objects.

Oracle8i Objects In the Object Navigator


The Object Navigator can display certain types of objects.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II D-29
Appendix D: Introduction to Oracle8i Object Features
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
D-30 Oracle iDS Forms: Build Internet Applications II
................................

Menu Run-Time
Parameters

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

Objectives

After completing this appendix, you should be able to


customize menu modules using substitution
parameters.

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
E-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
In this lesson, you will learn how to modify menus dynamically, as well as
how to control application security through menu access.

Objectives
After completing this lesson, you should be able to customize menu modules
by using substitution parameters.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II E-3
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

Built-in Substitution Parameters

UN Current username

PW Current password

AD Directory name

SO Current menu name

TT Terminal type

LN Language used

Copyright  Oracle Corporation, 2001. All rights reserved.

User-Named Substitution Parameters

nly
e O
Us
AI
Design time Run time
& O
al
n
®

r
Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
E-4 Oracle iDS Forms: Build Internet Applications II
Substitution Parameters
......................................................................................................................................................

Substitution Parameters
What Is a Substitution Parameter?
A substitution parameter is a two-character variable of type CHAR that is
referenced in a menu item command or in a PL/SQL program unit, and
substituted with a value at run time. A menu module provides some
predefined parameters, which automatically exist in every menu module.
You can also create in Form Builder (valid for a given menu module) your
own user-named parameters.

Predefined Substitution Parameters


You can use six predefined (built-in) substitution parameters. Form Builder
automatically processes them at run time.
Parameter Description
UN Current username
PW Current password
AD Directory name containing the current menu module run-time file
SO Current menu name (selected option)
TT Terminal type used at connection
LN Language used (NLS_LANG parameter)

User-Named Substitution Parameters


User-named substitution parameters are processed at run time by the user
through a dialog box. Alternatively, they can be processed programmatically

ly
through built-in procedures.
Note: Substitution parameter values can be referenced in triggers and user-
On
e
defined subprograms.

Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II E-5
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

Parameter Properties

- Name
- Label
- Maximum Length
- Case Restriction
- Menu Parameter
- Conceal Data Initial Value
- Associated Menus - Required
- Hint

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
E-6 Oracle iDS Forms: Build Internet Applications II
Defining a User-Named Substitution Parameter
......................................................................................................................................................

Defining a User-Named Substitution Parameter


Creating a User-Named Substitution Parameter
You can create a user-named substitution parameter from the Object
Navigator:
1 Select the Parameters node.
2 Create a new parameter by clicking the Create icon.
Forms displays a new parameter.
3 Set the desired properties for the parameter.

Property Description
Name The two-letter parameter name
Label The text prompt for the parameter value that is displayed in
the Enter Parameter Values dialog box
Case Restriction The property that converts the case of the user’s input to
either uppercase, lowercase, or none
Conceal Data The property that determines whether the user’s input is ech-
oed on the screen
Associated Menus All menu names where the parameter can be used (full-screen
menus only)
Maximum Length Value maximum length
Menu Parameter Initial Value The default value for the parameter; displayed in the parame-
ter value field when the Enter Parameter Values dialog box is
displayed

ly
Required Mandatory or not; set Yes if the value is required or No to

n
allow the parameter value to be set to Null
Hint
O
The text string displayed on the message line of the console

e
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II E-7
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

Substitution Parameter Built-ins

• QUERY_PARAMETER
• APPLICATION_PARAMETER

Copyright  Oracle Corporation, 2001. All rights reserved.

Referencing and Applying


Menu Parameters

• In a menu item command:


– prefix the parameter name with &
Example: &param_name
• In a PL/SQL routine:

nly
O
– Prefix the parameter name with &

e
when entered through a dialog box
– Prefix the parameter name with :

Us
I
when entered in the PL/SQL editor
– Example: :param_name

OA
l &
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
E-8 Oracle iDS Forms: Build Internet Applications II
Substitution Parameter Built-ins
......................................................................................................................................................

Substitution Parameter Built-ins


Prompting for Substitution Parameter Values
Built-in Description
QUERY_PARAMETER Displays the Query Parameter dialog box showing the
current values of the specified substitution parameters
(End users can set the value of any parameter you include
in the list.)
APPLICATION_PARAMETER Displays all the parameters associated with the current
menu, and their current values, in the Enter Parameter
Values dialog box

Syntax for Referencing Substitution Parameters


The syntax for referencing substitution parameters varies depending on how
you enter the value. Once assigned, the values of menu substitution
parameters can be referenced in triggers and user-named subprograms
defined in the current form, provided that the menu in which the parameters
are defined is the current menu.

Referencing a Parameter in a Menu Item Command


Prefix the parameter name with an ampersand (&).

Example
This example invokes SQL*Plus and runs a command file (CF parameter).

ly
PLUS80W &UN/&PW @&CF

Referencing a Parameter in a PL/SQL Routine


On
Prefix the parameter name with an ampersand (&) if the value is entered
se
U
through the Enter Parameter Values dialog box. Prefix the parameter name
with a colon (:) if the value is entered programmatically.

AI
Example

& O
l
This example invokes Report Builder and enables the user to provide the
report name.

rna
te
Query_Parameter(’&RN’);

n
Run_Product(reports, :RN, synchronous, runtime, filesystem, pl_id,

e I
null);

cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II E-9
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

Validating Substitution
Parameter Values

MENU_SUCCESS function:
• Returns TRUE if the user does not cancel
the Enter Parameter Values dialog box
• Is used in a WHILE loop

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
E-10 Oracle iDS Forms: Build Internet Applications II
Validating a Substitution Parameter Value
......................................................................................................................................................

Validating a Substitution Parameter Value


You can validate the user-entered substitution parameter values by using a WHILE
loop including the QUERY_PARAMETER procedure and testing the
MENU_SUCCESS function status.
DECLARE
Status BOOLEAN:= TRUE;
BEGIN
WHILE Status
LOOP
QUERY_PARAMETER(’&p1’);
IF MENU_SUCCESS
THEN
IF TO_NUMBER(:p1) not between 100 and 5000
THEN
MESSAGE(’Qty must be in the range 100..5000’);
BELL;
ELSE
Status := FALSE;
END IF;
END IF;
END LOOP;
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II E-11
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

Summary

In this lesson, you should have learned how to


customize menu modules using substitution
parameters.

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
E-12 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
Substitution Parameters
• Using &UN, &PW, &AD, &SO, &TT, and &LN
• Creating user-named substitution parameters
• Programmatically controlling substitution parameters with
QUERY_PARAMETER and APPLICATION_PARAMETER

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II E-13
Appendix E: Menu Run-Time Parameters
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
E-14 Oracle iDS Forms: Build Internet Applications II
................................

Handling Server-
SideErrors

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

Objectives

After completing this appendix, you should be able to


do the following:
• Handle server-side database errors
• Obtain the cause of declarative-constraint
violations

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
F-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
This lesson covers the use of Oracle server features in Form Builder
applications. You will learn about handling Oracle server errors, including
declarative-constraint violations.

Objectives
At the end of this lesson, you should be able to:
• Handle errors raised by the Oracle server
• Obtain the cause of declarative-constraint violations

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II F-3
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

Obtaining the Cause of Declarative-


Constraint Violation

• Predefined error messages for


declarative constraints:
– Primary/unique key; foreign key; check
– ORA-02291: integrity constraint
(schema.constraint) violated
parent key not found
• Obtaining the name of violated constraint:
– Function STRIP_CONSTRAINT_NAME

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
F-4 Oracle iDS Forms: Build Internet Applications II
Obtaining the Cause of Declarative-Constraint Violations
......................................................................................................................................................

Obtaining the Cause of Declarative-Constraint Violations


To handle declarative-constraint violations effectively, you must use the
predefined error message to determine the constraint that was violated.

Predefined Error Messages for Declarative Constraints


Constraint Error Message
Primary Key ORA-00001: unique constraint (schema.constraint) violated
Unique Key
Foreign Key ORA-02291: integrity constraint (schema.constraint) violated—parent
key not found
ORA-02292: integrity constraint (schema.constraint) violated—child
record found
Check ORA-02290: check constraint (schema.constraint) violated

Obtaining the Name of the Violated Constraint


You can use string functions, such as the following, to strip out the name of
the violated constraint from the Oracle Server error message.
FUNCTION strip_constraint_name (p_error_text in VARCHAR2)
RETURN VARCHAR2
IS
v_start_pos NUMBER(4);
v_end_pos NUMBER(4);
BEGIN
v_start_pos := INSTR(p_error_text, ’.’, INSTR(p_error_text, ’(’));
v_end_pos := INSTR(p_error_text, ’)’, v_start_pos);

ly
RETURN(SUBSTR(p_error_text, v_start_pos + 1,v_end_pos -

n
v_start_pos - 1));

O
END;

se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II F-5
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

Customizing Oracle Server


Error Messages

• Replacing declarative-constraint error messages:


– Strip the constraint name from
DBMS_ERROR_TEXT or SQLERRM
– Retrieve the customized message from
the messages table

Copyright  Oracle Corporation, 2001. All rights reserved.

Customizing Oracle Server


Error Messages

• Replacing database-trigger error messages:


– Strip the application error messages from
DBMS_ERROR_TEXT or SQLERRM
– Function STRIP_APPLICATION_ERROR

nly
O
• Replacing stored-program-unit error messages:
– Same as for database triggers, except

se
U
SQLERRM only

AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
I
Technical Note

le
A foreign-key constraint violation can have two causes: “parent key not

c
found” or “child record found.” Therefore, two error messages are

ra
associated with one foreign-key constraint name.

......................................................................................................................................................
F-6 Oracle iDS Forms: Build Internet Applications II
Customizing Oracle Server Error Messages
......................................................................................................................................................

Customizing Oracle Server Error Messages


Replacing Error Messages Caused by Declarative-Constraint Violations
The error is reported in DBMS_ERROR_TEXT (implicit DML) or
SQLERRM (explicit DML). Once you have obtained the name of the
violated constraint from the Oracle server error message, you can use this
name to specify an appropriate customized message. A flexible approach for
this is to maintain a table of messages. You can then use the constraint name
to retrieve the corresponding message from this table.

Replacing Error Messages Caused by Database Triggers


The error is reported in DBMS_ERROR_TEXT (implicit DML) or
SQLERRM (explicit DML). The first part of the error message is the
message specified in RAISE_APPLICATION_ERROR in the database
trigger, which is already a customized message. You can strip out this
application-error message from the Oracle server error message by using the
following function:
FUNCTION strip_application_error (p_error_text in VARCHAR2)
RETURN VARCHAR2
IS
v_end_pos NUMBER(4);
BEGIN
v_end_pos := INSTR(p_error_text, ’ORA-’, 5) - 2;
IF v_end_pos > 0 THEN
RETURN(SUBSTR(p_error_text, 12, v_end_pos - 11));
ELSE

ly
RETURN(SUBSTR(p_error_text, 12));

n
END IF;

O
END;

Replacing Error Messages Caused by Stored Program Units


se
The error is reported in SQLERRM only. The customized message is
I U
obtained in the same way as for database triggers.
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II F-7
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

Example Procedure for Handling


Oracle Server Errors

• If the Oracle server error is a


declarative-constraint error:
– Strip the constraint name from the
Oracle server error text.
– Adjust the name of the foreign-key constraints.
– Retrieve the message from the messages table.

Copyright  Oracle Corporation, 2001. All rights reserved.

Example Procedure for Handling


Oracle Server Errors

• If the Oracle server error is an application error:


– Strip the application error from the Oracle
server error text.
– Raise FORM_TRIGGER_FAILURE.

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
F-8 Oracle iDS Forms: Build Internet Applications II
Example Procedure for Handling Oracle Server Errors
......................................................................................................................................................

Example Procedure for Handling Oracle Server Errors


PROCEDURE handle_server_error (p_server_error_code IN NUMBER,
p_server_error_text IN VARCHAR2)
IS
v_message_id VARCHAR2(255);
BEGIN -- handle_server_error
IF p_server_error_code IN (-1, -2290, -2291, -2292) THEN
/* PK/UK/FK/CK-constraint violation error. */
v_message_id := strip_constraint_name(p_server_error_text);
/* Foreign-key constraint has two associated error
messages.*/
IF p_server_error_code = -02291 THEN
/* Foreign-key violation - parent key not found. */
v_message_id := v_message_id || ’_PARENT’;
ELSIF p_server_error_code = -02292 THEN
/* Foreign-key violation - child record found. */
v_message_id := v_message_id || ’_CHILD’;
END IF;
MESSAGE(retrieve_message(v_message_id));
RAISE form_trigger_failure;
ELSIF p_server_error_code between -20999 and -20000 THEN
/* Application error caused by database trigger or stored
program unit. */
MESSAGE(strip_application_error(p_server_error_text));
RAISE form_trigger_failure;
END IF;
END handle_server_error;
Note: The STRIP_CONSTRAINT_NAME and

ly
STRIP_APPLICATION_ERROR functions have already been shown earlier

n
in this lesson. The RETRIEVE_MESSAGE function retrieves a message
with a given ID from a messages table.

e O
s
Call the HANDLE_SERVER_ERROR procedure from the appropriate
triggers and program units.
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II F-9
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

Example Procedure for Handling


Oracle Server Errors

• Handle errors caused by implicit DML


On-Error trigger on form:
IF ERROR_TYPE = ¢FRM’ AND
ERROR_CODE IN (40508, 40509, 40510) THEN
handle_server_error(DBMS_ERROR_CODE,
DBMS_ERROR_TEXT);
END IF;

• Handle errors caused by explicit DML or


stored Program Units:
EXCEPTION
EXCEPTION
WHEN
WHEN OTHERS
OTHERS THEN
THEN
handle_server_error(SQLCODE,
handle_server_error(SQLCODE, SQLERRM);
SQLERRM);
®

Copyright  Oracle Corporation, 2001. All rights reserved.

Technical Note
Error code 40508 is insert failed. Error code 40509 is update failed. Error
code 40510 is delete failed.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
F-10 Oracle iDS Forms: Build Internet Applications II
Example Procedure for Handling Oracle Server Errors
......................................................................................................................................................

Handling Oracle Server Errors Caused by Implicit DML


Always define an On-Error trigger to handle Oracle server errors caused by
base table DML.

On-Error Trigger at Form Level


BEGIN
IF ERROR_TYPE = ’FRM’ AND ERROR_CODE IN (40508, 40509, 40510) THEN
handle_server_error(DBMS_ERROR_CODE,DBMS_ERROR_TEXT);
END IF;
/* Show default FRM-error message. */
MESSAGE(ERROR_TYPE || TO_CHAR(-ERROR_CODE) || ’: ’ || ERROR_TEXT);
RAISE form_trigger_failure;
END;

Handling Oracle Server Errors Caused By Explicit DML or Stored


Program Unit Calls
Define a WHEN OTHERS exception handler in all triggers and program
units that execute explicit DML or call stored program units.
BEGIN
/* DML statements or calls to stored program units. */
EXCEPTION
WHEN others THEN
handle_server_error(SQLCODE, SQLERRM);
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II F-11
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

Summary

In this lesson, you should have learned how to:


• Replacing Oracle Server error messages with
customized messages
– Constraint: strip constraint name and
retrieve message
– DB triggers and stored program units:
strip application error

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
F-12 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
Handling Errors Raised by the Oracle Server
• Causes: Declarative constraints, database triggers, stored program units
• Trap implicit-DML errors by using DBMS_ERROR_CODE and
DBMS_ERROR_TEXT in an On-Error trigger
• Trap explicit DML errors and stored program unit errors by using
SQLCODE and SQLERRM in a WHEN OTHERS exception handler

Replacing Oracle Server Error Messages with Customized Messages


• Declarative constraint: Strip the constraint name from the Oracle Server
error message and retrieve the message from the messages table
• Database triggers and stored program units: Strip the application error
message from the Oracle Server error message

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II F-13
Appendix F: Handling Server-SideErrors
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
F-14 Oracle iDS Forms: Build Internet Applications II
................................

EMP_PKG Package

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix G: EMP_PKG Package
......................................................................................................................................................

Package Specification
/*******************************************************/
/* This is an example of a stored procedure that: */
/* query, insert, update, delete, and lock rows of the */
/* EMP table. */
/* A package is used to logically group the related */
/* data types and procedures */
/*******************************************************/
PACKAGE emp_pkg AS

TYPE emprec IS RECORD(


--- Defines eack row of the table EMP
empno emp.empno%TYPE,
ename emp.ename%TYPE,
job emp.job%TYPE,
mgr emp.mgr%TYPE,
hiredate emp.hiredate%TYPE,
sal emp.sal%TYPE,
comm emp.comm%TYPE,
deptno emp.deptno%TYPE);

--- Defines each row of the table EMP.EMPNO


TYPE empnorec IS RECORD ( empno emp.empno%TYPE);

nly
--- Define the Ref Cursor
e O
TYPE empcur IS REF CURSOR RETURN emprec;
Us
AI
O
--- Defines the Table of Records EMP
TYPE emptab IS TABLE OF emprec INDEX BY BINARY_INTEGER;

l &
rna
--- Defines the Table of Records EMP.EMPNO

nte
TYPE empnotab IS TABLE OF empnorec INDEX BY BINARY_INTEGER;

e I
cl
ra
O

......................................................................................................................................................
G-2 Oracle iDS Forms: Build Internet Applications II
Package Specification
......................................................................................................................................................

--- Defines the procedures used for querying records


PROCEDURE empquery_refcur ( block_data IN OUT empcur,
p_deptno IN NUMBER);
PROCEDURE empquery ( block_data IN OUT emptab,
p_deptno IN NUMBER);

--- Defines the procedures used for DML operations


PROCEDURE empinsert (block_data IN emptab);
PROCEDURE empupdate (block_data IN emptab);
PROCEDURE empdelete (block_data IN empnotab);
PROCEDURE emplock (block_data IN empnotab);
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II G-3
Appendix G: EMP_PKG Package
......................................................................................................................................................

Package Body
PACKAGE BODY emp_pkg AS
/**************************/
/* QUERY USING REF CURSOR */
/**************************/
PROCEDURE empquery_refcur( block_data IN OUT empcur,
p_deptno IN NUMBER)
IS
BEGIN
OPEN block_data FOR
SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
FROM emp
WHERE deptno = NVL(p_deptno, deptno)
ORDER BY empno;
END;

. . .

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
G-4 Oracle iDS Forms: Build Internet Applications II
Package Body
......................................................................................................................................................

/********************************/
/* QUERY USING TABLE OF RECORDS */
/********************************/
PROCEDURE empquery( block_data IN OUT emptab,
p_deptno IN NUMBER)
IS
i NUMBER;
CURSOR empselect IS
SELECT empno, ename, job, mgr, hiredate,
sal, comm, deptno
FROM emp
WHERE deptno = NVL(p_deptno, deptno)
ORDER BY empno;
BEGIN
OPEN empselect;
i := 1;
LOOP
FETCH empselect INTO block_data(i).empno,
block_data(i).ename,
block_data(i).job,
block_data(i).mgr,
block_data(i).hiredate,

ly
block_data(i).sal,
block_data(i).comm,

On
e
block_data(i).deptno;
EXIT WHEN empselect%NOTFOUND;

Us
i := i + 1;

AI
O
END LOOP;

&
END;
. . .
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II G-5
Appendix G: EMP_PKG Package
......................................................................................................................................................

/**********/
/* INSERT */
/**********/
PROCEDURE empinsert(block_data IN emptab)
IS
i NUMBER;
cnt NUMBER;
BEGIN
cnt := block_data.count;
FOR i IN 1..cnt
LOOP
INSERT INTO emp( empno, ename, job, mgr,
hiredate, sal, comm, deptno)
VALUES( block_data(i).empno, block_data(i).ename,
block_data(i).job, block_data(i).mgr,
block_data(i).hiredate, block_data(i).sal,
block_data(i).comm, block_data(i).deptno);
END LOOP;
END;

. . .

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
G-6 Oracle iDS Forms: Build Internet Applications II
Package Body
......................................................................................................................................................

/**********/
/* UPDATE */
/**********/
PROCEDURE empupdate(block_data IN emptab)
IS
i NUMBER;
cnt NUMBER;
BEGIN
cnt := block_data.count;
FOR i IN 1..cnt
LOOP
UPDATE emp
SET ename = block_data(i).ename,
job = block_data(i).job,
mgr = block_data(i).mgr,
hiredate = block_data(i).hiredate,
sal = block_data(i).sal,
comm = block_data(i).comm,
deptno = block_data(i).deptno
WHERE empno = block_data(i).empno;
END LOOP;
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II G-7
Appendix G: EMP_PKG Package
......................................................................................................................................................

/**********/
/* DELETE */
/**********/
PROCEDURE empdelete(block_data IN empnotab)
IS
i NUMBER;
cnt NUMBER;
BEGIN
cnt := block_data.count;
FOR i IN 1..cnt
LOOP
DELETE FROM emp WHERE empno = block_data(i).empno;
END LOOP;
END;
/********/
/* LOCK */
/********/
PROCEDURE emplock(block_data IN empnotab)
IS
i NUMBER;
cnt NUMBER;
block_rec emprec;

ly
BEGIN
cnt := block_data.count;

On
e
FOR i IN 1..cnt
LOOP

Us
SELECT empno, ename, job, mgr,

AI
O
hiredate, sal, comm, deptno

&
INTO block_rec

al
FROM emp

rn
WHERE empno = block_data(i).empno

e
t
FOR UPDATE OF ename NOWAIT;

In
END LOOP;

cle
END;

ra
END;

......................................................................................................................................................
G-8 Oracle iDS Forms: Build Internet Applications II
Package Body
......................................................................................................................................................

To have an idea of how Form Builder works when a data block is based on a
stored procedure returning a REF CURSOR, you can run the following
script under Sql*Plus:
DECLARE
v_rec emp_pkg.emprec;
v_ref emp_pkg.empcur;
BEGIN
emp_pkg.emp_query_refcur(v_ref, 10);
LOOP
FETCH v_ref INTO v_rec;
EXIT WHEN v_ref%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_rec.empno);
DBMS_OUTPUT.PUT_LINE(v_rec.ename);
DBMS_OUTPUT.PUT_LINE(v_rec.job);
DBMS_OUTPUT.PUT_LINE(v_rec.mgr);
DBMS_OUTPUT.PUT_LINE(v_rec.hiredate);
DBMS_OUTPUT.PUT_LINE(v_rec.sal);
DBMS_OUTPUT.PUT_LINE(v_rec.comm);
DBMS_OUTPUT.PUT_LINE(v_rec.deptno);
END LOOP;
CLOSE v_ref;
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II G-9
Appendix G: EMP_PKG Package
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
G-10 Oracle iDS Forms: Build Internet Applications II
................................

Working with ActiveX


Controls

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Objectives

After completing this appendix, you should be able


to do the following:
• Explain the differences between VBX, OCX,
and ActiveX controls
• Access ActiveX properties at design time and
run time
• Import ActiveX control methods and event
packages
• Customize event handling

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-2 Oracle iDS Forms: Build Internet Applications II
Introduction
......................................................................................................................................................

Introduction
Overview
In this appendix, you will learn how to include and use ActiveX controls in
your Oracle Forms Developer application.

Objectives
After completing this lesson, you should be able to do the following:
• Explain the differences between VBX, OCX, and ActiveX controls
• Access ActiveX properties at design time and run time
• Import ActiveX control methods and events packages
• Customize event handling

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-3
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

What Are VBX, OCX and


ActiveX Controls?
• VBX
– Custom Interface Object
– Special dynamic link library
• OCX
– Independent program module
– Run in any Windows application that is
OLE-enabled
• ActiveX
– Third version of OCX
– Provide integrated controls in Browsers

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-4 Oracle iDS Forms: Build Internet Applications II
What Are VBX, OCX, and ActiveX Controls?
......................................................................................................................................................

What Are VBX, OCX, and ActiveX Controls?


VBX, OCX, and ActiveX controls provide encapsulated functionality that
you can embed into your application.
Instead of one monolithic application that provides you with almost every
feature that you want, component objects and good integration can provide
you with a light-weight custom application to suit all your needs.
Word processor documents, spreadsheet documents, knob controls, and
video clips are examples of component objects that can enhance the
capabilities of your form. Instead of re-creating functionality that already
exists, you can access these capabilities by exploiting a VBX, an OCX, or an
ActiveX control.

What Is a VBX?
Short for Visual Basic custom control, a VBX is a reusable software
component designed for use in many different applications. While VBXs
can be used in other environments, they were initially created for developing
Windows applications with Visual Basic. An application developer can use a
number of selected VBXs to quickly develop an application.

What Is an OCX?
Short for OLE Custom control, an OCX is an independent program module
that can be accessed by other programs in a Windows environment. OCX
controls end with the .ocx extension. OCX controls represent Microsoft’s
second generation of control architecture, the first being VBX controls

ly
written in Visual Basic.

What Is an ActiveX?
On
ActiveX controls are a superset of OLE Custom control (OCX). ActiveX is
se
an open platform that combines desktop and Web technologies. An ActiveX
I U
A
control can be automatically downloaded and executed by a Web browser.

O
ActiveX is not a programming language, but rather a set of rules for how

&
applications should share information. Programmers can develop ActiveX

al
controls in a variety of languages, including C, C++, Visual Basic, and Java.

rn
They represent Microsoft’s third generation of control architecture, the first

e
t
being VBX controls and the second OCX controls.

In
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-5
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

VBX, OCX, and ActiveX Controls


Comparison

VBX OCX ActiveX


Controls Controls Controls

Operating 16-bit applications Both 16- and 32-bit


“platform” only platforms

Candidate Only those written Any application with an


applications with a specific OLE container type
interface to VBXs

Coding Proprietary Standard OLE2


interface

Web- No No Yes
enabled
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-6 Oracle iDS Forms: Build Internet Applications II
Comparison of VBX, OCX, and ActiveX Controls
......................................................................................................................................................

Comparison of VBX, OCX, and ActiveX Controls


A VBX is an extension of Microsoft Visual Basic and is designed to work
within applications written with a specific interface to VBXs. They are
16-bit-only controls designed to execute an event.
An OCX is an extension of Windows Open Architecture, so it is designed to
run in any Windows application that is OLE-enabled. OCX controls support
16- and 32-bit platforms, can execute events, and give the developer the
ability to code methods and properties.
ActiveX controls are the third version of OLE controls (OCX). This means
that all OCX controls are ActiveX controls. They provide a number of
enhancements specifically designed to facilitate distribution of components
over high-latency networks and to provide integration of controls into Web
browsers. You cannot, however, deploy ActiveX controls with Web forms.
The table below summarizes some of the differences among VBX controls,
OCX controls, and ActiveX controls.

VBX Controls OCX Controls ActiveX Controls


16-bit Both 16- and 32-bit Both 16- and 32-bit
Operating applications only platforms platforms
platform
Only those Any application with an Any application with an
written with a OLE container type OLE container type
Candidate specific interface

ly
applications to VBXs

Coding
Proprietary Standard OLE2

On Standard OLE2

e
interface
No No
Us Yes

I
Web-enabled

OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-7
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

ActiveX in Form Builder

• ActiveX controls:
– Dynamic library in .ocx files
– Support events, properties, and methods
• ActiveX control item:
– Container for the ActiveX control
– Single-record property set to Yes

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-8 Oracle iDS Forms: Build Internet Applications II
ActiveX in Form Builder
......................................................................................................................................................

ActiveX in Form Builder


What Are ActiveX Controls?
Form Builder provides support for ActiveX controls. ActiveX controls are
reusable components that you can embed in your Form Builder application.
Form Builder acts as an ActiveX control container.
ActiveX controls are a special type of dynamic library. A single ActiveX file
that is distributed with the .ocx extension can contain more than one class
of ActiveX objects.

ActiveX Control Components


Each ActiveX control exposes a set of:
• Properties: Properties define the ActiveX control’s physical and logical
attributes.
• Methods: Methods define actions that the ActiveX control can perform.
• Events: Events denote some change in status in the ActiveX control.
A client application manipulates an ActiveX control by writing values to
and obtaining values from its properties, invoking methods that are used to
perform actions, and intercepting and acting on events.

ActiveX Control Item


The ActiveX Control Item type creates a container for your ActiveX control.
An ActiveX control is not a separate application, but a server that plugs into
an ActiveX container.
It is recommended that you use ActiveX controls in blocks with the Single
nly
O
Record property set to Yes. The Single Record property is not applicable to

e
multiple record blocks.You should set the Single Record property to Yes
because single records are immediately initialized when Forms run time
Us
I
starts up. For multiple records, each record is not initialized until you
navigate to the record. Without initialization, the ActiveX Control Item is
empty, giving the impression that no ActiveX control is available.
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-9
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Implementing an ActiveX Control in Form


Builder

1. Create an ActiveX Control Container.


2. Insert an ActiveX Control.
3. Import the desired ActiveX Control
methods and events.
4. Write the appropriate PL/SQL code.

Copyright  Oracle Corporation, 2001. All rights reserved.

Creating an ActiveX
Control Item

nly
e O
Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
H-10 Oracle iDS Forms: Build Internet Applications II
Implementing an ActiveX Control
......................................................................................................................................................

Implementing an ActiveX Control


Using an ActiveX Control in Form Builder
To use an ActiveX control in Form Builder:
1 Create an ActiveX control container.
2 Insert an ActiveX control.
3 Import the desired ActiveX control methods and events.
4 Write the appropriate PL/SQL code—calling property accessors,
invoking methods, or responding to events—to interact with the
ActiveX control.

Creating an ActiveX Control Item


You can create an ActiveX control item by:
• Converting an existing item into an ActiveX control item
• Using the ActiveX control tool in the Layout Editor
• Using Create Icon in the Object Navigator
• Using the Data Block Wizard
To create an ActiveX control item in the Layout Editor:
1 Invoke the Layout Editor.
2 Click the ActiveX control tool.
3 Click the canvas.
The ActiveX control item is displayed.

ly
4 Double-click the ActiveX control item.
The Properties Palette is displayed for the item.
On
e
5 Set the item properties as required.

Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-11
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Inserting an ActiveX Control

In the Layout Editor:


1. Select the ActiveX control item.
2. Click the right mouse button.
3. Select Insert Object
in the pop-up
menu.
4. Select a
control type.

Copyright  Oracle Corporation, 2001. All rights reserved.

ActiveX Control Properties

Set the following


ActiveX Control
properties:

nly
e O
OLE
OLE Class
Class

Us
I
Control
Control Properties
Properties
About
About Control
Control
OA
&
Control
Control Help
Help

al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

Technical Note
nte
e I
l
If you have created a container using the OCX button from the Layout

rac
Editor, then Create Control is the only available option on the Insert Object
dialog box.

......................................................................................................................................................
H-12 Oracle iDS Forms: Build Internet Applications II
Inserting an ActiveX Control in an ActiveX Control Item
......................................................................................................................................................

Inserting an ActiveX Control in an ActiveX Control Item


Inserting an ActiveX Control
1 In the Layout Editor, select the ActiveX control item.
2 Click the right mouse button to enable the pop-up menu.
3 Select Insert Object.
4 In the Insert Object dialog box, click the Create Control option button to
display the valid control types.
5 Click a control type.
6 Click OK.

ActiveX Control Properties


Once the ActiveX control is inserted, you can set the following properties:

Property Name Description


OLE Class Determines what class of OLE objects can reside in an OLE
container. (You select a specific class if you want to create an
application that allows end users to change the current OLE object in
the OLE container, but want to restrict the end users to creating OLE
objects from a particular class.)
Control Properties Displays the specific properties for the current ActiveX control
About Control Displays information about the control (Please note that this feature
might not be exposed by the control that you are using.)
Control Help
ly
Displays online Help for the control (Please note that this feature

n
might not be exposed by the control that you are using.)

e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-13
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Importing ActiveX Methods and Events


Packages

1 • Select Program OLE Importer

2 6
- Program Units
+ PackageName1 (Spec)
3 + PackageName1 (Body)
+ ...
4 5

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-14 Oracle iDS Forms: Build Internet Applications II
Importing ActiveX Control Methods and Events Packages
......................................................................................................................................................

Importing ActiveX Control Methods and Events Packages


ActiveX controls export interfaces that expose methods and events. Form
Builder imports the methods and events in PL/SQL, enabling you to interact
with ActiveX controls in the native Form Builder environment.

Importing ActiveX Control Methods and Events


1 Select Program––>OLE Importer...
The OLE Importer dialog box appears.
2 Select an OLE Class.
The methods and events packages appear for the selected OLE class.
3 Control-click on the desired methods and events packages.
4 Select the Methods check box to import the methods.
5 Select the Properties check box to import the get and set accessors for
properties.
6 Click OK.
In the Object Navigator, notice the newly created packages under the
Program Units node.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-15
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Interacting with an ActiveX Control

You can interact for:


• Setting and getting ActiveX control properties
• Invoking ActiveX control methods
• Responding to ActiveX control events

Copyright  Oracle Corporation, 2001. All rights reserved.

Setting and Getting ActiveX Control


Properties

Three methods:
• Bind variable Syntax

ly
:Item(′item_name’).OCX.server_name.property
:Item( ′item_name’).OCX.server_name.property

On
e
Example

:item(′ActXitem’).OCX.Spindial.spindialctrl
Us
I
:item( ′ActXitem’).OCX.Spindial.spindialctrl

A
.1.Needleposition:=:item(’ActXitem’).OCX.
.1.Needleposition:=:item(’ActXitem’).OCX.
Spindial.spindialctrl.1.Needleposition
Spindial.spindialctrl.1.Needleposition

& O
l
++ 1;
1;

rna Copyright  Oracle Corporation, 2001. All rights reserved.


®

nte
e I
cl
ra
O

......................................................................................................................................................
H-16 Oracle iDS Forms: Build Internet Applications II
Setting and Getting ActiveX Control Properties
......................................................................................................................................................

Setting and Getting ActiveX Control Properties


Once the ActiveX control is inserted and the methods and events packages
are imported, you can interact with ActiveX controls in many ways:
• Setting and getting ActiveX control properties
• Invoking ActiveX control methods
• Responding to ActiveX control events
There are several ways to set and get ActiveX properties values.

Bind Variable Syntax


You can use the bind variable syntax to assign or retrieve property values.
:item(’item_name’).ocx.server_name.property
Server_name represents the name of the server. This name is the one you
have selected for the OLE Class property. Property is the name of a specific
property of the ActiveX control. To obtain more information, see the Control
Help property, if available, or the documentation.
/* Setting an ActiveX control property using bind variable
syntax */
:item(’ActXitem’).OCX.Spindial.spindialctrl.1.Needleposition
:=
:item(’ActXitem’).OCX.Spindial.spindialctrl.1.Needleposition +1;
/* ActXitem is the name of the item,
Spindial.spindialctrl.1 is the name of the ActiveX
control server, and Needleposition is the name of the
property. */
/* The following code also works if your system.cursor_item
is an ActiveX control: */
:form.cursor_item.OCX.spindial.spindialctrl.1.Needlposition :=
nly
:form.cursor_item.OCX.spindial.spindialctrl.1.Needlposition + 1;

e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-17
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Setting and Getting ActiveX Control


Properties

• Property accessors (PL/SQL procedures)

tblname varchar2;
tblname := table_pkg.TableName(
:item(’Oblk.Oitm’).interface);

Copyright  Oracle Corporation, 2001. All rights reserved.

Setting and Getting ActiveX Control


Properties

• Control properties dialog box


– Displays ActiveX-specific

ly
properties

n
– See Control

O
Help property

e
or
documentation

Us
AI
& O
al
rn
®

Copyright  Oracle Corporation, 2001. All rights reserved.

nte
e I
cl
ra
O

......................................................................................................................................................
H-18 Oracle iDS Forms: Build Internet Applications II
Setting and Getting ActiveX Control Properties
......................................................................................................................................................

Property Accessors (PL/SQL Procedures)


You can set and get property values with the program units, called property
accessor functions and property accessor procedures, generated from the
OLE Importer. Use the property accessor functions to get a property value,
and use the property accessor procedures to set a property value.
/* Getting an ActiveX control property using get accessor*/
tblname varchar2;
tblname := table_pkg.TableName(:item(’Oblk.Oitm’).interface);
/* table_pkg is the name of the program unit created from
the OLE Importer. TableName is the name of the property
accessor. Oblk is the name of the block and Oitm is the
name of the item.*/

Control Properties Dialog Box from the Property Palette


1 In the Object Navigator, double-click the object icon next to the ActiveX
control item to display the Property Palette.
2 Click the Control Properties property.
The Control Properties dialog box appears.
3 Set the control properties accordingly.
4 Click OK.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-19
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Invoking ActiveX Control Methods

MMVX_DMMVX.PLAY(:item
MMVX_DMMVX.PLAY(:item
((′video_ocx.video
′video_ocx.video′).INTERFACE);
′).INTERFACE);

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-20 Oracle iDS Forms: Build Internet Applications II
Invoking ActiveX Control Methods
......................................................................................................................................................

Invoking ActiveX Control Methods


Methods define actions that the ActiveX control can perform.

How to Invoke a Method


You can access methods exposed by an ActiveX control with the program
units generated from the OLE Importer. Call any of the methods in any of
the packages available under the Program Units node. To obtain information
on a specific method of an ActiveX control, see the documentation of this
ActiveX control or, if available, the Control Help property.

Example
/* Getting a cell value from a Spread Table ActiveX control
using the GetCellByColRow method provided in the
SpreadTable package */
DECLARE
Cur_Row number;
Cur_Col number;
OLEObj OleObj;
BEGIN
Cur_Row:=SpreadTable.CurrentRow(:ITEM(’BLK.ITM’).interface);
Cur_Col:=SpreadTable.CurrentCol(:ITEM(’BLK.ITM’).interface);
OLEObj:=SpreadTable.GetCellByColRow(:ITEM(’BLK.ITM’).interface,
Cur_Col, Cur_Row);
END;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-21
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Responding to ActiveX Control Events

Two ways to deal with events:


• Directly call the appropriate restricted procedure.

PROCEDURE /*Click*/ event4294966696


(interface OleObj);
BEGIN
/* Write your code here */
END;

• Code the On-Dispatch-Event trigger.

Copyright  Oracle Corporation, 2001. All rights reserved.

Responding to ActiveX Control Events

All event procedures are restricted.


• To run in unrestricted mode, use:

FORMS4W.DISPATCH_EVENT
nly
(RESTRICTED_UNALLOWED);

e O
Initialization events do not fire.
Us
• Use the When-New-Item-Instance or

AI
O
When-New-Record-Instance triggers in place.

l &
rna Copyright  Oracle Corporation, 2001. All rights reserved.
®

nte
e I
cl
ra
O

......................................................................................................................................................
H-22 Oracle iDS Forms: Build Internet Applications II
Responding to ActiveX Control Events
......................................................................................................................................................

Responding to ActiveX Control Events


ActiveX controls invoke events. Form Builder exposes these events in the
events package created from the OLE Importer. The events are defined by
the ActiveX control. Each event is associated with a PL/SQL procedure
defined in the events package. The procedures are named according to an
internal numeric representation as defined by the control. When the control
fires an event, the code in the procedure is automatically executed. You are
responsible for providing the code to respond to the event. Type directly into
the event package body and compile the package. The restricted procedure
produced by an event has an application programming interface similar to
the following:
PROCEDURE /*Click*/ event4294966696(interface OleObj);
Another way to deal with the event is to add code to the On-Dispatch-Event
trigger.

Restricted or Unrestricted Mode


All event procedures are restricted; that is, go_item cannot be called from
within the procedure code. However, there are instances when the same
event may apply to multiple items and a go_item is necessary; this is the
unrestricted case.
In the unrestricted case, you need to do the following: In the On-Dispatch-
Event Trigger (block or form level), call:
FORMS4W.DISPATCH_EVENT(RESTRICTED_ALLOWED);
FORMS4W.DISPATCH_EVENT(RESTRICTED_UNALLOWED);

ly
There is no need to explicitly call the event procedure because it will
automatically be called following the On-Dispatch trigger code.

On
Initialization Events
se
Initialization events for ActiveX controls do not fire in Forms run time.
I U
A
These initialization events are intentionally disabled. Instead, you can use

O
When-New-Item-Instance or When-New-Record-Instance triggers in place

&
of the control’s native initialization events.

al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-23
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Handling Exceptions

• When a failure occurs,


the FORMS_OLE_FAILURE is raised.
• Use LAST_OLE_EXCEPTION built-in
to get more detailed information.

. . .
WHEN FORMS_OLE_FAILURE THEN
ExceptNum :=LAST_OLE_EXCEPTION(errScr,
errDescription, errHelpfile,
errHelpContext);
. . .

Copyright  Oracle Corporation, 2001. All rights reserved.

Technical Note
The LAST_OLE_EXCEPTION built-in takes variables, not constants.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-24 Oracle iDS Forms: Build Internet Applications II
Handling Exceptions
......................................................................................................................................................

Handling Exceptions
FORMS_OLE_FAILURE Exception
When a failure is detected in handling an ActiveX control method, an FRM
message appears or the FORMS_OLE_FAILURE exception is raised. When
a FORMS_OLE_FAILURE exception is raised, you can get more detailed
information regarding the cause of the exception by calling the
LAST_OLE_EXCEPTION built-in.
/*
Handling the exception raised as a result of calling:
Var_To_Number(To_Variant(’Jane’));
An exception is raised because Jane is not a number.
*/
DECLARE
errCode PLS_INTEGER;
errSrc VARCHAR2(200);
errDescription VARCHAR2(2000);
errHelpfile VARCHAR2(200);
errHelpContext PLS_INTEGER;

BEGIN
. . .
WHEN form_ole_failure THEN
errCode := LAST_OLE_EXCEPTION(errSrc,
errDescription,

ly
errHelpfile,
errHelpContext);
-- Inform the user of the problem
On
MESSAGE(errSrc||’;’||errDescription);
se
END;

I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-25
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

Registering an ActiveX Control

• Two methods to register:


– Implicitly register using the installation
program.
– Use regsvr32.exe explicitly.
• ActiveX controls require supporting DLL:
– Must be in \Windows\System or search path
• Reregister the ActiveX control if you move it
or rename its directory.

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-26 Oracle iDS Forms: Build Internet Applications II
Registering an ActiveX Control
......................................................................................................................................................

Registering an ActiveX Control


You must register all ActiveX controls. If you install an ActiveX control by
using the installation program supplied with the ActiveX control, the
registration is most likely taken care of by the installation program. For
manual registration of ActiveX controls, use regsvr32.exe; this
program is available with Microsoft development tools and from ActiveX
control vendors.

Supporting Files
Most ActiveX controls require a supporting DLL, such as the Microsoft
Foundation Class run-time library, mfc40.dll. The DLL must be in the
\WINDOWS\SYSTEM directory or in the search path. If the DLL is out of
date or missing, your ActiveX control will not register properly. Most
reputable ActiveX control suppliers provide documentation regarding the
version and name of the DLLs required; some even supply and install them
along with the ActiveX controls.

Moving ActiveX Control Files


At installation, the directories in which the ActiveX control is installed are
registered in the Windows Registration Database in Windows 95 and
Windows NT, making the ActiveX control visible to your development
environment. If you move the ActiveX control to a different directory, or
rename the directory, the information in the registry is no longer valid. If
you must move the ActiveX control or rename its directory, use the
regsrv32.exe or regActiveX.exe utilities provided with most
Microsoft development products to reregister the ActiveX in its new
nly
O
location.

se
I U
OA
l &
rna
nte
e I
cl
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-27
Appendix H: Working with ActiveX Controls
......................................................................................................................................................
.

Summary

• VBX, OCX, and ActiveX controls


• Differences between controls
• ActiveX control in Form Builder
• Create an ActiveX control container
• Set and get ActiveX control properties
• Invoke ActiveX control methods
• Respond to ActiveX control events
• Register an ActiveX control

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-28 Oracle iDS Forms: Build Internet Applications II
Summary
......................................................................................................................................................

Summary
In this lesson, you saw how to include and use ActiveX controls in your
Oracle Developer application.
• VBX, OCX, and ActiveX controls
• Differences between controls
• ActiveX control in Form Builder
• Create an ActiveX control
• Set and get ActiveX control properties
• Invoke ActiveX control methods
• Respond to ActiveX control events
• Register an ActiveX control

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II H-29
Appendix H: Working with ActiveX Controls
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
H-30 Oracle iDS Forms: Build Internet Applications II
................................

Using Oracle Server Roles


at Run Time

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O
Appendix I: Using Oracle Server Roles at Run Time
......................................................................................................................................................

Oracle Server Views for Roles

• SESSION_ROLES
• ROLE_ROLE_PRIVS
• ROLE_SYS_PRIVS
• ROLE_TAB_PRIVS

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
I-2 Oracle iDS Forms: Build Internet Applications II
Using Oracle Server Roles at Run Time
......................................................................................................................................................

Using Oracle Server Roles at Run Time


Overview
You can manipulate roles dynamically at run time by using Forms. For
example, you can select views from the data dictionary to get information
about existing roles. Subprograms belonging to the DBMS_SESSION
package enable you to modify the roles that are used by the menu module to
enforce security.

SESSION_ROLES View
Roles that the user currently has enabled
Column Description
ROLE Name of the role

ROLE_ROLE_PRIVS View
Information about roles granted to other roles
Column Description
ROLE Name of the role
GRANTED_ROLE Role that was granted
ADMIN_OPTION Subprogram that signifies that the role was granted with the ADMIN
option

ROLE_SYS_PRIVS View

ly
Information about system privileges granted to roles
Column Description
On
e
ROLE Name of the role
PRIVILEGES System privileges granted to the role
Us
ADMIN_OPTION
I
Column that signifies the grant was with the ADMIN option

A
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II I-3
Appendix I: Using Oracle Server Roles at Run Time
......................................................................................................................................................

Oracle Server Views for Roles

• SESSION_ROLES
• ROLE_ROLE_PRIVS
• ROLE_SYS_PRIVS
• ROLE_TAB_PRIVS

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
I-4 Oracle iDS Forms: Build Internet Applications II
Using Oracle Server Roles at Run Time
......................................................................................................................................................

ROLE_TAB_PRIVS View
Information about table privileges granted to roles.
Column Description
ROLE Name of the role
OWNER Owner of the object
TABLE_NAME Name of the object
COLUMN_NAME Name of the column, if applicable
PRIVILEGE Object privilege granted to the role
GRANTABLE YES if the role was granted with the ADMIN option, otherwise NO

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II I-5
Appendix I: Using Oracle Server Roles at Run Time
......................................................................................................................................................

Procedures for Managing Roles

• DBMS_SESSION.SET_ROLE
• DBMS_SESSION.IS_ROLE_ENABLED

Copyright  Oracle Corporation, 2001. All rights reserved.

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
I-6 Oracle iDS Forms: Build Internet Applications II
Procedures for Managing Roles
......................................................................................................................................................

Procedures for Managing Roles


Package Description
DBMS_SESSION DBMS_SESSION is a standard
package that comprises many
subroutines. Two of them are used
to manage menu module roles
dynamically.
DBMS_SESSION.SET_ROLE (‘RoleName’) This package is used to assign a
particular role to the current user.
DBMS_SESSION.IS_ROLE_ENABLED (‘RoleName’)

Example
The following Pre-Form trigger uses the DBMS_SESSION package to test a
user’s role before allowing access to the application.
IF not (DBMS_SESSION.IS_ROLE_ENABLED(’ADMINISTRATIVE’) or
(DBMS_SESSION.IS_ROLE_ENABLED(’TECHNICAL’)
THEN
MESSAGE(’You are not authorized to run this application’);
PAUSE;
RAISE form_trigger_failure;
END IF;

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
Oracle iDS Forms: Build Internet Applications II I-7
Appendix I: Using Oracle Server Roles at Run Time
......................................................................................................................................................

nly
e O
Us
AI
& O
al
ern
Int
cle
ra
O

......................................................................................................................................................
I-8 Oracle iDS Forms: Build Internet Applications II

Вам также может понравиться