==================================================================
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 COLUMN
MUST 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.