====================================================================== MORE ABOUT R:BASE 4.0 ====================================================================== PRODUCT: R:BASE VERSION : 4.0 AREA : NEW PRODUCT CATEGORY: FEATURES DOCUMENT#: 650 ====================================================================== R:BASE 4.0 provides a host of new features (all features are also included in the 16-bit version of R:BASE 3.1D). In addition to the features highlighted in this issue of the Exchange, you'll want to review the Guide to Software Installation and New Features, where all the new features are discussed. Increased Number of Tables and Columns ====================================== R:BASE 4.0 now lets you go beyond the 80-table, 800-column limit. Before connecting to a database, SET EXTENDED ON. The EXTENDED setting tells R:BASE that you want more than 80 tables or 800 columns and also sets a database mode. All users who connect to the database must also have EXTENDED set ON or they'll get the message "Unable to connect data- base." Only users who are running R:BASE 4.0 or R:BASE 3.1D can concurrently access a database that is open in extended mode. Once that database is disconnected, it will revert to being compatible with earlier versions of R:BASE unless you have gone beyond the 80/800 limits. Once you have created more than 80 tables or 800 columns in a database, only R:BASE 4.0 and R:BASE 3.1D can connect to that database and must have EXTENDED set to ON to do so. Earlier versions of R:BASE (2.11, 3.1, 3.1A, 3.1B, and 3.1C) will no longer be able to access the database at all. SET EXTENDED ON automatically sets COMPATIBILITY OFF. Setting EXTENDED OFF does not set COMPATIBILITY back ON. You must explicitly set COMPAT- IBILITY ON. Compatibility is another data-base mode that requires all users who concurrently connect to a particular database to be in the same mode. COMPATIBILITY tells R:BASE that you want to share this data- base with 2.11 (R:BASE for DOS). The EXTENDED setting also provides access to row locking. You do not need to add additional tables or columns to use rowlocking, but you must set EXTENDED ON. The above restrictions on concurrent usage will apply even if you don't exceed the 80-table, 800-column limits. Modify Large Tables through the Menus ===================================== Info Create/modify (RBDEFINE) is no longer limited to 80 columns per table. Even though R:BASE would allow you to create tables of up to 400 columns, you had to use R> commands to create and modify tables with more than 80 columns. In R:BASE 4.0, menu-driven table creation and modification can now handle up to 400 columns per table. Count Tables and Columns ======================== The LIST command in R:BASE 4.0 now displays the total number of tables and columns in a database. The numbers display at the top of the table list and include numbers for these hidden R:BASE system tables: syscomp - (6 columns; holds expressions used in computed columns) syspass - (7 columns; used for the SQL password security system) You'll have these hidden tables only if you are using the features indicated. The new LIST command capability lets you see at a glance whether you are approaching the 800-column/80-table limit. If you are, you'll want to consider using the new EXTENDED setting to go beyond these limits. Expanded Use of Wildcards ===================== The LIST COLUMN command now allows use of wildcards when listing columns to see only certain columns. For example, LIST COLUMN cust% lists columns beginning with the letters "cust" only. LIST COLUMN %id% lists columns containing the letters "id" only. The wildcards used must correspond to the current settings for your SINGLE and MANY characters. Note that if your column name contains a character that matches a wildcard character R:BASE will consider it as a wildcard. For example, with the default SINGLE and MANY settings of _ and %, LIST COLUMN cust_% will list columns beginning with "cust", not columns beginning with "cust_". The underscore is assumed to be a wildcard character, not part of the column name. The SHOW VARIABLE and CLEAR VARIABLE commands also support wildcards for displaying and clearing variables. For example, SHOW VAR vcust% displays only those variables beginning with the letters "vcust". SHOW VAR var_ displays only those variables whose name is four characters long and begins with "var" (var1, var2 etc.). SHOW VAR v_custname displays those variables starting with "v", anything for the second letter and ending with "custname". It does not show the individual variable "v_cust-name", the underscore is assumed to be a wildcard, not part of the variable name. To show the value of the variable "v_custname" only, set the SINGLE character to ?, or use the WRITE command. CLEAR VARIABLE uses wild cards in the same way as SHOW VARIABLE and LIST COLUMN. For example, CLEAR VAR v____cust clears all nine character variables that start with the letter "v" and end with the letters "cust" no matter what characters are in between. CLEAR VAR v_c% clears all variables that begin with "v", have anything for the second character, a "c" for the third character and end with anything. It does not clear just variables that begin with "v_c", the underscore is assumed to be a wildcard character, not part of the variable name. CLEAR ALL VAR EXCEPT vcust% clears all variables except those that start with the letters "vcust". Center Menus Automatically ========================== The CHOOSE command now includes a keyword that allows you to easily center a menu on the screen. You can replace either the row and/or column number in the AT clause with the word CENTER. If you replace both the row number and the column number with CENTER, the menu is centered in the middle of the screen. If you replace only one, the menu is centered horizontally with respect to the specified row or vertically with respect to the specified column. The following centers the menu horizontally on row 10: CHOOSE vcustomer FROM #VALUES FOR company FROM customer AT 10,CENTER This example centers the menu vertically with the left side of the menu at column 10: CHOOSE vcustomer FROM #VALUES FOR company FROM customer + AT CENTER,10 And this example centers the menu both vertically and horizontally: CHOOSE vcustomer FROM #VALUES FOR company FROM customer + AT CENTER,CENTER Create a Dynamic Menu of File Names =================================== A new keyword, #LFILES, has been added to the CHOOSE command, which lets you create a menu listing files from a specified directory. The #LFILES keyword supports the use of wildcards and drive and directory specifications. For example, CHOOSE vfilename FOR #LFILES IN *.DAT builds a menu of all files in the current directory with the file extension .DAT; CHOOSE vfilename FOR #LFILES IN f:\dbfiles\*.* builds a menu of all files in the dbfiles directory on drive f:. #LFILES uses the standard DOS convention for wild cards. The Layout Setting Now Works on Views ===================================== Within R:BASE Browse/edit, the Layout menu option lets you change the appearance of the screen by hiding columns, moving and resizing columns, changing colors, and so forth. When LAYOUT is set ON, the changed format is saved so that the next time you choose the table from the Info menu it has your previously defined format. In previous versions of R:BASE, saved layouts worked only on tables; in R:BASE 4.0, you can now save defined layouts on views as well. In addition, you can now reset your layout back to the original by pressing Shift-F5. Reports Now Support up to 84 Lines per Page =========================================== The reports generator in R:BASE 4.0 now lets you define reports longer than 66 lines - you can define up to 84 unique lines. Now you can easily create reports to print on legal-sized paper or forms. When the maximum number of lines has been reached, Reports displays the word FULL in the status bar. Lookups Added to Views ====================== Lookup expressions in Reports and Forms are no longer limited to tables. R:BASE 4.0 has extended the lookup capability to views. Deletion Rules Now Definable ============================ R:BASE 4.0 now allows you to define a rule restricting deletion of rows rather than addition of rows to a table. That is, you can define a condition that must be met before a row can be deleted from a table. This provides a further guarantee against having "orphan" rows in your database. An orphan row is a row in a detail or dependent table for which no master record exists. For example, you might want to define a rule on the customer table that won't allow you to delete a record if outstanding invoices exist for that customer. The "Delete" quick rule is like the "Verify a Value" rule. It says you cannot delete a row as long as a matching row exists in the other table. You can define custom delete rules for other conditions. Global deletions in forms work differently if you have delete rules defined. Normally, global deletions in forms start by deleting the row from the master table and then prompt for deleting the rows in the dependent tables. If you have a delete rule that won't allow deleting a row from the master table if dependent rows exist in a form, you need to delete records from the dependent tables first. Then you can delete the record from the master table without violating the delete rule.