0% found this document useful (0 votes)
327 views

Oracle Forms 10g Tutorial

This document contains a tutorial on Oracle Forms 10g with examples of different form features including canvases, blocks, stored procedures, nested tables, and multiple data sources. Sample dialogs are provided and explained to demonstrate concepts like stacked canvases, blocks based on views, procedures and collections, and relating blocks to nested tables and multiple tables.

Uploaded by

Sudhakar
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
327 views

Oracle Forms 10g Tutorial

This document contains a tutorial on Oracle Forms 10g with examples of different form features including canvases, blocks, stored procedures, nested tables, and multiple data sources. Sample dialogs are provided and explained to demonstrate concepts like stacked canvases, blocks based on views, procedures and collections, and relating blocks to nested tables and multiple tables.

Uploaded by

Sudhakar
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 41

Forms 10g Tutorial

1. Introduction
Here is a collection of Oracle Forms 10g sample dialogs extracted from a complete Oracle Forms tutorial.
This tutorial has been written in French and it would be too time consuming to translate it all in English.
This is the reason why I hae only extracted and translated these sample dialogs.
The purpose of this article is not to teach how to build a new form from scratch. It intends to show some of the main
adanced features of the product.
To clearly understand in details how these dialogs wor!" you will hae to open them in the Forms #uilder and examine
them thoroughly.
Howeer" in this article" I am going to explain the best I can the most important mechanisms of each sample.
These sample hae been tested with an Oracle Forms 10g release 10.1.$.0.$ on an Oracle %atabase 10g
Express Edition &elease 10.$.0.1.0.
2. Description of the sample dialogs
2.1 Main screen
T'TO(FO&)*.F)#
This dialog is the entry point of the samples. +lic! on a button to start the corresponding dialog.
2.2 Canvases
TE*T(+,-.,*.F)#
This sample shows three types of canas /
The content canas 0light green1
The stac!ed canas 0white1
The tab canas 0dar! green1
*tac!ed canas
, stac!ed canas is displayed atop2or stac!ed on2the content canas assigned to the current
window. *tac!ed canases obscure some part of the underlying content canas" and often are
shown and hidden programmatically. 3ou can display more than one stac!ed canas in a window at
the same time
, stac!ed canas allows to scroll a big canas in a delimited window.
In this sample" the stac!ed canas 0+.(E)4(11 is twice bigger than its iewport.
The <Down button allows to moe the stac!ed canas programatically/
Set_View_Property('CV_EMP_1', VIEWPORT_Y_POS_ON_CANVAS, 140)
Here are the properties of this stac!ed canas/
!iewport
.iewport 5 position 66
.iewport 3 position 11
.iewport 7idth $1$
.iewport Height 189
"h#sical
.iewport 5 position on canas 0
.iewport 3 position on canas 0
7idth $1$
Height $2%
The second *tac!ed canas 0+.(E)4(81 demonstrates how to integrate in a Tab canas/

2.$ &loc's
2.$.1 &loc' (ased on a comple) view
TE*T(#:O+(.'E.F)#
This sample show how you can base a bloc! on a iew that aggregate the columns of seeral tables 0in this case" %E4T
and E)41 and when you can insert" update and delete from the target tables from this iew.
The code that handles the target table is located in a program unit" called from the three bloc!;leel triggers/
O-;I-*E&T
O-;'4%,TE
O-;:O+<
This is the code of the ins_upd_emp_dept procedure/
PROCE!"RE i#$_%p&_e'p_&ept IS
(N)!%''y P(S_INTE*ER +, 0
-E*IN
.. T/01e !EPT ..
-e2i#
Se1e3t 1
I#to (N)!%''y
4ro' !"A(
W5ere e6i$t$( $e1e3t &ept#o 7ro' &ept w5ere &ept#o , +EMP_!EPT8!EPTNO )
.. 4o%#& .9 %p&/te ..
Me$$/2e('"p&/te !EPT t/01e')
"P!ATE !EPT
SET !NAME , +EMP_!EPT8!NAME
W:ERE !EPTNO , +EMP_!EPT8!EPTNO
E63eptio#
W5e# #o_&/t/_7o%#& T5e#
.. Not 7o%#& .9 i#$ert ..
Me$$/2e('I#$ert i#to !EPT t/01e')
INSERT INTO !EPT ( !EPTNO, !NAME )
VA("ES ( +EMP_!EPT8!EPTNO, +EMP_!EPT8!NAME )
E#&

.. T/01e EMP ..
-e2i#
Se1e3t 1
I#to (N)!%''y
4ro' !"A(
W5ere e6i$t$( $e1e3t e'p#o 7ro' e'p w5ere e'p#o , +EMP_!EPT8EMPNO )
.. 4o%#& .9 %p&/te ..
Me$$/2e('"p&/te EMP t/01e')
"P!ATE EMP
SET ENAME , +EMP_!EPT8ENAME
W:ERE EMPNO , +EMP_!EPT8EMPNO
E63eptio#
W5e# #o_&/t/_7o%#& T5e#
.. Not 7o%#& .9 i#$ert ..
Me$$/2e('I#$ert i#to EMP t/01e')
INSERT INTO EMP ( EMPNO, ENAME )
VA("ES ( +EMP_!EPT8EMPNO, +EMP_!EPT8ENAME )
E#&

EN!
2.$.2 &loc' (ased on stored procedures
TE*T(#:O+(4&O+.F)#
This sample demonstrates how a bloc! can be based on stored procedures.
This feature can be implemented in two ways/
, &EF +'&*O&
, 4:=*>: table
In addition to that" there are also two different locations where to implement this functionality/
The O-;xxx triggers
The transactionnal triggers
In this sample" the top bloc! uses a &EF +'&*O& with the O-;xxx triggers
The bottom bloc! uses a collection with the standard transactionnal triggers.
The stored procedures are located in the PKG_EMP pac!age shipped with the scripts.
&loc'1 *+M",- .+F C/.01. and 123))) triggers

The 4uer# Data 0ource T#pe is set to "rocedure and the 4uer# Data 0ource 2ame indicates the name of the ?uery
procedure.
The insert" update" delete and loc! orders are managed in the corresponding On;xxx triggers/
Example of O-;I-*E&T trigger/
!EC(ARE
(R)E'p e'p_p;28e'p_re3
-E*IN

(R)E'p8e'p#o +, +e'p8e'p#o
(R)E'p8e#/'e +, +e'p8e#/'e
(R)E'p8<o0 +, +e'p8<o0
(R)E'p8$/1 +, +e'p8$/1
(R)E'p83o'' +, +e'p83o''

emp_pkg.emp_insert( LR$Emp );
EN!
The ariable used as parameter is of type of e'p_p;28e'p_re3
TYPE e'p_re3 IS RECOR!(
e'p#o e'p8e'p#o=TYPE,
e#/'e e'p8e#/'e=TYPE,
<o0 e'p8<o0=TYPE,
$/1 e'p8$/1=TYPE,
3o'' e'p83o''=TYPE)
Then the emp_pkg.emp_insert() stored procedure/
............
.. I#$ert ..
............
PROCE!"RE e'p_i#$ert(r IN e'p_re3) IS
-E*IN
INSERT INTO e'p (e'p#o, e#/'e, <o0, $/1, 3o'')
VA("ES(r8e'p#o, r8e#/'e, r8<o0, r8$/1, r83o'')
EN! e'p_i#$ert
&loc'2 *+M"5T.6,- Collection and transactionnal triggers
This bloc! uses a collection of records with the emp.pkg.emp_query procedure.
TYPE e'pt/0 IS TA-(E O4 e'p_re3 IN!E> -Y -INARY_INTE*ER
PROCE!"RE e'p_?%ery(e'p_&/t/ IN O"T e'pt/0) IS
ii N"M-ER
C"RSOR e'p$e1e3t IS
SE(ECT e'p#o, e#/'e, <o0, $/1, 3o'' 4ROM e'p
OR!ER -Y e#/'e
-E*IN
OPEN e'p$e1e3t
ii +, 1
(OOP
4ETC: e'p$e1e3t INTO
e'p_&/t/( ii )8e'p#o,
e'p_&/t/( ii )8e#/'e,
e'p_&/t/( ii )8<o0,
e'p_&/t/( ii )8$/1,
e'p_&/t/( ii )83o''
E>IT W:EN e'p$e1e3t=NOT4O"N!
ii +, ii @ 1
EN! (OOP
EN! e'p_?%ery
The collection of records is an I- O'T parameter" read from the database and returned to Forms.
The insert" update"delete and loc! orders are also managed by stored procedures.
0see them in detail in the E)4(4<@ pac!age1
Hae also a loo! at the 4uer# Data 0ource Column property that manages the relation between the columns of the
collection and the items of the bloc!.
2.$.$ &loc' (ased on a relational ta(le that contains a collection
TE*T(+O::E+TIO-.F)#
In this dialog" we can see how to handle a table that contains a nested table 0collection1.
There is no standard buit;in to base a bloc! on a collection" but we will see how easy it is to wor! with this sort of
obAect ia the O-;xxx triggers.
Here is the description of the table 0,&TI+:E*1
CREATE TA-(E ARTIC(ES
( CO!E VARC:ARA(A0 -YTE),
(I-E((E VARC:ARA(100 -YTE),
PRI> N"M-ER(B,A),
CTETOT N"M-ER(B,0),
CASES TA-_TYP_CASE
)
NESTE! TA-(E CASES STORE AS CASES_NT
RET"RN AS VA("E
T,#(T34(+,*E is a table of obAects of type / T34(+,*E
3re/te or rep1/3e TYPE TYP_CASE AS O-DECT
(
EMP VARC:ARA(10),
CTE N"M-ER
)
In this sample" the first bloc! 0,&TI+:E*1 displays the standard columns of the ,&TI+:E table
and the second bloc! 0detail1 displays the columns of its nested table.
"opulate the detail (loc' *nested ta(le,
The detail bloc! 0+,*E*1 is dynamically populated each time a master record change in a 7hen;-ew;&ecord;
Instance of the master bloc!/
!e31/re
(C)Re? V/r35/rA(AEF)
-e2i#
I7 +ARTIC(ES8CO!E I$ #ot #%11 T5e#
.. !y#/'i3 ?%ery o7 $e3o#&/ry 01o3; ..
(C)Re? +, '(SE(ECT 3/$e$8EMP, 3/$e$8CTE 4ROM TA-(E ( SE(ECT 3/$e$ 4ROM /rti31e$
W:ERE 3o&e , ''' GG +ARTIC(ES8CO!E GG ''') 3/$e$)'
*o_-1o3;('CASES' )
C1e/r_-1o3;
Set_Block_Property( 'CASES', !ER"_#A$A_S%!RCE_&A'E, LC$Re( ) ;
.. pop%1/te t5e 01o3; ..
E6e3%te_C%ery
*o_-1o3;('ARTIC(ES')
E1$e
*o_-1o3;('CASES' )
C1e/r_-1o3;
*o_-1o3;('ARTIC(ES')
E#& i7
E#&
#ecause it is not possible to create a new article with a -':: collection" we hae to handle the insertion into the
,&TI+:E table in a O-;I-*E&T trigger/
..............................................................
.. we /re &oi#2 /# e6p1i3it i#$ert 0e3/%$e t5e #ew re3or& ..
.. 3/##ot 3o#t/i# / N"(( 3o11e3tio# ..
..............................................................
INSERT INTO ARTIC(ES
(
CO!E,
(I-E((E,
PRI>,
CTETOT,
CASES
)
VA("ES
(
+ARTIC(ES8CO!E,
+ARTIC(ES8(I-E((E,
+ARTIC(ES8PRI>,
+ARTIC(ES8CTETOT,
$AB_$"P_CASE() )) insert *n empty collection
)

Indeed" if we insert a -':: collection" it will be no longer possible to insert anything in the nested
table.
Then after" it is easy to manage the detail records with the O-;xxx triggers of the +,*E* bloc!/
O-;I-*E&T/
.. I#$ert t5e row i# t5e 3o11e3tio# ..
INSERT INTO TA-(E
(
SE(ECT
3/$e$
4ROM
/rti31e$
W:ERE
3o&e , +ARTIC(ES8CO!E
)
V/1%e$
(
TYP_CASE( +CASES8EMP, +CASES8CTE )
)
O-;%E:ETE/
.. !e1ete row i# t5e 3o11e3tio# ..
!E(ETE 4ROM TA-(E
(
SE(ECT
3/$e$
4ROM
/rti31e$
W:ERE
3o&e , +ARTIC(ES8CO!E
) 3/$e$
W:ERE
3/$e$8e'p , +CASES8EMP

etc.
2.$.% &loc' (ased on multiple data sources
TE*T(%,T,(*O'&+E*.F)#
I this sample dialog" we can see how to base a bloc! on seeral tables that share an identical structure.
0see the B,-.IE&" FE.&IE& and ),&* tables created by the install.s7l script1
The list item is populated with the name of three tables that share the same structure/
Then" the source table of the bloc! is changed dynamically in the 7hen;:ist;+hanged trigger/
I7 +CTR(8C:OI> i$ #ot #%11 T5e#
+21o0/1835oi6 +, +3tr1835oi6
31e/r_7or'
+3tr1835oi6 +, +21o0/1835oi6
.. 35/#2e t5e C%ery !/t/ So%r3e ..
Set_Block_Property('$ES$+', !ER"_#A$A_S%!RCE_&A'E, ,glo-*l.C.%/0 );
2o_01o3;('TESTA')
e6e3%te_?%ery
E#& i7
2.$.8 &loc' (ased on an o(9ect ta(le that contains a collection of references
TE*T(O#BET*.F)#
:etCs see how to manage an obAect table that contains a collection of references.
This sample is based on the obAect table 0,&TI+:E(O#B1 that contains a collection of references/
3re/te or rep1/3e TYPE RE4_TYP_EMP AS O-DECT
(
re7_e'p RE4 TYP_EMP
)
3re/te or rep1/3e TYPE TA-_RE4_TYP_EMP AS TA-(E O4 RE4_TYP_EMP
3re/te or rep1/3e TYPE TYP_ARTIC(ES AS O-DECT
(
CO!E VARC:ARA (A0),
(I-E((E VARC:ARA (100),
PRI> N"M-ER (B,A),
CTETOT N"M-ER (B),
REMP TA-_RE4_TYP_EMP .. 3o11e3tio#
)
CREATE TA-(E ARTIC(ES_O-D O4 TYP_ARTIC(ES
NESTE! TA-(E REMP STORE AS REMP_NT
RET"RN AS VA("E
The tip is the same that the one used to manage the relational table with nested table/
; , when;-ew;&ecord;Instance trigger on the master bloc! to populate the detail bloc! 0the collection of references1/
!e31/re
(C)Re? V/r35/rA(AEF)
-e2i#
I7 +ARTIC(ES8CO!E I$ #ot #%11 T5e#
.. !y#/'i3 ?%ery o7 $e3o#&/ry 01o3; ..
:+D&e? /E F0*E:E+T emp.ref(emp.emp E)4" emp.ref(emp.?te >TE
F&O) T,#:E0 *E:E+T &E)4 F&O) articles(obA 7HE&E +O%E E FFF GG
/,&TI+:E*.+O%E GG FFF1 emp
7HE&E emp.ref(emp.art E FFF GG /,&TI+:E*.+O%E GG FFF1F H
*o_-1o3;('CASES' )
C1e/r_-1o3;
.. 35/#2e t5e C%ery !/t/ So%r3e N/'e ..
Set_Block_Property( 'CASES', !ER"_#A$A_S%!RCE_&A'E, LC$Re( ) ;
.. pop%1/te t5e 01o3; ..
E6e3%te_C%ery
*o_-1o3;('ARTIC(ES')
E1$e
*o_-1o3;('CASES' )
C1e/r_-1o3;
*o_-1o3;('ARTIC(ES')
E#& i7
E#&
; ,n O-;I-*E&T trigger to insert a new record with an empty collection/
.......................................................
.. We /re &oi#2 /# i'p1i3it i#$ert 0e3/%$e t5e #ew ..
.. re3or& 3/##ot 3o#t/i# / N"(( 3o11e3tio# ..
.......................................................
INSERT INTO ARTIC(ES_O-D
VA("ES
(
TYP_ARTIC(ES
(
+ARTIC(ES8CO!E,
+ARTIC(ES8(I-E((E,
+ARTIC(ES8PRI>,
+ARTIC(ES8CTETOT,
$AB_RE1_$"P_E'P()
)
)
The collection of references is managed with the corresponding O-;xxx trigger of the detail bloc!/
O-;I-*E&T/
.. I#$ert / row (RE4) i# t5e 3o11e3tio# ..
!e31/re
(C)Re? V/r35/rA(AEF)
-e2i#
(C)Re? +, 'INSERT INTO TA-(E
( SE(ECT re'p 4ROM ARTIC(ES_O-D W:ERE 3o&e , ''' GG +ARTIC(ES8CO!E GG ''')
VA("ES
( RE4_TYP_EMP ( (SE(ECT RE4(/) 4ROM EMP_O-D / W:ERE /8ART , '''
GG +ARTIC(ES8CO!E GG ''' AN! /8EMP , ''' GG +CASES8EMP GG ''') ) )'

4or'$_!&1( (C)Re? )
E#&
O-;%E:ETE/
.. !e1ete t5e row (RE4) o7 t5e 3o11e3tio# ..
!E(ETE 4ROM TA-(E
( SE(ECT re'p 4ROM ARTIC(ES_O-D W:ERE 3o&e , +ARTIC(ES8CO!E ) e'p
W:ERE
e'p8re7_e'p8/rt , +ARTIC(ES8CO!E
A#&
e'p8re7_e'p8e'p , +CASES8EMP

2.% Items
2.%.1 "rincipal items
TE*T(ITE)*.F)#
Here is a description of the main items.
+lic! eerywhere on each item to see some information messages and some particular behaiours.
2.%.2 :ist items
TE*T(:I*TE*.F)#
:etCs study and handle the three sorts of list item and also the different ways to populate them.
In this sample" the three list items are synchroniIed. +hange the alue of the first list and it will adapt the content of
the second then the content of the third.
For each new list alue" the corresponding alue and label are displayed.
a1 The first list item is populated with the &@()OI* record group/
.. (i$t 1 ..
err3o&e +, Pop%1/te_*ro%p( 'R*_MOIS' )
C(EAR_(IST('-(OCA8(ISTE1')
P%P!LA$E_L/S$('BL%C+.L/S$E2', 'R3_'%/S' );
.. Se1e3t t5e 7ir$t H/1%e ..
+-(OCA8(ISTE1 +, *et_(i$t_E1e'e#t_V/1%e('-(OCA8(ISTE1', 1 )
b1 Then init the second list item
.. "p&/te t5e wee;$ 1i$t ..
err3o&e +, Pop%1/te_*ro%p( 'R*_SEMAINES' )
C(EAR_(IST('-(OCA8(ISTEA')
P%P!LA$E_L/S$('BL%C+.L/S$E+', 'R3_SE'A/&ES' );

.. Se1e3t t5e 7ir$t H/1%e ..
+-(OCA8(ISTEA +, *et_(i$t_E1e'e#t_V/1%e('-(OCA8(ISTEA', 1 )
c1 That finally init the third list item/
PROCE!"RE I#it_(i$teI IS
(C)! V/r35/rA(1A)
(C)!/y V/r35/rA(A0)
-E*IN
.. "p&/te t5e &/y$ 1i$t ..
(C)! +, '01J01JA00E'
C1e/r_(i$t( '-(OCA8(ISTEI' )

4or i IN 088F (oop
SE(ECT
to_35/r( To_&/te((C)!, '!!JMMJYYYY' ) @ (i @ ((To_#%'0er(+-(OCA8(ISTEA).1) K
L)), '4M!/y !! Mo#t5' )
I#to
(C)!/y
4ROM &%/1

A44_List_Element('BL%C+.L/S$E5', i 6 2, LC$#*y, LC$#*y ) ;

E#& 1oop

.. Se1e3t t5e 7ir$t H/1%e ..
+-(OCA8(ISTEI +, *et_(i$t_E1e'e#t_V/1%e('-(OCA8(ISTEI', 1 )

E63eptio#
W5e# Ot5er$ t5e#
N%11
EN!
2.%.$ Image items
,:#')(4HOTO.F)#
This dialog is the main part of the ensemble that allows to search" attach and display images.
3ou can build a photo album based on a one imageCs column table.
CREATE TA-(E P:OTOS
( (E*EN!E VARC:ARA(100 -YTE),
P.%$% BL%B &%$ &!LL E&ABLE,
4ORMAT VARC:ARA(E0 -YTE) NOT N"(( ENA-(E,
CRE!IT VARC:ARA(E0 -YTE) NOT N"(( ENA-(E,
(IEN VARC:ARA(100 -YTE),
I!ENTI4IANT N"M-ER(E,0) NOT N"(( ENA-(E,
NOM VARC:ARA(E0 -YTE),
CONSTRAINT P:OTO_PM PRIMARY MEY (I!ENTI4IANT) ENA-(E
)
It shows two ways to search a filename on the local machine with and without 7ebutil.
#y clic!ing on a picture" you can naigate on another canas to display the detail of the picture/
+H,&@E(4HOTO.F)#
The get5file5name sample dialog is only a Jpure exercice of styleK " because it is so easy to pic!;up a file with the
File_Open_Dialog() 7ebutil function.
This sample is interesting to see how to use the HOST() and TEXT_IO() functions to get the list of the local machine
dries and their content.
+H,&@E(4HOTO(7E#'TI:.F)#
,nother dialog to store the picture and its properties.
2.%.% ;ava &ean component
TE*T(@&,4H.F)#
Here is a sample to demonstrate how to handle a bean area.
This dialog use the Oracle Forms@raph Baa #ean that is part of the Oracle Forms demos.
3ou can download the [email protected] file on the OT- page
http/==www.oracle.com=technology=sample(code=products=forms=files=formsgraph(patch$00L.Iip
2.%.8 Calculated items
TE*T*(+,:+':.F)#
:etCs see how to use the calculated items.
The first calculated item use the 0ummar# calculation mode/
The third one use a Formula calculation mode
2.8 <lerts
TE*T(,:E&TE*()E**,@E*.F)#
This dialog shows how to use the ,lert boxes to build the messaging engine of your Forms application.
The message texts are read from the database then displayed ia ,lert boxes.
To reduce the number of messages needed in the application" some of them can ta!e from 1 up to 8 parmeters 0M1"
M$ and M81. , pipe 0G1 character allows to split the message on seeral lines.
The main bloc! is based on the M+00<6+0 table.
CREATE TA-(E MESSA*ES
( CO!E N"M-ER(E,0) NOT N"(( ENA-(E, .. %#i?%e i&e#ti7i/#t
TE>TE VARC:ARA(AEF) NOT N"(( ENA-(E, .. te6t o7 t5e 'e$$/2e
TITRE VARC:ARA(100), .. tit1e o7 t5e /1ert
STOP VARC:ARA(1) !E4A"(T 'N' NOT N"(( ENA-(E, .. S5/11 we $top t5e pro3e$$ N
(r/i$e 7or'_tri22er_7/i1%re)
A(ERTE VARC:ARA(1E), .. #/'e o7 t5e /1ert 0o6
CONSTRAINT MS*_PM PRIMARY MEY (CO!E) ENA-(E
)
This sample use the Ai!"e_#essage() procedure of the T/T15F1.M0 pl=s?l library to display the messages.
These messages can be displayed through the 8 alert boxes aailable in eery dialog of this demo.
,:(E&&E'& wich is the simple JO<K alert box.
,:()*@(O'I(-O- wich is a yes=no alert box 0default yes1
,:()*@(-O-(O'I wich is a yes=no alert box 0default no1
2.= "ropert# classes and visual attri(utes
TE*T(+:,**E*(4&O4.F)#
:etCs see some ways to use the property classes and the isual attributes to coloriIe and highlight dynamically different
obAects of the form 0alert" item" current record" etc.1.
4roperty classes and isual attributes are located in the 1&;5T/T15F1.M0.ol( obAect library.
2.> Forms internal triggering events
TE*T(+3+:E*.F)#
This dialog allows you to understand what trigger fire and in what order when you use the application.
#efore each particular action" you can clear the list of triggers window.
This window show you what trigger is firing in what order and from what bloc! and what item.
$. Installation steps
This sample dialog need database obAects to run.
,ll the necessary obAects are proided in the tutoforms10g.Iip file shipped with the article.
This Iip file contains $ sub directories/
?config that contains the configuration files.
?scripts that contains the *?l script files to create the database obAects.
%ownload the tutoforms10g.Iip file
'nIip the tutoforms10g.Iip file under your <D+!0/IT+5@1M+?forms? directory.
+reate a new user in your database
7ith *?lNplus or *?l%eeloper" run the ?scripts?install.s7l script
note / because this demo use the 7ebutil functions" the Oracle user where you hae created these obAects must
hae the WE-"TI(_!- pac!age compiled or a grant E5E+'TE to this pac!age if it is present in another
schema.
'nder the ?tutoforms? directory compile all the source modules
3ou can use the compile5all.(at file located in the same directory to compile all obAects at once.
e.g. 3o'pi1e_/11 %$erJp/$$wor&Oi#$t/#3e
Edit the ?tutoforms?config?tutforms10g.env file to indicate your own settings 0in blue in this example1
Ooracle home adapt this alue to your own setting
O&,+:E(HO)EEDABDev10g.2
FO&)*(4,THEMO&,+:E(HO)EMPformsPtutoforms
O&,+:E(4,THEMO&,+:E(HO)EMPformsPtutoforms
FO&)*(T&,+E(4,THEMO&,+:E(HO)EMPformsPtutoforms
+:,**4,THEDABDev10g.2PformsPAaaPfrmwebutil.AarHMO&,+:E(HO)EMPAlibPdebugger.AarH
MO&,+:E(HO)[email protected]&,+:E(HO)EMPformsPtutoformsPmyIcons.AarH
O webutil config file path
7E#'TI:([email protected]
Edit the ?tutoforms?config? add5to5formswe(.cfg file to set your own database connect string 0in blue in
this example1
...
loo!,ndFeelEOracle
color*chemeEblaf
logoEno
OdonFt forget to put your own database connexion
useridCtutoforms10g?tutoforms10gDE+
+opy the ?tutoforms?config?tutforms10g.env to the ?forms?server directory
add the ?tutoforms?config? add5to5formswe(.cfg at the end of your ?forms?server?formswe(.cfg file
Then" you can start the demo by indicating the new Qtutoforms10gR formsweb.cfg section.
http://machine:8890/forms/frmservlet?config=tutoforms10g

You might also like