DOCUMENT #686
=======================================================================
JANUARY/FEBRUARY 1993 PROBLEMS & WORKAROUNDS
=======================================================================
Product: R:BASE Version : 3.1 or Higher
=======================================================================
Area : GENERAL INFORMATION Category: OTHER
=======================================================================
Here are workarounds for verified problems. The version number listed
is the version in which the problem was found. It may also occur in
other versions. A Microrim reference number is included at the end of
each description. Those marked Fixed have been corrected in a recent
release of Upgrade Express which you can purchase by calling
800-628-6990.
R:BASE 4.0
==========
Reserved Words as Names
=======================
Some of the reserved words in the reserved word list do not return
errors when used in RBDEFINE (Info Create/modify) as table or column
names. For example, BACKGROUND, FILES and BEGIN are allowed. Using
reserved words as names may cause errors depending on the context of
where the name is then used. 3673
Workaround: Verify all names against the reserved word listing in the
Command Dictionary section of the Reference Manual.
Using ARRANGE BY
================
When you misspell the word ARRANGE to ARANGE in the EDIT USING command
the command still executes; the optional ARRANGE BY is ignored. An
error message should be returned. 3741
Workaround: If it appears that an ARRANGE BY clause is being ignored,
double check the spelling of ARRANGE.
Lookups in Forms
================
A change between 3.1 and 4.0 in Forms is that 4.0 now uses the
regular R:BASE query handler instead of a special forms query handler.
The special forms query handler had many special case situations
written into it. By switching to the regular R:BASE query handler,
some expressions, such as lookups, may operate differently in 4.0
than they did in previous versions. For example, lookups that are
comparing NULL values no longer find a match. A common situation
is an enter form with a lookup with 2 conditions in the WHERE clause,
empid = empid in Employee where empfname=empfname and emplname=
emplname. This lookup won't work in 4.0 if a value is entered for
only one of the conditions, i.e. only lastname is entered, empfname
is NULL. The error message "-ERROR- Syntax is incorrect for the
command." is displayed. 3789
Workaround: Always enter values for all the columns specified in
lookup WHERE clauses. The lookup works fine if you enter both values.
Passing DATE and TIME Parameters
================================
In 4.0, passing parameters using .#DATE or .#TIME as the value will
make the %var a datatype of TEXT not DATE or TIME. For example, RUN
filename USING .#TIME and then SHOW VAR will show %1 has a datatype of
TEXT not TIME. In 3.1C, it was the correct datatype. This can cause
problems if, in your program, you then use the %var in an expression,
for example, SET VAR vbegtime TIME =(.%1), since the expression
processor looks at the datatype of the variable. 3771
Workaround: Remove the parentheses, SET VAR vbegtime TIME=.%1, to set
the variable to a TIME datatype variable.
Gateway and EXTENDED databases
==============================
It is possible to damage your database when importing data into an
extended database (> 80 tables or > 800 columns). If you get the
message "Unable to connect database -- it is open with EXTENDED set
ON.", Gateway will have overwritten your database files. 3820
Workaround: In order to open an extended database with Gateway, you
MUST set EXTENDED ON and COMPATIB OFF in the RBASE.CFG file. Gateway
will not read the database settings, it will read the .CFG settings
only. If Gateway cannot find the RBASE.CFG file on your path it will
create one with the default settings (EXTENDED OFF, COMPATIB ON) and
will overwrite your database. If importing with Gateway into an
extended database, place an RBASE.CFG file containing the correct
settings in the directory with the database.
Delete Rules and Forms
======================
The message from a delete restriction rule does not display in a form
with ERROR MESSAGES OFF when you violate the rule. Other rules do
display the rule error message with SET ERROR MESSAGES OFF. 3786
Workaround: When using delete rules, before bringing the form up on
the screen SET ERROR MESSAGES ON.
Forms on Views with an ORDER BY
===============================
On a form with a table as table1 and a view as table2, a region, if
the view has an ORDER BY clause saved with it, EDIT USING formname,
displays data for both table and the view. But as soon as you do an
F8 to move to the next row in table1, data no longer displays for the
view (table2). The data for the view only displays for the first row
in table1. Remove the ORDER BY from the view definition and the view
data displays as expected for every row that matches. 3792
Workaround: Remove the ORDER BY clause from the view and use the
ARRANGE BY option to order the rows in the view.
Removing Breakpoints in Reports
===============================
When editing a report definition, if you have more than one break
defined and you delete the lower breakpoint (using Shift-F9 on the
Create Breakpoints screen), the locations from the break footer are
not deleted, they are moved either to the DETAIL section or to the
last BREAK HEADER section. Note that the fields and text have not
been deleted before deleting the breakpoint. The text is deleted
when you delete the breakpoint, the locations are moved to another
section. 3797
Workaround: Delete all the locations first and then delete the
sections in edit mode (F9 to delete the lines) and then delete the
breakpoints from the Create Breakpoints screen.
Copying Tables
==============
From Info Create/modify choose to copy a table. If the table has a
long name (> 8 characters) and you copy it to a short name (< 8
characters), SYSINFO thinks the new table has a long name and that
it is the same long name as the original table. Everything looks
okay until you DISCONNECT and then CONNECT the database. At that
time you see two tables with the same name They aren't really the
same, there is an extra entry in the SYSINFO table. RBCHECK and
RSCOPE won't report any errors. 3811
Workaround: Delete the row from the SYSINFO table where SYSSNAME
has the new, short table name and SYSLONG has the old, long table name.
RBCHECK
=======
Invalid Names with RBCHECK
==========================
RBCHECK does not always indicate that a table or column name is
invalid. For example, names beginning with numbers are not identified
as invalid table (RNAME) or column (ANAME) names by RBCHECK. Also, a
backslash (\) in a column name is not flagged as invalid. 3668
Workaround: Become familiar with the R:BASE 3.1x and 4.0 rules for
names. Don't rely on RBCHECK to check for illegal names.
UDF's
=====
SOUNDEX UDF and Forms
=====================
The SOUNDEX UDF prints extraneous numbers to the screen when it
executes and the value it has been passed is a NULL value. In a
form it will also scroll the screen when it prints the numbers and
rewrite the status line and screen locations but not the text. Thus
the form is now out of alignment and two copies of the status line
display The SOUNDEX UDF is normally used in a computed column on a
column such as lastname. As the form prepares to enter a new row,
the computed column (and thus the UDF) is evaluated with a null value
causing the screen to scroll. 3808
Workaround: In 4.0, use the undocumented _SOUNDEX function.
Passing Values to a UDF
=======================
A UDF returns incorrect values from the R> when a literal value is
passed. The UDF is written to return a text string of the form
"0x0y0z,z" when passed three numbers "x.y.z". For example,
SET VAR x TEXT = (UDF('udfname','1.2.3')). The expected result is
010203,3, but the variable x actually contains 01/02/03, a date.
The UDF returns an incorrect value on any literal sequence of numbers
that can be interpreted as either date or time values. When the
expression handler sees the string 1.2.3 it needs to determine if it
is a date (literal dates in expressions need quotes so they aren't
divided), it decides it is and sends it off to the UDF as a date rather
than a text string. 3739
Workaround: Set a TEXT variable to the literal value and pass the
value to the UDF using the variables. SET VAR v_value TEXT='1.2.3' ;
SET VAR x TEXT = (UDF('udfname',.v_value))
Documentation
=============
Format Masks in Forms
=====================
Page 6-35 of the 4.0 User's Manual states " Format masks are usually
used on text fields but can also be used on DATE, TIME, and INTEGER
fields" This is not correct. The Guide to New Features is correct
when it says format masks can only be used on TEXT fields. 3788
EXTENDED and Multi-User
=======================
On page 5-6 of the Reference Manual, in the last paragraph on the page,
the third sentence reads "When EXTENDED is set to NO...." This should
read "When EXTENDED is set to OFF....", not NO. 3794
R:SCOPE Contiguity Symbols
==========================
The new R:SCOPE manual, on page 40, under contiguity heading, reads "A
square(n) indicates a contiguous row, a triangle (t) indicates a
noncontiguous row." The (n) should be a char(221), rectangle, and the
(t) a char(31), upside down triangle. 3802
UDF String Length
=================
The documentation that comes with the UDF packs says "(...to be safe,
the maximum length of the string containing the UDF parameters should
exceed 90 characters.)". It should read "... NOT exceed 90
characters.". 3740