================================================================== MAY/JUNE 1992 PROBLEMS & WORKAROUNDS ================================================================== PRODUCT : R:BASE VERSION : 3.1 AND UP CATEGORY: SUBCATEGORY: ================================================================== Export and Embedded Quotes ========================== When exporting an ASCII DELIMITED file, embedded quotes in text strings are not handled correctly. Gateway will always use double quotes (") around the text fields, but embedded quotes are not doubled. If the data is imported back into R:BASE, the embedded quote is assumed to be the ending quote for the text string and the data will not load correctly. 3638, Fixed in 3.1C WORKAROUND: Use UNLOAD DATA...AS ASCII to export the data from R:BASE intead of using the Import/Export utility. The embedded quotes will be properly doubled. Exporting data as dBASE ======================= When exporting data to a dBASE file and the data contains note datatypes, if one of the note fields has data with a length of exactly 511 bytes (or a multiple of 512 - 1 [512*n-1] ), the data will be exported incorrectly. The .DBT file will have an extra block. All the records following the one with the length of 511 bytes will be offset and the data will appear in the wrong columns. 367, Fixed in 3.1C WORKAROUND: Edit the data to either add or subtract characters so it is not exactly 511 bytes long. Editing Exceptions in Gateway ============================= The Exception Editor in the Import/Export utility (Gateway) does not work correctly if you edit and load exceptions one-by-one. When you edit and load them one-by-one the exception editor copies the row you edited and loaded over the row that is immediately below in the exception file, i.e. it duplicates the row that was loaded and loses the next row. Depending on the number of rows in the exception file, you may get "Unable to open exception file" when trying to edit and load subsequent rows. Once you get that message you may get garbage displayed on your screen if you try to continue editing or loading. 3635 WORKAROUND: Edit all the exception rows and then choose to load them all as a group. Don't edit and load exceptions one-by-one. Checkbox Menus in Applications ============================== Choosing from a block in a procedure file using the CHKBOX feature, as the PRT$$$ menu does in an Application Express application, takes 7 file handles. They are not released when the menu is exited. If you choose to print in your application between 30 and 40 times you will get the errors "Out of dynamic memory handles. Check application complexity," and then "Insufficient memory to continue this function." You must exit R:BASE to clear the memory handles. 3643, Fixed in 3.1C WORKAROUND: None. Editing RBASE.CFG ================= When you edit your RBASE.CFG file and make changes to the folding table, for example, and then later make other changes, such as color or name or printer and choose Save Settings from the Configuration menu under Settings, the changes made to your folding table will be overwritten by the default folding table. 3646 WORKAROUND: After customizing the RBASE.CFG by changing features not available through the Settings menu, you need to always make changes to RBASE.CFG using RBEDIT or another editor; do not use the Save Settings menu option. Keyboard Buffer and EEP's ========================= EEP's nullify the keyboard buffer. The user must wait until the EEP has finished executing before pressing a key to move to another field. You cannot "type ahead" in a form. Multiple [Enter]'s are lost as soon as you reach a field with an EEP. 3562, Fixed in 3.1C WORKAROUND: None, other than waiting for the EEP to complete. Required Lookups in Forms ========================= In 3.1C, lookups that are customized to must succeed will always execute and return an error message as you enter a new row. This is different from 3.1B and earlier versions; they executed but did not return a message. Now, when entering data using a form you will get a red bar error message and must press a key for each required lookup as you enter each table. 3659, Fixed in 3.1C build 60J3. WORKAROUND: Don't require the lookups to succeed and use a Verify a value rule to require that the value exists before the data can be loaded. Insufficient Expression Space in Forms ====================================== If you have computed columns in a table, and a same-table lookup defined on a form using that table, every time you call up a row with the same- table lookup the computed columns are evaluated and counted as expressions. R:BASE has a limit of 100 expressions. After calling up 20 or so rows you run out of expression space for the form and get the error message "Insufficient space to process expressions." 3652 WORKAROUND: Exiting the form clears the expression space. When you get the error, just exit and then restart the form to enter the next set of data. Printer Control Codes in Labels =============================== If a printer control code is the only item located on a given line for a label, the line will not print. The User's Manual explains in Chapter 4, "Creating Reports and Labels," in a section titled "Adding a Blank Line," that R:BASE automatically removes blank lines from labels. It tells you that if you want a blank line, you have to put text or locate a field on that line, otherwise it will be compressed out. 3541 WORKAROUND: Define a variable equal to (CHAR(255)) and locate that variable on the line you want to be blank. Labels and the Error Variable ============================= LBLPRINT, the command to print labels from the R>, does not set the error variable to a non-zero value when no rows satisfy the where clause. It doesn't display the error message: "No rows exist or satisfy the specified clause" even though both messages and error messages are set on. 366 WORKAROUND: SELECT from the table/view the label is based on using the same WHERE clause to be used for printing the labels to check the error variable before printing. Locked columns in Browse/Edit ============================= Locked columns or using the NOSCROLL option in Browse/edit does not always let you edit or view all the data when the last column partially fits on the screen. For example, using CONCOMP, EDIT empid=3 =noscroll, custid=noscroll, transid, transdate, netamount, tax, freight, invoicetotal FROM transmaster. Do a CTRL Right Arrow to get out of the locked region and try to tab over to the last column (invoicetotal). Only part of the column displays on the screen. The cursor then wraps around into the non-scrolling region as you arrow through the field. You cannot get all the data to display even though chevrons display on the right side of the screen indicating more. TAB just takes you back to the leftmost non-scrolling column. 3636, Fixed in 3.1C WORKAROUND: Reorder and/or resize the columns so that you don't have columns that only display partially on the screen. Or, remove the lock while viewing the data off the screen. Replacing Data in Browse/Edit ============================= From the Browse/edit menu, choosing Edit and then choosing Replace all with..., and replacing all the values in a NOTE column, may cause your machine to hang i.e. the keyboard will stop responding. 3653 WORKAROUND: Use the UPDATE command from the R> to change all values in a NOTE column in a table. Views with Saved ORDER BY Clause ================================ If you have a 3.1B or earlier view that was saved with a multi-column ORDER BY by clause (i.e. the view definition includes order by) you can pull it up in Browse/edit in 3.1C and view the data and go over to QBE, but as soon as you do anything in QBE, even check and uncheck columns, when you try to return to browse/edit you'll get the error "Correlation #T1 not found." If you do a Shift-F3 to look at the query, you'll see that QBE has translated the query to use T_1 as correlation names (the 3.1C default) everywhere in the query except for the ORDER BY clause. That still uses #T1. The original view definition is not changed, it still will show #T1 when you look at the view. If you try to save the view without first clearing the sort you'll get "Query expression error" and lose the view definition. If you first go into QBE and modify the view, you won't be able to get to the Browse/edit screen, you'll get "Correlation #T1 not found." 3662, Fixed in 3.1C build 60J3 WORKAROUND: Using 3.1C, Clear the sort in Browse/Edit and then replace it. You can then look at the data from the view and change the query. Network Name in RBASE.CFG ========================= If there is more than one space between the keyword NAME and the user's network name in the RBASE.CFG file then that user is entered into the SERVER.SY5 file as NONE even though SHOW NAME will show the user's network name. 3644 WORKAROUND: Edit the RBASE.CFG file and be sure there is only one space between the keyword NAME and the users' name. CHOOSE from #VALUES =================== In version 3.1B or higher, CHOOSE FROM #VALUES if there are more than about 4000 values in the list to be displayed will hang your machine instead of giving you an out of memory error. In 3.1A, you would get an insufficient memory error message and then the menu would display as much data as it was able to process. 3651 WORKAROUND: Choose the data in smaller groups or SET RTVMCONV=640,128 (3.1A default). You will then get an insufficient memory error and some of the data selected will display. WHERE ... IN (list) =================== If you are comparing a column to a list of values using IN (list) and the column is text, and the list uses dotted variables for the values (e.g. colname IN (.v1,.v2,.v3) ), when the variable contains text longer than 4 characters, you'll get "No rows exists or satisfy the specified clause" even though there are rows that match one of the values. 3649 WORKAROUND: Use literal values instead of variables. When you use variables, R:BASE is only using the first 4 characters for comparison. DECLARE CURSOR and INSERT ========================= Using INSERT INTO tbl2 (colx,coly, colz) SELECT colx,coly,colz FROM tbl1 WHERE current of cursorname inside a DECLARE CURSOR loop will return "Internal error - Out of dynamic space." 3631 WORKAROUND: Since the SELECT ... WHERE CURRENT OF returns only the current row and only the columns you have included in the DECLARE CURSOR and these values have already been FETCHed, use INSERT INTO tbl2 (colx,coly,colz) VALUES .v1,.v2,.v3 using the variables from the FETCH command. Multi-user and Indexed Searches =============================== You will get the error "Disk problems. Check disk and files" after about 4700 rows when using a WHERE clause to do a walkable indexed search to find 5000 or more rows and the database is on a network server with multi-user set on. For example, you are using BETWEEN on an integer column and specifying a range that would find more than 5000 rows. 3642, Fixed in 3.1c WORKAROUND: SET MULTI OFF, use a smaller range for the search, or don't use indexes (put the values in the WHERE clause in parentheses). Date Sequence of YYYYMMDD ========================= If your date sequence and format are set to YYYYMMDD you cannot load an ascii delimited file using LOAD tblname FROM filename; it returns COLUMNMUST BE A VALID DATE. 3663 WORKAROUND: Use the Import/ export utility to load the data or use a different date format and sequence, such as MMDDYYYY. Searching for Blanks in Data ============================ WHERE colname CONTAINS ' ' doesn't work to find where a string contains a blank. It won't work even if you set a variable to a blank or to CHAR(32) and use that variable in place of the literal blank. You can't compare a value to a blank (' ') using the CONTAINS operator, you'll always get 'No rows exist or satisfy the specified clause' even if the value does contain a blank. You can compare to a blank, however, with the equals operator, WHERE colname = ' '. 3609 WORKAROUND: Use the equals operator if the value is equal to blank. Use the SLOC function to find out if the field contains a blank. For example, WHERE (SLOC(colname,' ')) > 0. SLOC returns 0 if it does not find the specified character(s) in the string. Bogus Data when Printing ======================== It is possible to see bogus data when you print a report or select from a view. It must be the second time you access the view, and you usually have a different sort condition on the second query. The bogus data displays because of the combination of the row width, number of rows selected by the view and how the data is placed in the pages of the scratch files. Sometimes high order ascii characters will display on the report, but when you look at the data in the tables it is fine. 3650 WORKAROUND: Disconnect and connect the database between commands to remove the old scratch files. Autonumbering NUMERIC Columns ============================= From the menus, when you initially autonumber a NUMERIC datatype column with a scale of 0, the first row is numbered correctly but all succeeding rows have the number left justified. The rows are numbered from 1 through 9 then -0 then start over with 1. This pattern is repeated for all the rows in the table. 3641 WORKAROUND: Modify the autonumber definition from the menus, choose to renumber the rows and it will correct itself for all rows. Or, use the AUTONUM command from the R> and it will be correctly defined. Alternatively, redefine the column to INTEGER. Page Number not Incrementing in Reports ======================================= The page number in reports, #PAGE, does not increment in a report unless a page header line is marked. The page number prints as 1 on each page. 3623 WORKAROUND: Add a PH line (it can be blank) to the report definition, the page number, #PAGE, then increments correctly on each page. Correlation Names in Views ========================== If you save a view in 3.1C it is saved with T_ as a correlation name instead of #T. If you had a report based on the view the report will now have errors because it referenced the columns as #T in the Layout and as breakpoints. 3660 WORKAROUND: Run the command file REPFIX.RMD that is included with R:BASE 3.1C build 60J3. It will modify the report structure to reference T_ instead of #T. Alternatively, you can manually edit either the view or report structure so that they continue to match with respect to correlation names. Reports on Views with an ORDER BY ================================= In 3.1C, if your report is based on a view and you print it using an explicit ORDER BY clause, and your ORDER BY clause does not reference the column names exactly as they are in the view (with correlation names, #T or T_), R:BASE does not allocate a correct row length for the scratch buffer. Then when rows are accessed you'll get errors. You may get "Out of dynamic space" or the report may just print incorrect data or your machine may hang. Application Express does not use correlation names when you choose to sort a report based on a view, neither does Quick sort from the menu. 3661, Fixed in 3.1c Build 60J3. WORKAROUND: Include the correlation names in the ORDER BY clause, or add a dummy note column to the view. Sub-Select and Disk Problems ============================ When you are using a sub-select and the column in the sub-select that creates the list is text, and the column contains a blank value (a row is blank, not null), you will get the error "Disk problems. Check disk and files" from the sub-select when it reaches that blank value. 3654 WORKAROUND: Replace the blank value with a null or an actual data value. Do not leave the column in the sub-select blank. Copying Tables ============== In a multi user situation, MULTI ON and the database is on the network server, choosing to copy a table through the menu can damage your SYSINFO table. If the original table has a description defined or has columns with long names (names > 8 characters) and the original table name is 8 characters or less, and you copy it to a name with more than 8 characters you may get 'Invalid or missing SYSINFO table' when you try to modify the new table. When you leave Info Create/modify you may get "Insufficient memory to continue this function" and you'll be returned to the R>, not the menus. If you look at the data in the SYSINFO table for the new table, you'll see a row has been added for the new table name but not for any of the columns. 3626 WORKAROUND: SET MULTI OFF before performing any database structure modifications on a network database. You can PACK the database and the new table name is okay and you'll no longer get errors about the SYSINFO table, but all the column names in the new table have been truncated to 8 characters. Rename the columns to the desired long name. GRANT/REVOKE and Views ====================== When you DROP a view or a table, the permissions GRANTed on that table or view are removed. This can have unexpected repercussions when modifying views. When you modify a view, the existing view is 'dropped' and the new definition added under the same name. Thus, any GRANTed permission on a view is removed after modifying the view. 3605 WORKAROUND: GRANT permissions again on views after modifying them. UNNAMED Columns from PROJECT ============================ The PROJECT command allows you to use SELECT functions in the USING clause. For example, PROJECT table2 FROM table1 USING col1,col2,SUM(col3) GROUP BY col1,col2. But the resulting table is created with column(s) named UNNAMED wherever a function is used. Using more than one function in the PROJECT will result in multiple UNNAMED columns in the result table, a violation of the data dictionary rules. 3633 WORKAROUND: Modify the table through the menus to give the UNNAMED columns names so the table can be used in reports and the columns used in WHERE clauses. You cannot use the RENAME or REDEFINE commands to change the column names. Renaming Tables =============== In a multi-user situation, MULTI ON and the database is on the network server, if you rename a table from lower case letters to upper case letters or vice-versa (customer to CUSTOMER or CUSTOMER to customer) and there are rows in the SYSINFO table for that specific table (i.e. autonumber, long column names, etc) , the system seems to get stuck in a loop and will run until it uses all the available disk space. You end up with errors in your database in the SYSINFO table. 3620, Fixed in 3.1C WORKAROUND: SET MULTI OFF before performing any database structure modifications on a network database. Quick Select and Dates ====================== When choosing Quick Select, or using CHOOSE...#WHERE you cannot use #DATE as a comparison value for a column. You'll get the error message " must be compared to date values." 3581 WORKAROUND: Enter today's date as a literal value.