You are previewing Oracle Developer Forms Techniques.
O'Reilly logo
Oracle Developer Forms Techniques

Book Description

Oracle Developer Forms Techniques describes the concepts and techniques needed to build Web-enabled applications with Forms. The book covers advanced topics in great detail, including understanding and overcoming error handling limitations in Forms, such as errors which cannot be tracked through normal FORM_SUCCESS or FORM_FAILURE, ordering by items based on FK look-ups, obtaining Query Count without actually executing a query, and performing an exclusive server-side commit from Forms. The book also covers object-oriented methods in Forms, and Intelligence in Forms. Code segments are provided to help developers implement these techniques, thus easing application development time and effort.

Table of Contents

  1. Copyright
    1. Dedication
  2. About the Author
  3. Acknowledgments
  4. Tell Us What You Think!
  5. Introduction
    1. What's New
    2. The Structure of This Book
    3. Intended Audience
    4. Conventions Used in This Book
  6. 1. GUI Development
    1. Standard Toolbar Implementation
      1. Displaying Menu-Level Toolbars
      2. Displaying a Form-Level or Window-Level Toolbar
      3. Simulating the ToolTip Feature in Forms 4.5
      4. Toolbar Tips
        1. The Toolbar Template Form
        2. Common Form Toolbars
        3. Window-Specific Toolbars for Modal Windows
      5. Floating Toolbars
        1. Floating Toolbar Pop-Up Menus
    2. Timers and Displaying a Clock
      1. Using REPEAT Timers
    3. Special Tips for List Items
      1. Populating List Items Dynamically
      2. Populating a List Item with Date and Number Values
      3. Adding Items to the Beginning of a List
      4. Adding Items in the Middle and to the End of a List
      5. Simulating a Drill-Down and Drill-Up LOV Using T-Lists
      6. Simulating the Find Feature of List of Values
    4. Ordering by Foreign Key Items in Forms
    5. Querying by Nonbase Table Items
    6. Tips for Standard GUI Practices and Forms Development
    7. Summary
  7. 2. Advanced GUI Development: Developing Beyond GUI
    1. Playing with Relations
      1. Suppressing Master-Detail Behavior
      2. Toggling Between Immediate and Deferred Coordination
    2. Obtaining Query Count Without EXECUTE-ing a Query
    3. Using Form and Global Variables
      1. Tips for Working with Variables
    4. Base Tables
      1. Changing the Base Table of a Block Dynamically
      2. Basing a Block on a FROM Clause QUERY
        1. DML Operations on a Block Based on a FROM Clause Query
      3. Basing a Block on a Stored Procedure
        1. Tips for Basing Blocks on Stored Procedures
        2. Specifying Ad Hoc Query Criteria in Case of Blocks Based on Stored Procedures
    5. The Power of Record Groups
      1. Changing a Record Group Dynamically
      2. Adding to the Beginning of a Record Group
      3. Adding in the Middle or at the End of a Record Group
      4. Multiple Selection
      5. Intermediate Sorting Using Record Groups
    6. Creating a Customized Sign-on Form
    7. Avoiding Confusion Between DO_KEY and the Corresponding KEY- Trigger
    8. Window Management in Forms
      1. Closing a Window with the × Icon
      2. Resizing, Repositioning, and Closing Any Window
    9. Summary
  8. 3. Multi-form Applications
    1. Myths About the Form Filename, Form Module Name, and Form ID
    2. Passing Data from the Called Form to the Calling Form
    3. Form Management in an OPEN_FORM Configuration
      1. Proper Navigation Between Forms
      2. Proper COMMIT
      3. Proper Exiting Sequence
      4. Simulating a CLOSE ALL FORMS
    4. Tracking QUERY_ONLY Mode
    5. Special Tips for Working with Multi-form Applications
    6. Summary
  9. 4. Advanced Forms Programming
    1. The Work-around for PL/SQL 2.x Limitations in Forms 4.5
    2. Populating a PL/SQL Table from a Block
      1. The Success or Failure of TABLE_FROM_BLOCK
    3. Taking Advantage of PL/SQL 2.x in Forms
    4. File Output from a Block
    5. An Exclusive Server-Side Commit from Forms
    6. Intersession and Interdatabase Communication from Forms
    7. Sharing a Record Group Across Forms
      1. Additional Tips for Sharing Record Groups
    8. Summary
  10. 5. Error-Message Handling
    1. The Basics of Error-Message Handling
      1. Error Type
      2. Error Severity Level
      3. Built-ins, Triggers, System Variables, and Exceptions
    2. Handling Errors
      2. Suppressing Errors Using ON-ERROR and ON-MESSAGE Triggers
      3. Errors Raised from the Failure of Forms Built-Ins
      4. Errors Raised from the Failure of Forms Object Properties
      5. The Proper Use of FORM_TRIGGER_FAILURE
      6. Errors Raised from Exceptions from Triggers and Program Unit Code
      7. Errors Raised on the Server Side and Propagated to Forms
      8. Suppressing Errors Using :SYSTEM.MESSAGE_LEVEL
    3. Deficiencies in Forms Error-Message Handling
      1. Errors That Cannot Be Tracked by FORM_SUCCESS or FORM_FAILURE
      2. The Inability of the ON-ERROR Trigger to Track Forms Errors
      3. FORM_SUCCESS or FORM_FAILURE in Nested Triggers
      4. Forms' Inability to Track OVERALL FORM SUCCESS
      5. Forms' Inability to Track Whether a Particular Trigger Fired or Which Trigger Fired
    4. Summary
  11. 6. Object-oriented Methods in Forms
    1. Inheritance
    2. Encapsulation
    3. Object and Code Reusability
      1. Subclassing
      2. Subclassing and Copying
      3. Object Groups
      4. Object Libraries and Subclassing by Means of Smart Classes
      5. Form Libraries
    4. Polymorphism
    5. Summary
  12. 7. Intelligence in Forms
    1. Smart Classes and Smart Triggers— How Smart Are They?
      1. How Smart Classes Exhibit Intelligence
      2. How Smart Classes Lack Intelligence
      3. How Smart Triggers Exhibit Intelligence
      4. How Smart Triggers Lack Intelligence
    2. Does Subclassing Exhibit Intelligence?
    3. Normal Trigger Intelligence
      1. How Triggers Exhibit Intelligence
      2. How Triggers Lack Intelligence
    4. Intelligence with Regard to Form Object Properties
      1. How Forms Ignores Object Property Values and Thereby Enforces Smart Rules
      2. How Forms Fails to Be Smart While Using Some Object Property Values
        1. How Smart Is Forms in Implementing Query-Only Mode?
        2. Other Non-smart Object Properties
    5. Intelligence with Regard to Form Wizards
      1. How Smart Is the Forms Data Block Wizard?
      2. How Smart Is the Forms LOV Wizard?
    6. Summary
  13. 8. Additional Interesting Techniques
    1. Programmatically Canceling a Query
    2. Programmatic Equivalent of Cancel Query
    3. Validation, Navigation, and Simulating Navigation
      2. VALIDATE
    4. Enhancing the Function of Exit Form
    5. Preventing Validation of WHEN-VALIDATE-ITEM for Control Items During Query Time
      1. How Does the Validation Unit Property Influence This Behavior?
    7. When to Use the Same Trigger and How to Make It Fire at Multiple Levels
      1. Using the Same Trigger at Multiple Levels
      2. Making the Same Trigger Fire at Multiple Levels More Than Once
    8. A Block Level Commit
    9. Summary
  14. 9. Working with Trees
    1. Creating a Tree Item
    2. Operations on a Tree Item
      1. Caution Regarding Ordering Tree Item Data
      2. Dynamically Populating a Tree
      3. Selection of a Node
      4. Double-clicking a Node
      5. Expanding a Node
      6. Collapsing a Node
      7. Expanding All Nodes
      8. Collapsing All Nodes
      9. Finding a Particular Node
    3. Planting and Growing Trees—Dynamically Adding Nodes Along with Data to an Existing Base Tree
      1. Adding a Sub-tree to the Next Node of a Given Node and at the Same Level
      2. Adding a Sub-tree as the First Top-level Node of a Tree (Before the Node at Level 1)
      3. Adding Tree Data Elements
        1. Adding a Single Node as the Next Successive Node of a Given Node and at the Same Level
        2. Adding a Single Node as the First Top-level Node of a Tree (Before the First Node at Level 1)
    4. Shrinking Trees
    5. Summary
  15. 10. Oracle 8 and 8i Features in Forms Developer
    1. Techniques for Querying and Updating New Data Sources in Forms Based on Objects
      1. CRUD on Object Table Based Blocks in Forms
      2. CRUD on Object-Type Based Items in Forms (Column Object)
    2. A New Look at Relations Using REFS
      1. Using Join Conditions for Forms Relations
      2. Using REF Items for Forms Relations
    3. Basing a Block on a Stored Procedure Involving Object Tables
    4. Record Groups and LOVs Based on Objects
      1. The Effect of Directly Selecting the REF Column
      2. Record Groups Based on Object Columns and/or Object-type Based Object Tables
      3. Dynamically Creating Object Record Groups
    5. PL/SQL8 and 8i in Forms
      1. PL/SQL8 and 8i in Forms 6.0
      2. PL/SQL Features Common to Oracle 8 and 8i
    6. Summary