Oracle Unleashed- P14

50 201 0
Oracle Unleashed- P14

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

The module access options define whether modules should be opened from the database or the file system (or both) and what types of files should be included in the selection. The last option defines the printer that should be used for any printing requirements in the Forms Designer. The second tab in this window (shown in Figure 32.4) is used to define the options to be used when a module is run from within the Oracle Forms Designer. The first option, Buffer Records, will cause Forms to buffer only the minimum number of records (the number of records displayed plus three) in memory. All additional rows retrieved will be stored in a temporary file. The next option causes the form to be executed in debug mode. This option allows the developer to insert break statements in the PL/SQL segments to observe the values in form items and to trace the execution of the program code. Figure 32.4. Setting Oracle Forms runtime options. The next four options are related to performance tuning of Oracle Forms. Array processing allows the form to return multiple rows from the database in a single fetch cycle rather than one at a time. This usually causes better performance; however, fetching more than one row at a time may impact the memory usage in the form. In order to maintain backward compatibility, Oracle Forms allows the developer to use Version 2-style triggers (separate processing steps) in the form. The Optimize SQL Processing option causes these triggers to be processed using an optimization technique to take advantage of the more "modern" capabilities that have been incorporated into PL/SQL. Transaction Mode Optimization causes all implicit SQL statements (for example, posting and committing triggers) to optimize cursor usage so that the cursors may be shared within the form. The Statistics option will return statistics regarding cursors and other resource utilization when the form is run. The other effect of this option is that a SQL Trace session will be generated, which can be analyzed by TKPROF or another performance-analysis tool to assist with tuning. The next option will display the block menu for a form—rather than the form itself—as soon as the form starts up. This menu will allow the developer to navigate directly to a particular block rather than to the initial default. Query-only mode disables any inserts, deletes, or updates in a form. Finally, Quiet mode "turns off" the audible beep that is played whenever a message is generated in the form. Creating New Forms Modules A form may be created using the File | New | Form menu choice or by using the create-form hot key (Ctrl+Y). The new form will be added to the Object Navigator. Additionally, whenever the Oracle Forms Designer is started, a new empty form is automatically created. Similarly, program-unit libraries (Ctrl+I) and menu modules (Ctrl+-E) may also be created from the menu. These modules may in turn be saved, either by running them (with the appropriate options selected) or by explicitly executing a save from the File menu or using the iconic button in the Designer windows. Building a Simple Default Form Oracle Forms' feature of intelligent defaulting allows the developer to create a basic form in mere minutes. As an example, the Warehouse Maintenance form (shown in Figure 32.5) can be created quickly without writing a single line of program code. Figure 32.5. Warehouse Maintenance form. To build this form, first create a new form in the Object Navigator (log into the database if you have not already done so) and select the Blocks group within the new form. The block-definition dialog box will appear as shown in Figure 32.6. This form will be based on the WAREHOUSES table; therefore, enter it into the base table field and navigate to the next field using the Tab key. (Alternatively, the table name can be obtained using the Select button to the right of the table name field. This button will present a dialog box that may be used to list all the available tables in the database.) Notice that by default the name of the block changes to match the table name, although the name can be any value the developer Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. desires. Hit the Tab key again to navigate to the canvas field, which has defaulted to a value such as CANVAS1. Change the name of this field to WH_CANVAS. Figure 32.6. Block-definition dialog box. Once this box is completed, click on the Items tab to present the Item-definition dialog box shown in Figure 32.7. To obtain the columns in this table, click on the Select Columns button and all columns in the table will be listed. A plus sign preceding the column indicates that the column will be used in the form. To exclude a column, double-click on the column name in the list box. For each column listed, modify the column label and width as indicated in Table 32.2. Table 32.2. Warehouse Maintenance Form Column Definitions. DB Column Label Width WH_CODE Code 35 WH_NAME Warehouse 150 WH_OPEN_DATE Opened 60 WH_CLOSE_DATE Closed 60 Figure 32.7. Default-column definition dialog box. After the column definition is completed, the form layout should be defined using the Layout tab as shown in Figure 32.8. This form presents multiple rows in a tabular arrangement with the individual rows arranged vertically. The records field representing the maximum number of records displayed should be 8, and there should be 0 spacing between the records. Other options are used to determine whether integrity constraints should be enforced for the form and if a button palette is needed for the table. (The button palette will create a default set of iconic buttons that can be used for table maintenance.) The last checkbox will include a scrollbar in the form that can be used to navigate through the block if all records cannot be displayed at one time. Figure 32.8. Defining form style and layout. After this dialog box has been completed, click the OK box to finish constructing the form. To test the form, run it by clicking the Run icon or choose the Run option in the File menu. (Note: This chapter will assume that the Designer options Save Before Generate and Generate Before Run are selected. Otherwise these steps must be done manually prior to running the form.) The form will appear, as shown previously in Figure 32.5, with all of the data boxes empty. To list the existing data, select the Query | Execute menu choice. Data may be entered into the fields and then saved using the Action | Save menu choice, and the Action | Exit menu choice is used to close the form. Using Boilerplate Text and Graphics to Enhance Forms Applications The previous example does not provide the three-dimensional look and feel that is common in most Windows software. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. By utilizing some of Oracle Form's graphical objects and visual effects, you can transform the previous example into a more aesthetically pleasing application, as shown in Figure 32.9. Figure 32.9. Using boilerplate objects to enhance applications. To modify this form, first select the block title in the Layout Editor and remove it using the Delete key. Do the same with the box around the data grid. Now, using the select tool, select all of the column headings on the screen. To modify the font, choose the Format | Font menu choice to display the font selection dialog box as shown in Figure 32.10. In this case, choose the Arial font, Bold Italic style, and size 9 (A sample of the selected font will be shown within the dialog box.) and click the OK button to change the fonts. Figure 32.10. Font-selection dialog box. Now, position the column headings at the center above the column (defaults to left-justified using the Align Objects tool. To do this, click on the column heading text for the Warehouse Code and then while holding the shift key, click on the code field. Using the Arrange | Align Objects menu choice, choose the alignment options as shown in Figure 32.11. Repeat for all four columns. Figure 32.11. Align Objects dialog box. Now, select the Rectangle tool, and draw a rectangle as shown in Figure 32.9 so that it borders both sides and the bottom of the data grid. (Use the sizing anchors to resize and position the rectangle if necessary.) To create the three- dimensional effect, select the Format | Bevel menu choice and select the lowered effect to create the appearance of a lowered block on the screen. The depth may be adjusted using the Format | Line menu choice. Create another smaller rectangle overlapping the previous rectangle for the screen label. Using the Text tool, create the screen label (WAREHOUSES) using an appropriate font. Using the mouse, arrange the objects to appear on the screen as shown in the example. Sometimes the intelligent defaulting feature of Oracle Forms causes objects to appear differently than desired, especially regarding the fill and border-line visual attributes for the object. These can be corrected using the attribute palette buttons below the current visual-attribute display in the Layout Editor. Also, the Arrange menu provides options to move objects in front of or behind other objects. Customizing Forms with Properties As previously mentioned, Oracle Forms' intelligent defaulting capabilities can be used to create useful applications. In many cases, however, it is necessary to define specific characteristics for application objects. This can be done by modifying the properties of the form objects using the object property sheets. To examine properties, again load the form from the previous section. Each object in the form (including the form itself) has an associated context-sensitive property sheet. The properties for the objects are organized in logical groups based on usage. To change a property, select the object in the Object Navigator. If the property sheet is visible in the split window arrangement, the property sheet will automatically display for the object. If the property sheet is not visible, double-click on the icon at the left of the object name in the Object Navigator to view the property sheet. Usually, only some of the properties are visible in the window and a scrollbar is available to view the other properties. To modify a property, click on the property in the property sheet. The value of the property will be copied to the top line of the property sheet window. Edit this line and press return to modify the property. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. The first custom modifications to be made will affect the overall application appearance. First select the property sheet for the form window. Change the Window Title to "Warehouse Maintenance Form," then change the window width to 382 and the height to 200. To prevent a user from using the Windows function to resize the window frame or to minimize the form, update the Fixed Size property to True and the Iconifiable property to False for the form window. Additionally, repeat the sizing properties for the WH_CANVAS canvas. Now, select the WH_CODE item and change the Update Allowed property to False. This change will protect the primary key for the warehouses table from being changed. Finally, select the WH_OPEN_DATE and WH_CLOSE_DATE fields together. Notice that the common property sheet shows that multiple objects have been selected and that in cases where the properties are different, a set of asterisks is shown. In this case, modify the Format Mask property to be MM/DD/YY. As a final step, change the font and sizing for all of the fields in the warehouse record, by selecting all of them and displaying the common property sheet. Modify the height to equal 14 and change the font name to Arial with a size of 8 points and a weight of bold. Upon completion of these changes, save and run the new form. The result should look like the form shown in Figure 32.12. Compare this form with the form created in the previous section to see how the property changes have affected the resulting form module. Figure 32.12. Example form demonstrating custom properties. Implementing Triggers and Program Units Oracle Forms applications can be further customized by developing PL/SQL procedures and functions called triggers. These triggers are attached to specific activities in the form called events. Events typically are defined as before (PRE- FORM, PRE-QUERY, PREINSERT), after (POST-FORM, POST-QUERY, POST-INSERT), or during (WHEN-NEW- FORM-INSTANCE, WHEN-BUTTON-PRESSED) common database activities. Additionally, triggers can be associated with certain keyboard activities (for backward compatibility with character-based applications), although the trend is to minimize key triggers. The customer maintenance form shown in Figure 32.13 utilizes a pre-insert trigger to determine a unique customer number based on a sequence generator. Additionally, triggers are defined for the buttons at the bottom of the form. Figure 32.13. Customer Maintenance form. To construct this form, create a block for the CUSTOMERS table using a form style in the block layout definition. Arrange the items and boilerplate objects as shown in the figure and using the button tool, create three buttons as shown on the screen (These buttons will be labeled as PUSH_BUTTONx.). Using the Size Objects and Align Objects tools in the Arrange menu, position and size the form objects to appear as shown. Now, define the object properties as needed by defining the window and canvas sizes and titles. Next, because the customer number should be protected from update, change the Update Allowed and Navigable properties for the CUST_NO item to False. Modify the label properties for the buttons to reflect the text that is shown in the figure. At this point, the additional processing logic may be added to the form. First, select the triggers group directly below the CUSTOMERS block in the Object Navigator. Click on the Add Object button and a list will appear with the names of all allowable triggers that can be built for the form. The trigger to be built will determine the customer number for a new customer prior to insert based on the database sequence generator. While the list is displayed, either use the scroll bar to find the PRE-INSERT trigger or type the trigger name into the input box. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Generally, lists in Oracle Forms use an algorithm to narrow a list as keys are typed. In this case after typing P and R, the list will show all PRE-x triggers and the input line will type ahead because no other triggers exist that begin with those letters. Type an I and the PRE-INSERT trigger will be the only trigger in the list. The PL/SQL editor (shown in Figure 32.14) will now appear, indicating the trigger level and the name of the trigger with an area that may be used to enter the trigger procedure as shown. Once the text has been entered, click the Compile button to make sure that there are no code errors and then click the Close button to complete the trigger definition. Note the colon used to reference form fields. Other buttons can be used to revert to the version prior as of the last close or compilation, to create a new trigger, or to delete the existing trigger. Figure 32.14. PL/SQL editor for trigger creation. Finally, WHEN-BUTTON-PRESSED triggers should be created for the three buttons that were created on the form canvas as follows: Save: begin commit_form; end; Clear: begin clear_form; end; Exit: begin do_key ('EXIT_FORM'); end; The first two triggers use standard built-in procedures, while the third uses the DO_KEY built-in procedure to simulate pressing the Exit key. The Exit key is defined by the keyboard mapping for your display device. On the IBM PC keyboard, this normally defaults to the Esc key, but may be modified using Oracle Terminal. To view the actual key mapping during Oracle Forms runtime, type Cntrl-K or select show keys from the help menu in the form. This is generally a good practice to use when there is more than one way to perform the same function. Any special logic that needs to be performed prior to exiting the form can be coded in a KEY-EXIT trigger to ensure consistency. Additionally, a trigger can be written so that it calls a user defined program unit. For example, if the customer maintenance form changes the credit limit for a customer, an acceptance letter should be sent to the customer. The POST- COMMIT trigger should be written as follows: begin Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. if :customers.cust_credit_limit > 0 and :customers.old_credit is null then print_confirmation_letter (:customers.cust_no); end if; end; The print_confirmation_letter procedure would then be created as a program unit in the form. The actual logic for this procedure will be discussed in Chapter 36 in the section describing integration of Oracle Forms and Oracle Reports. Using Record Groups and Lists of Values for Data Validation A record group is an internal structure that is analogous to a table in memory. Record groups contain columns and rows with data based on a structure defined by a query or column definition. Usages of record groups include parameters, structured arrays, and validation entities. This last usage of record groups will be demonstrated in the Item Price Maintenance form shown in Figure 32.15. Figure 32.15. Item Price Maintenance form. To build this form, start with a default block for the items table using the form style layout. Next, change the Displayed Canvas to <Null> and the Displayed property to False for the ITEM_PL_ID, ITEM_PC_ID, ITEM_PROD_NO, ITEM_CP_NO, and ITEM_SIZE_CODE items. These items will be hidden from view and will be updated by the List of Values validations that will be constructed for this form. Also, make the ITEM_NO field non-updatable and non- navigable. To make this form more user-friendly, the translations for the code fields will be displayed as the input fields in the form. Using the Field tool, create five new fields as PL_NAME, PC_NAME, PROD_NAME, CP_NAME, and SIZE_DESC. The properties for these fields are shown in Table 32.3. Table 32.3. Item maintenance description fields. Property Value Canvas ITEM_CANVAS Displayed True Width 200 Height 200 Database Table Item False Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. These fields will need to be populated with data whenever an ITEMS record is queried. To do this, create the POST- QUERY trigger on the ITEMS block as follows: begin select pl.pl_name, pc.pc_name, prod.prod_name, cp.cp_name, s.size_desc into :items.pl_name, :items.pc_name, :items.prod_name, :items.cp_name, :items.size_desc from product_lines pl, product_classes pc, products prod, color_patterns cp, sizes s where pl.pl_id = pc.pc_pl_id and pc.pc_pl_id = prod.prod_pl_id and pc.pc_id = prod.prod_pc_id and prod.prod_pl_id = :items.item_pl_id and prod.prod_pc_id = :items.item_pc_id and prod.prod_no = :items.item_prod_no and cp.cp_no = :items.item_cp_no and s.size_code = :items.item_size_code; exception when NO_DATA_FOUND then message ('Database Integrity Error. Contact your DBA.'); bell; raise FORM_TRIGGER_FAILURE; end; This trigger has been written this way because in a client/server application, a single query is much more efficient than multiple independent queries. Because each of the five fields that must be loaded can be obtained through a unique row query, they can be merged in a single query step. Another (and probably better) approach would be to create a view that retrieves these values in the initial query. A view could always be used as the base table for a block. The exception step introduces a few new concepts regarding triggers. The message built-in is used to send a message to the user screen and the bell built-in will play an audible beep from the user's terminal. Also, the FORM_TRIGGER_FAILURE exception that is raised prior to exiting the trigger will cause all processing to be aborted on failure. Now the lists of values should be defined for each of the fields. To create a list of values, select LOVs in the Object Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Navigator and click the Add Object button. The new LOV dialog box will appear as shown in Figure 32.16. In the Query Text box, type in the query against the PRODUCT_LINES table as shown and click the OK button when finished. This will create a new record group and associate it with the new LOV. (Note that a list of values may also be created based on an existing record group.) Figure 32.16. Creating a new list of values. Now, select the new LOV and its property sheet. Change the name of the LOV to PRODLINE_LOV and select the Column Mapping property in the property sheet. A button will appear in the Value Edit box with the label More. Click this button to display the column mapping dialog box as shown in Figure 32.17. The column names from the query will be displayed in a table with the characteristics for the column shown below the table. To hide the ID column from the display, set the display width equal to 0. Select the PL_NAME column and set its display width to 150 and change the column title to Product Lines. Click OK to complete the column mapping. Now attach this LOV to the PL_NAME field in the ITEMS block by selecting its property sheet and scrolling towards the bottom to the Miscellaneous Properties section. Change the LOV property to PRODLINE_LOV and set the LOV X Position and LOV Y Position to 100 and 50, respectively. Finally, set the LOV For Validation property to True. This will cause the form to make sure that the value entered is valid without having to write a validation trigger. (To ensure data integrity, a WHEN-VALIDATE-ITEM trigger may be written for this field to "null out" the Product Class and Product Name fields whenever the Product Line is changed). Create a List of Values for each of the remaining non database fields. (Use the POST-QUERY trigger to determine the columns and tables for the mapping.) Figure 32.17. Column mapping for a list of values. Finally, to complete the form, create a PRE-INSERT trigger on the items block to select the next ITEM_SEQ value from the sequence generator as the value for a new ITEM_NO. The form should then be saved and generated to test this concept. A couple features to note are that the list can be activated using the List Values key (F9 in most standard IBM PC configurations. To see a list of defined keys, select Help | Show Keys from the menu) and that the validation feature allows the user to type only part of the field name to narrow the list. For example, type T into the Product Line field and then hit the tab key. The complete name, Terminal Tackle, will be filled in. Using Relationships to Link Separate Blocks in a Form Thus far, all of the examples discussed here have used only a single block for data. The key feature of Oracle (or other relational databases) is that the tables are related to each other by key fields. An example of the use of related tables is shown in Figure 32.18 in the Order Entry Form. Figure 32.18. Order entry form. To construct this form, first create a default block for the Orders table using the form layout style. Create non-database fields for customer name, address, and city using the Display Field tool. (A display field is used to display data but does not need to provide input capability). Also, create a list of values for the customer number field and define the order number and order date fields as non-navigable. (These fields will be populated in a pre-insert trigger.) A post-query trigger should be written to populate the customer information. Now, create a second block for the order_items table using a vertical tabular style that will display five rows of data. Modify the properties for the OI_ITEM_NO field so that it is not displayed and is assigned to the <Null> canvas. The only field that will remain on the canvas will be OI_QTY. Create non-database fields in this block for CATALOG_NO, ITEM_DESC, LIST_PRICE, ITEM_TOTAL using the Display Field tool. Also, create a numeric, non-displayed field ITEM_PRICE on the null canvas. Create a POST-QUERY trigger for the ORDER_ITEMS block as follows: begin Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. select i.item_pl_id||i.item_pc_id||'-'|| ltrim (to_char (i.item_prod_no, '099999'), ' ')||'-'|| ltrim (to_char (i.item_cp_no, '09'), ' ')||'-'|| i.item_size_code, p.prod_name||decode (cp.cp_name, 'N/A', ' ',' '||cp.cp_name||' ')|| s.size_desc, i.item_price into :order_items.catalog_no, :order_items.item_desc, :order_items. item_price from items i, products p, color_patterns cp, sizes s where items.item_no = :order_items.oi_item_no and p.prod_pl_id = i.item_pl_id and p.prod_pc_id = i.item_pc_id and p.prod_no = i.item_prod_no and cp.cp_no = i.item_cp_no and s.size_code = i.item_size_code; :order_items.list_price := ltrim(to_char(:order_items.item_price, '990.00'), ' '); :order_items.item_total := ltrim ( to_char ((:order_items.oi_qty * :order_items.item_price), '990.00'), ' '); end; Oracle Forms does not allow for a format mask on display items. For that reason, the fields should be defined as character fields and the item should be formatted using PL/SQL. Using right justification, the fields can be displayed so that the individual digits are properly aligned. To complete this block, create a list of values for the catalog number field with a WHEN-VALIDATE-ITEM trigger to display the list price and item total fields. Finally, to complete this form, select the Relationships group under the Orders block. Click the Add Object button to display the Relation dialog box as shown in Figure 32.19. Modify the relation name to order_item_rel and define the detail block as ORDER_ITEMS. Next, define the logic that should be followed if a master record is deleted. In this case, Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. select a cascading delete. (All detail records will be deleted if the associated master record is deleted.) The block coordination should be defined so that the detail query is immediate (Deferred is off), and the user should not be able to navigate to the detail block unless a record exists in the master block. Figure 32.19. Creating block relationships in a form. Mouse Events, Timers, and Other Advanced Widgets The standard Windows interface uses various graphical controls and other objects to control the operation of application components. Oracle Forms provides access to many of these features through the use of mouse triggers, timers, and VBX controls. Additionally, messaging in most Windows software is through an object called an alert box that has been implemented in Oracle Forms. Working with the Mouse The mouse pointer is the primary user-input device for navigation and selection in most Windows applications. Triggers have been provided in Oracle Forms to detect and act on various mouse activities. Oracle Forms 4.5 utilizes the mouse for navigation and command input. Additionally, the mouse can be used to trigger specific events. An event can be triggered when the mouse passes over an item on the screen (WHEN-MOUSE-ENTER) or when it leaves the item (WHEN-MOUSE-LEAVE). A third mouse status event can occur if the mouse moves within an item (WHEN-MOUSE-MOVE). Additional triggers have been added for mouse button activities: Table 32.4. Mouse triggers. Trigger Name Event Description WHEN-MOUSE-DOWN Operator presses and holds the mouse button. WHEN-MOUSE-UP Operator releases the mouse button. WHEN-MOUSE-CLICK Operator quickly presses and releases button. WHEN-MOUSE-DOUBLECLICK Operator clicks mouse twice in succession. When these activities occur, several system variables exist to retrieve status information for the mouse. These variables are: Table 32.5. Mouse system variables. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. [...]... controls are available for purchase Additionally, developers may create their own VBX controls using C++ or other programming languages With the advent of Oracle Forms 4.5, these elements have been incorporated into the Oracle application tools In Oracle Forms, a VBX control may be used to either provide information to an application or to display application information in some specialized way To demonstrate... property for every object Quality Considerations for Oracle Forms Oracle Forms can handle a vast array of database processing functions As with any powerful tool, there are many ways to accomplish the same task It is the job of the developer to create applications that deliver the highest quality return for the lowest overall cost Quality in an Oracle system can be classified according to several key... to use a tool set as powerful as Oracle Forms is to use the tool and try new techniques until you too are an expert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark Previous TOC Page Next Page Home Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark Previous TOC Page q Next Page Home 33 r Oracle Reports 2.5 s The Oracle Reports 2.5 Environment s... Parameters s Ten Top Tips for Oracle Reports 2.5 s Summary 33 Oracle Reports 2.5 For many years, the predictors of the future have envisioned the concept of the paperless office wherein all correspondence and corporate records are stored online and all paper reporting has been eliminated Reality, however, has shown that hard-copy reports continue to be required at an ever-increasing rate Oracle Reports is the... data in the Oracle database These reports can be previewed on the user screen before being printed or can be printed directly Optionally, report output may also be saved in a file to be used at a later date This chapter explains how to set up the Oracle Reports environment and the methodology for constructing several reports These reports will cover all aspects of report development using Oracle Reports... on www.verypdf.com to remove this watermark Such modifications are inevitable in practically every Oracle database application, and if object-oriented principals are used from the beginning, changes will be easier to make in the future The final concept that is absolutely key in the development of Oracle applications is performance Unfortunately, in many cases, performance is an afterthought in application... see what SQL statements are being run for a form, run the form with the STATISTICS mode on This will create a trace file in the Oracle Home directory (Your DBA should be able to help you find this directory.) The trace file should then be translated using the TKPROF utility (Oracle' s performance tuning utility) as follows: TKPROF tracefile listfile EXPLAIN=username/password This utility will describe... out bottlenecks and indicate where locking strategies may need to be revised Summary The material presented in this chapter has defined the primary building blocks for creating Oracle Forms applications that access data in an Oracle database Items are built into form blocks, which appear on a canvas in defined windows Triggers and program units combine to provide a robust development system that can... because the Oracle optimizer will resolve both halves of the query and then merge the result As can be seen by this basic example, as the number of query fields increases in the control block, the where clause would become more complex and the performance of the query would degrade very quickly Ideally, the where clause should be written to reflect only the fields that contain data Starting with Oracle. .. :system.mouse_button_pressed; :b1.shift_state := :system.mouse_button_shift_state; end; The default installation of Oracle Forms includes several libraries and sample programs that can be used in your Forms development One of these libraries, DRAG.PLL, provides functions that can be used for drag-and-drop functionality in Oracle Forms To use this library, select the Attached Libraries group in the form and click the Add . languages. With the advent of Oracle Forms 4.5, these elements have been incorporated into the Oracle application tools. In Oracle Forms, a VBX control may. defaults to the Esc key, but may be modified using Oracle Terminal. To view the actual key mapping during Oracle Forms runtime, type Cntrl-K or select show

Ngày đăng: 07/11/2013, 20:15

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan