Q58020: Can’t Search on Blank String Field in BASIC 7.00 ISAM
Article: Q58020
Product(s): See article
Version(s): 7.00
Operating System(s): MS-DOS
Keyword(s): ENDUSER | SR# S900119-140 | mspl13_basic
Last Modified: 2-FEB-1990
Blank string fields cannot be searched on with the ISAM file handler
that comes with Microsoft BASIC Professional Development System (PDS)
Version 7.00 for MS-DOS.
If a search is performed on a string field (whether the field is the
entire index or part of a combined one) and the entire field is filled
with spaces, the record will not be found and an end-of-file condition
will be returned.
To work around this problem, represent blank fields by inserting some
other character into them and searching on the presence of that
character in the field.
Due to the way the ISAM engine stores string fields in a database
table, completely blank string fields cannot be found when you use the
SEEKGT, SEEKGE, or SEEKEQ statements. This is the case whether the
string field represents the entire index or whether it is a field
(primary or not) included in a combined index. Also, the same behavior
is exhibited with fields that are unique and with those that have
duplicates.
This characteristic of the ISAM file handler is due to the way it
strips off leading and trailing spaces from a string field to conserve
disk space. For example, if the string " abc " (length of 5, with one
leading and one trailing space) is inserted into a string field with a
length of 10, "abc" (a length of 3) is actually written to the table.
Therefore, inserting a string consisting entirely of spaces results in
nothing being written to the table because every character is stripped
off.
The best workaround for this situation is to associate a special
character with string fields that are to be completely blank and set
the field equal to that character. Then, in all subsequent searches on
this field, use that character as the key.
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
Copyright Microsoft Corporation 1986-2002.