Developer 2000 Notes
Transcription
Developer 2000 Notes
Oracle Forms Builder Oracle Schema Builder Generate the following two tables : Employee EmployeeNo - Primary Key, Number, required, constraint <100, > 500 (Between 100 .. 500) EmployeeTitle - Var Character of length 5, constraint Mr, Mrs, etc, default value 'Mrs' (In ‘Miss’, ‘Ms’…) EmployeeName - Var Character of length 30 EmployeeAddress - Var Character of length 30 EmployeeTelephoneNo - Number, optional Salary - Number, constraint >2000, <5000 (Between …) Birthdate - Date, required Department DepartmentNo - Primary Key, Number DepartmentTitle - Var character length 30 EmployeeNumber - Number Create relationship between employee number in both tables Save table Page 1 of 24 Oracle Forms Builder 100 Miss 101 Mr 103 Mrs 10 10 20 Mary Kelly John Smith Mary Dow Galway 55555 2500 5/1/91 Galway 66666 300 15/10/90 Tuam 2000 5/5/86 Research Finance Accounts 11111 100 101 103 Insert Into Employee Values (100,’Miss’, ‘Mary Kelly’, ‘Galway’, 5555, 2500, ‘5-Jan-1991’); Page 2 of 24 Oracle Forms Builder Forms Builder Record Æ Insert, Action Æ Save Query ÆEnter, Query ÆExecute Query Count Hit Name field: =Mary Kelly - returns all records where Mary Kelly is the name Name field: =% S% - returns all records where employee surname begins with S Salary field: >=2000 - returns all records where salary is greater than or equal to 2000 Generate query to return records for all employees living in Galway or Tuam, :aid=’Tuam’ or :aid=’Galway’ Query/Where used to enter more complex queries, :variable, e.g. :tid = ‘Miss’ and :aid = ‘Galway’ Deleting record from table Record Æ Remove :bind variable, binding to attribute in table File : Emp1.fmb or EmpForm1.fmb Page 3 of 24 Oracle Forms Builder Form designed by creating / editing objects using various Tools Layout Editor (F2), Canvas View Object Navigator (F3) uses icons to indicate object that has properties Property Palette (F4) Canvas visual surface on which items placed Form can be run within Oracle Forms Designer using Run Form icon Forms stored on local machine as .FMB files (ForM Binary) Compiled forms stored on local machine as .FMX files (ForM eXecutable) Tables stored on remote machine, Galvia Page 4 of 24 Oracle Forms Builder Triggers Block of PL/SQL code to customise application Trigger attached to specific object and executes in response to certain event Triggers associated with form, item, block, etc 80 different triggers in Oracle Trigger code may include calls to custom PL/SQL code called Built-Ins, e.g. message, open_form, commit,etc 5 classifications of triggers: Key, On, Post, Pre, When Possible to utilise ‘Built-In’ procedures, i.e. code already written and tested 250 various built-in’s: • Forms Builtins • Query Builtins • Record Builtins • Application Builtins • Misc Builtins Page 5 of 24 Oracle Forms Builder Record Built-ins CHECK_RECORD_UNIQUENESS CLEAR_RECORD CREATE_QUERIED_RECORD CREATE_RECORD DELETE_RECORD DOWN DUPLICATE_RECORD FIRST_RECORD GENERATE_SEQUENCE_NUMBER GET_RECORD_PROPERTY GO_RECORD INSERT_RECORD LAST_RECORD LOCK_RECORD NEXT_RECORD NEXT_SET PREVIOUS_RECORD SCROLL_DOWN SCROLL_UP SELECT_RECORDS SET_RECORD_PROPERTY UP UPDATE_RECORD Page 6 of 24 Oracle Forms Builder Add nine buttons to navigate through the records: First, Last, Prev, Next, Insert, Delete and Close Change Name and Label in properties window for each button Trigger is When-Button-Pressed Use following built-ins: Last_Record; Next_Record, Previous_Record, First_Record, Commit, Close_Form(‘ nameofform’), Enter_Query, Execute_Query Insert Record code: declare commit_alert Number; begin commit_alert:= show_alert('Commit'); if commit_alert = alert_button1 then commit; end if; if commit_alert = alert_button2 then rollback; end if; end; Page 7 of 24 Oracle Forms Builder Delete Record code: Declare Delete_Alert Number; Begin Delete_Alert:= Show_Alert('Delete'); If Delete_Alert = Alert_Button1 Then Delete_Record; Commit; End if; If Delete_Alert = Alert_Button2 Then Rollback; End if; End; Next Record Code: Begin Next_Record; If :Employeeno = Null Then message('null data encountered'); message(' '); Previous_Record; Else message('not null'); message(' '); End If; End; Close Form code: Page 8 of 24 Oracle Forms Builder Close_Form('**Employee'); Page 9 of 24 Oracle Forms Builder Page 10 of 24 Oracle Forms Builder Need to modify the 'Requirement' value for employee number, we set this requirement in the Schema Builder Can do this manually by changing the defer_requirement_enforcement property for the Form OR we can change this requirement property by writing a program that calls the Set_Form_Property builtin to change the value of some property of a form… Create a When-New-Form-Instance trigger at the Form level Declare Form_Id formModule; Begin Form_Id := Find_Form(:System.Current_form); Set_Form_Property(Form_Id, Defer_Required_Enforcement, Property_True); message(' Welcome to Developer / 2000'); message(' '); End; Page 11 of 24 Oracle Forms Builder Modify the employee form to add a bonus field. If the employee salary is greater than 3000, the employee gets a commission of 10% otherwise the employee gets a bonus of 5% Post_Change trigger associated with Salary Text Item Modify Name property for each new item, (i.e. Bonus, Total) Database item property = No Datatype = Number Display the Salary, Bonus and Total for each record. Begin Message('Salary value after changing'); If :Salary > 3000 then :Bonus := :Salary * 0.10; Else :Bonus := :Salary * 0.05; End If; :Total := :Salary +:Bonus; End; Page 12 of 24 Oracle Forms Builder Add When-Validate-Item trigger to employee address field so that only values accepted are Galway, Sligo, Mayo, Roscommon and Leitrim. If a wrong value is entered, the employee address field should turn red When correct value entered, field will return to white. Use Set_Item_Property Builtin to modify the Visual_Attribute property of the Employee Address field Create an alert called Wrong_Address, set the title, message, number of buttons, button labels and default button properties of this alert. Create 2 new Visual_Attribute objects, one called White_Back and the other called Red_Back The White_Back will have the background colour set to white. The Red_Back will have the background colour set to red. Add exception code so that record will not be committed to database until the correct value in entered into the employee address field Page 13 of 24 Oracle Forms Builder Declare Item_Id Item; Alert_Button Number; Begin Item_Id:=Find_Item('Employeeaddress'); If Id_Null(Item_Id) Then message('Item not found'); End If; If lower(:Employeeaddress) not in ('galway','mayo','sligo', 'roscommon', 'leitrim') Then Alert_Button := Show_Alert('Wrong_Address'); Set_Item_Property(Item_Id, Visual_Attribute,'Red_Back'); Raise Form_Trigger_Failure; Else Set_Item_Property(Item_Id, Visual_Attribute,'White_Back'); End If; End; Page 15 of 24 Oracle Forms Builder Add a command button to the canvas: Name = Hide_Btn, Label = Hide Add another command button to the canvas: Name = Other_Btn, Label = Other Create a When-Button-Pressed trigger associated with the Hide button. Set_Item_Property('Other_Btn', Visible, Property_False); Set_Item_Property(‘Last_Btn', Label, 'Final'); Page 16 of 24 Oracle Forms Builder Open the Employee Form Add a new text item (name = Relocation) and new prompt (= Relocation) Set the Calculation Mode for this text item = Formula, in the Formula field enter :Total*1.1 Go to the Data - > Data Type, make sure it is Number Get help on Format Mask Field - F1 Go to the Data - > Format Mask and set it to "e"9,999.99 Notice format for output values Go to Birthdate text item Go to the Data - > Format Mask and set it to DY DD-MONTH-YYYY BC Page 17 of 24 Oracle Forms Builder Master Detail Relationship Using the datablock wizard, create data block for Employee table In the object Navigator, highlight the data block item and select new – will create another Data Block Create a second datablock using the Department table, display all fields Notice extra tab on Data Block Wizard On Master-detail window, select Create Relationship Uncheck AUTO-JOIN check box Foreign key relationship should automatically get displayed. Run form, place cursor in employee no field and run a query Include Go_Block built-in as part of When-New-FormInstance in order to place the cursor in the top block. Page 18 of 24 Oracle Forms Builder Notice Relations Item created under Datablocks Look at Delete Record Behavior property • Non-Isolated: Default setting. Prevents deletion of a master record when associated detail records exist in database. • Isolated: Allows master record to be deleted and does not affect associated detail records in database. • Cascading: Allows master record to be deleted and automatically deletes any associated detail records in detail block's base table at commit time. Include scroll bar on employee layout that will display 5 records at a time. Run form, place cursor in dept no field and run a query Include GO_BLOCK built-in as part of When-New-FormInstance in order to place the cursor in the top block. Page 19 of 24 Oracle Forms Builder Create a WHEN NEW FORM INSTANCE trigger for the form Each form runs / executes using same Master Document Interface (MDI) Concept of individual forms and MDI (common) form Possible to set title of MDI and individual forms by setting properties directly or by writing a PL/SQL program!! Set the CASE INSENSITIVE PROPERTY for each data item that may be queried Page 20 of 24 Oracle Forms Builder Declare Fm_Id FormModule; Begin Fm_Id :=Find_Form(:System.Current_Form); Set_Form_Property(Fm_Id,Defer_Required_Enforcement, Property_True); Set_Window_Property(Forms_Mdi_Window,Window_State,Maximize); Set_Window_Property(Forms_Mdi_Window,Title,'MDI Title' ); Set_Window_Property('Window1', Window_State, Maximize); Set_Window_Property('Window1', Title, 'Form Title'); End; Page 21 of 24 Oracle Forms Builder Possible to generate primary key value automatically Use Sequence – database object created by user, possible for multiple users to share access to sequence Sequences stored and generated independently of tables SQL> Create sequence name Increment by n Start with n Minvalue n Maxvalue n ; Notice no , between parameters… SQL> Select Sequence_Name, Min_Value, Last_Number From User_Sequences; SQL> Alter Sequence name increment by 10; NextVal, CurrVal SQL> Select name.NEXTVAL From Dual; SQL> Select name.CURRVAL From Dual; SQL> Insert into EMP values (name.Nextval, xxx…..); SQL> Drop Sequence name; Initial Value for Employee No property set => :Sequence.my_seq.Nextval Page 22 of 24 Oracle Forms Builder Creating Menu File -> New -> Menu Set name property = Menu Tools -> Menu Editor Page 23 of 24 Oracle Forms Builder Page 24 of 24