Electronics
Btrieve
Motorcycling
Software

Btrieve FAQ

How do I run Btrieve on SFT III server?
Should I flag my Btrieve files as "sharable" to NetWare?
Does Btrieve for Windows work with Windows 3.1?
Where on NetWire can I find Novell's database patches?
If my application runs twenty-four hours a day...
Do I need to load Brequest if I want to access the Btrieve NLM...
What does the "Total" column in the BUTIL -STAT indicate?
How can I obtain UPPER.ALT, the file containing the alternate
How can I define a C long integer as a key in Btrieve
What is a status 1015?
When I program with Btrieve, why does Btrieve return a status 22
When I perform a Get Next Extended operation, Btrieve returns a
Can a supplemental index be created through Btrieve or NetWare
Does a user need create rights in the directory where a Btrieve
When I am attached to a lot of NetWare v3.11 servers (24), each
With NetWare Btrieve v6.0, when I perform an Insert (2)
After I create a Btrieve file with an alternate collating
If you create a supplemental index and then close the Btrieve
When I run Btrieve applications in multiple DOS sessions from
Can BREBUILD rebuild Btrieve files created in the Btrieve v3.x
Will Brequest work in an OS/2 v2.0 DOS Box?
Why is the NetWare Btrieve NLM returning a status 18 (Disk Full)
I have just upgraded to NetWare v3.11 and the NetWare Btrieve
German umlauts are not displayed correctly with the version of
When I run the NetWare Btrieve v5.15 NLM with some applications
How can I create Data Definition Files (.DDF) files to work with
What version of the Btrieve requester should I use with
Using the NetWare Btrieve NLM v6.0, BTRMON and NDBMON show files
What happens when you use NetWare Btrieve v6.x to access a
What happens when you use NetWare Btrieve v5.x to access a
Is it true that the pathname conventions for the local and
How can a Btrieve file format version be checked? In other
Does NetWare Btrieve v6.10 still use /P: parameter?
Using NetWare Btrieve (NLM) v5.15 and Brequest v6.00b, the
The Btrieve Installation and Operation Manual for NetWare
When attempting to IMPORT a Btrieve file into a Microsoft Access...
After selecting a Named Database to backup, the following error...
Are there any third-Party ODBC drivers for Btrieve for Windows?
After installing NetWare Btrieve (NLM) v6.10, existing...
I am using NetWare Btrieve v6.0, but sometimes I need...
When running BREQUEST in an OS/2 DOS box, I receive a status 12
When the primary server with NetWare SFT III goes down and
When moving from the NetWare Btrieve NLM v5.x to the NetWare
What does the error "BSPXCOM -Bad Connection ID on send" mean?
Once I have used the NetWare Btrieve NLM v6.10x can I switch
If BTRIEVE.NLM v6.1x is configured with the -d option to force
How much real memory is allocated by WBTRCALL.DLL v6.10x
NetWare Btrieve returns a status 12 (File Not Found)
NetWare Btrieve returns a status 94 (Permission Error)
Why doesn't BREBUILD rebuild NetWare Btrieve v6.x files?
How can I direct output to a text file from an NLM

How do I run Btrieve on SFT III server?

To run Btrieve.nlm on SFT III you are required to load:

  1. Btrieve.nlm on MSEngine
  2. BSPXCOM.NLM on MSEngine
  3. AFTER311.NLM on IOEngine
Btrieve is not aware that it's running on SFT III server, the OS will take care of the i/o and mirroring.

Should I flag my Btrieve files as "sharable" to NetWare?

No. Doing so disables Btrieve's ability to detect when other applications (including backup packages and different versions of Btrieve used to access the same data file simultaneously) are accessing Btrieve files, and it can result in file corruption.

Does Btrieve for Windows work with Windows 3.1?

Yes, in all modes except REAL.

Where on NetWire can I find Novell's database patches?

Database patch files are initially uploaded to Novell's NetWire forum in NOVLIB, Library 1. Thirty days after they are uploaded, patch files are permanently moved to NOVLIB, Library 7.

If my application runs twenty-four hours a day, how can I perform a backup?

If a user has a file open through Btrieve, no other applications or users can open that file until Btrieve closes it. For the same reason, operating system "copy" commands will not work. Use Btrieve to copy the file, either through BUTIL operations or your own application. With BUTIL, use BUTIL CLONE to create a backup file, and then BUTIL COPY to copy records from the old file to the new one. The ability to back up continuously running files is a planned enhancement for future versions of NetWare Btrieve.

Do I need to load Brequest if I want to access the Btrieve NLM from the Windows environment?

Yes. The DOS requester (BREQUEST.EXE) is loaded first, and then Windows is loaded. Once a Windows application is running, the first Windows call to Btrieve loads the Btrieve Requester Interface for Windows (WBTRCALL.DLL).

What does the "Total" column in the BUTIL -STAT indicate?

"Total" gives you the number of UNIQUE values for each key. This column should not be confused with the "Total Records" column, which includes all records, not just unique values.

How can I obtain UPPER.ALT, the file containing the alternate collating sequence that sorts all characters as upper case? It was not shipped with Btrieve for Windows v5.10 and Btrieve for OS/2v5.10.

You can download this file from NetWire (NOVLIB, LIB1, filename: UPPER.ZIP).

How can I define a C long integer as a key in Btrieve, when there is no long data type?

To define a C long integer in Btrieve, specify the key as an integer with a length of four bytes.

What is a status 1015?

Status 1015 is returned by Btrieve for OS/2 if you have specified the following environment variable before starting your application:

SET BTRPARMSCHK=Y

By setting this environment variable, you can isolate errors caused by passing invalid pointers to Btrieve. When this variable is set, Btrieve validates the pointer parameters passed in for READ/ WRITE access over certain ranges. Btrieve validates the position block pointer over a range of 128 bytes; it validates the data length pointer over two bytes (data length only points to an integer); it validates the data buffer over the specified data length; and it validates the key buffer over 255 bytes.

When I program with Btrieve, why does Btrieve return a status 22 if I perform a Stat operation, even though I have allocated the maximum number of key spec buffers (24)?

Your file may be using an alternate collating sequence, which requires you to allocate an additional 265 bytes in the data buffer that you send to the Stat operation. Nine bytes are for the name of the alternate collating sequence and 256 are for the actual sequence.

When I perform a Get Next Extended operation, Btrieve returns a status 62. What does this mean?

Status 62 often indicates an error in one of the values in the descriptor or extractor (i.e. your data buffer). To check for this error, make sure the first two bytes of the data buffer contain the exact length of the data buffer you are sending to the Get Next Extended operation. The Data Buffer Length parameter in the call to Btrieve does not have to be the exact length of the data buffer, but if it is longer , any variable defined after the data buffer will be overwritten.

Can a supplemental index be created through Btrieve or NetWare SQL at the time that the Btrieve file is created?

No. Btrieve ignores bit 7 of the key flags at create time, and this is the bit that designates an index as supplemental. As a result all indexes are created as permanent.

Does a user need create rights in the directory where a Btrieve file is stored, in order to open that file in accelerated mode?

Yes, create rights are necessary because, even in accelerated mode, Btrieve may create a pre-image file. For example, during an Insert (2), if an index does not allow duplicates and the record being inserted causes a duplicates error to be returned, any pages that have already been updated for the Insert would need to be rolled back. The pages to be rolled back would remain in cache until the cache is full and needs to be flushed, and the operation would not be completed.

When I am attached to a lot of NetWare v3.11 servers (24), each running the NetWare Btrieve NLM v5.15, I get a status 38 (Transaction Control File I/O) even though each Btrieve NLM is configured for transactions. What should I do?

Check the /s parameter (number of file servers) on Brequest to see if it is large enough. A higher setting may stop the status 38.

With NetWare Btrieve v6.0, when I perform an Insert (2) operation, NetWare Btrieve inserts for a while, then it returns a status 84 (Record in Use). What should I do?

Your application should retry if it receives a status 84. In this case, NetWare Btrieve is locking the key page for a brief moment and at this time another user is trying to access it.

After I create a Btrieve file with an alternate collating sequence, is the alternate collating sequence file (the file that contained the new collating sequence) still required?

No. Btrieve stores the new collating sequence within the Btrieve file.

If you create a supplemental index and then close the Btrieve file, does the supplemental index disappear from the file?

No, the supplemental index remains in the file until you perform a Drop Supplemental Index operation.

When I run Btrieve applications in multiple DOS sessions from Windows, if I terminate a DOS session while Brequest is still loaded, the workstation hangs. What should I do?

This situation is caused by a current limitation of SPX. To avoid the problem affecting Brequest, unload Brequest before terminating a DOS session.

Can BREBUILD rebuild Btrieve files created in the Btrieve v3.x format, or do you need to run another upgrade utility first?

You should be able to rebuild Btrieve v3.x files using BREBUILD, unless they have been extended across a volume. If the files have been extended, you should run CONVERT4 to translate the Btrieve v3.x file into v4.x format, then run BREBUILD. Any Btrieve v4.x and v5.x files can be rebuilt using BREBUILD.

Will Brequest work in an OS/2 v2.0 DOS Box?

Brequest v5.16 and NetWare Btrieve (NLM) v5.15 will not run properly in multiple private DOS boxes. The system halts. Brequest v5.16 and NetWare Btrieve (NLM) v5.15 do not work in a global DOS box either. Trap D occurs when Btrieve calls are made. Both of these situations have been reported to Novell Development.

Why is the NetWare Btrieve NLM returning a status 18 (Disk Full) when I still have plenty of disk space left?

The NetWare Btrieve NLM is attempting to expand a file and the file does not have an owner name. This normally occurs when the user (bindery object) who created the file is deleted from the bindery.

Use NDIR to determine which files do not have owner names. Then, use the NetWare FILER utility to assign an owner name to these files.

I have just upgraded to NetWare v3.11 and the NetWare Btrieve NLM v5.15, and Btrieve is running slower than expected. What should I do?

A combination of factors can result in slow performance after upgrading to the NetWare Btrieve NLM v5.15 and NetWare v3.11:

Individually, each of these factors can cause minor Btrieve performance degradation. A combination of factors affects performance more noticeably. To improve performance, rebuild the Btrieve files with a page size of 4096 bytes, upgrade IPX to v3.10, and recreate volumes with a 4K block size.

German umlauts are not displayed correctly with the version of BTRTOOLS.EXE that comes with Btrieve for Windows v5.10. What should I do?

The ASCII characters for umlauts belong to the extended (unstandardized) ASCII set defined by IBM for their PC line. Microsoft Windows uses a different ASCII extended character set. Choose the appropriate Windows Font that matches the IBM ASCII set (Font "Terminal").

When I run the NetWare Btrieve v5.15 NLM with some applications on NetWare v3.11, retrieved Btrieve data is incorrect (but not corrupted). It appears, as if the wrong records are being accessed intermittently. What should I do?

To ensure that Btrieve data is retrieved correctly:

How can I create Data Definition Files (.DDF) files to work with third-party products that requires them?

You can obtain these .DDf file in two ways:

What version of the Btrieve requester should I use with BSERVER.VAP v5.15 on NetWare 2.2?

For all versions of NetWare Btrieve (VAP or NLM), you should have the latest Btrieve requester loaded at each workstation.

Using the NetWare Btrieve NLM v6.0, BTRMON and NDBMON show files as opened by a different user than the one that originally opened the files and I can't back up or close those files. Why does this happen and what should I do?

When NetWare time restrictions are in force and a user's NetWare connection is terminated, Btrieve files opened to this connection remain open. If someone logs in and gets the same connection ID as the user who previously opened the files, the Monitor utilities show that the new user opened the files. Actually, Btrieve has these files open. The files should not be backed up unless they are in Continuous Operations mode.

The new user cannot access these files because he doesn't have the necessary Btrieve position blocks. The connection ID does not give the user access to the files because the user never opened the files. To avoid leaving files open, your application should perform an explicit Btrieve Reset operation, or the workstation should be rebooted before the NetWare time restrictions take effect.

What happens when you use NetWare Btrieve v6.x to access a Btrieve file that was created in the v5.x file format?

Everything will work properly. NetWare Btrieve v6.x can access both v5.x and v6.x format files simultaneously.

What happens when you use NetWare Btrieve v5.x to access a Btrieve file that was created in the v6.x format?

A status 2 (I/O error) will be returned when you attempt to open a v6.x file with v5.x.

Is it true that the pathname conventions for the local and requester versions of WBTRCALL.DLL are the same as for local and NetWare Btrieve? For example, can you use server/volume names for the requester DLL and only drive letters for the local DLL?

Yes, the pathname conventions are the same for Windows as they are for DOS.

How can a Btrieve file format version be checked? In other words, how can someone determine whether a Btrieve file is stored in 5.x or 6.x format?

One way would be to run the version 6.x BUTIL NLM from the file server. This utility displays the file format version after executing a STAT call. However, there is no 'client' BUTIL program available which shows this information.

An easy way to check the format version of a Btrieve file is by using DOS DEBUG. Just type 'debug ' and then 'd' at the hyphen prompt. The first two bytes of the FCR (the first page in the file) will be set to FC if the file is stored in 6.x format. Otherwise, the bytes will be set to 0x00.

Does NetWare Btrieve v6.10 still use /P: parameter?

In NetWare Btrieve v6.10, the Maximum Page Size parameter (/P:) is no longer required. NetWare Btrieve can now open any Btrieve file with any page size. NetWare Btrieve v6.10 will not return status 24 from the Open operation and will ignore any value given for the /P: startup parameter.

Using NetWare Btrieve (NLM) v5.15 and Brequest v6.00b, the following syntax generates a status 12 (File Not Found) on a Btrieve Open operation: \\server\vol\dir\subdir\file

To avoid this status code, either:

The Btrieve Installation and Operation Manual for NetWare Btrieve (NLM) v6.0 states that more than one BUTIL command may be placed in a command file. For example, according to the manual, I should be able to place a -CLONE and -COPY in the same command file. However, if I place more than one command in a command file, NetWare Btrieve returns an error message stating that the format for the command file is unrecognizable. What should I do?

The information in the manual is incorrect. you may only place one BUTIL command in the command file.

When attempting to IMPORT a Btrieve file into a Microsoft Access database, Microsoft Access returns the message "Disk or Network Error" when it attempts to read FILE.DDF. Why?

This error is similar to a Btrieve status 2 (I/O Error). Btrieve v5.x returns status 2 when you attempt to use it to access Btrieve files stored in v6.x format. Microsoft Access returns "Disk or Network Error" under the same circumstances. When using Microsoft Access to IMPORT Btrieve files, either run BTRIEVE.NLM v6.x with Brequest v6.x and WBTRCALL.DLL, or make sure all files accessed with the client WBTRCALL.DLL are stored in v5.x format.

After selecting a Named Database to backup, the following error messages were returned: Error: File not found for database Error: Btrieve status 0 reading FILE.DDF dictionary file for database Error: Status 88 received on Btrieve End Continuous Operations. Why did this occur and what should I do?

The NetWare SBACKUP utility uses both NetWare SQL v3.00 and NetWare Btrieve v6.00. Basically, a status 88 will occur if there is anything wrong with the Btrieve files. In this case, a file that was associated with the Named Database was not in the directory that the utility was trying to backup.

This status will also be returned if the files selected for backup were already in Continuous Operations. The SBACKUP utility will itself do a Continuous Operations on all the files associated with the Named Database. Thus, the utility will not be able to perform the backup.

The simple solution is to ensure that all files are in the proper location specified in the Named Database. The other solution is to ensure that the files are not in Continuous Operations when using the SBACKUP utility.

Are there any third-Party ODBC drivers for Btrieve for Windows?

Q+E Software (formally Pioneer Software) has a product called ODBC Pack 1.0. This product currently includes 11 drivers for various database engines, including Btrieve. Q+E technical support said that the Btrieve file must be in NetWare SQL format. In other words, it requires .DDF files. The product also includes a utility to build the .DDF files if you do not have them.

After installing NetWare Btrieve (NLM) v6.10, existing applications trying to access BTRIEVE.NLM receive the message "Public Symbol not Found." What should I do?

This message results from improper installation of the Btrieve NLM. To install the NLM properly, obtain BTR61.EXE and perform the following ten steps:

  1. Create a temporary sub-directory (for example, \TEMPDIR).
  2. Copy BTR61.EXE to \TEMPDIR and type BTR61.EXE -d. (This step creates two subdirectories, \SYSTEM and \PUBLIC and copies appropriate files into each.)
  3. Back up all files on the server where Btrieve will be installed.
  4. Copy the files from \TEMPDIR\SYSTEM into \SYSTEM on the server.
  5. Copy all the files from \TEMPDIR \PUBLIC to \PUBLIC on the server.
  6. At the server console prompt, type "BSTOP" to unload the existing versions of BTRIEVE.NLM and BSPXCOM.NLM.
  7. At the server console prompt, type "UNLOAD CLIB".
  8. At the server console prompt, type "LOAD CLIB" to load the latest version of CLIB.
  9. At the server console prompt, type "AFTER311".
  10. At theserver console prompt, type "BSTART" to load BTRIEVE and BSPXCOM with default values.
I am using NetWare Btrieve v6.0, but sometimes I need to be able to switch back to a NetWare Btrieve 5.x system. How can I do this?

If your files are still in NetWare Btrieve v5.x format, you can load Btrieve v6.x with the -d parameter, forcing new files to be generated in 5.x format. Otherwise, the only way to switch back to Btrieve v5.x is to save the contents of your v6.x format file, then generate a v5.x clone and load the data into the v5.x file.

When running BREQUEST in an OS/2 DOS box, I receive a status 12 when I try to open a file that I know exists. Why can't I open the file?

This status code can be returned when running BREQUEST with v2.00 of the NetWare OS/2 Requester. Make sure to update your requester to v2.01.

When the primary server with NetWare SFT III goes down and resynchronization is taking place, NetWare Btrieve returns a status 95 (Session Not Valid). and NetWare SQL returns status 2103 (NW$SQL is Not Active on the Requested Server). What should I do?

Raise the IPX retry count in your NET.CFG. The recommended value is 40 or more. The workstations are timing out and their SPX connections are being terminated.

When moving from the NetWare Btrieve NLM v5.x to the NetWare Btrieve NLM v6.x, do I have to convert the 5.x files to a 6.x format?

The NetWare Btrieve NLM v6.10x has built in support for v5.x files. System administrators can choose whether or not to convert the Btrieve data files in order to upgrade the NLM to 6.10x. As always, read the README that comes with Btrieve for up to date directions on moving from one version to the next.

What does the error "BSPXCOM -Bad Connection ID on send" mean?

Btrieve has sent a message to a workstation that has been timed out by the NetWare watchdog.

To prevent the message, increase the SPX WATCHDOG ABORT TIMEOUT, SPX ACK WAIT TIMEOUT, and SPX WATCHDOG VERIFY TIMEOUT parameters on the server where BSPXCOM.NLM is loaded. Also increase the SPX ABORT TIMEOUT, SPX LISTEN TIMEOUT, and SPX VERIFY TIMEOUT parameters in the NET.CFG file on the workstation.

Once I have used the NetWare Btrieve NLM v6.10x can I switch back to Btrieve for DOS, Btrieve for OS/2, or Btrieve for Windows?

If your system requires that the files be available for both NLM and client use, there are several steps to take to insure the proper use of the file:

If BTRIEVE.NLM v6.1x is configured with the -d option to force Btrieve to create files in v5.x format, what would happen if v6.1x file flags like: Index Balanced File Duplicate Pointers Key Number Specified VATs used in File are set at creation time?

These bits are ignored if you load NetWare Btrieve v6.1x with -d. No errors will be returned. For more information about these new file creation options, see the Btrieve Programmer's Manual included with the Btrieve Developer's Kit Supplement.

How much real memory is allocated by WBTRCALL.DLL v6.10x to communicate with the Btrieve DOS requester, BREQUEST.EXE?

WBTRCALL.DLL is a DOS Protected Mode Interface (DPMI) and allocates real mode memory according to the following formula:

DOSPARMBLK + maxDataLen + POSBLK_SIZE + KEYBUF_SIZE + 2 bytes

where:

DOSPARMBLK is 28 bytes maxDataLen is defined by /d switch specified on the BREQUEST.EXE command line POSBLK_SIZE is 128 bytes KEYBUF_SIZE is 255

NetWare Btrieve returns a status 12 (File Not Found) on an Open call when using NETX under NetWare v4.x. What should I do?

NETX is causing the wrong path to be passed to BREQUEST. Use VLMs instead of NETX under the NetWare v4.x operating system.

NetWare Btrieve returns a status 94 (Permission Error) when I try to access the record manager on a NetWare Runtime Server. BREQUEST is loaded with /C:1, SUPERVISOR,SUPERVISOR_PW. What should I do?

When accessing Btrieve on a Netware Runtime Server, the user must have a username other than SUPERVISOR. The SUPERVISOR username and password cannot be used on this server to access NetWare Btrieve.

Load BREQUEST with /C:1,USERNAME,PASSWORD

Why doesn't BREBUILD rebuild NetWare Btrieve v6.x files?

You should use BREBUILD in cases where you are converting data files from v5.x format to a v6.x format. Once the files are in v6.x format, they are considered to be "rebuilt." If the file shows signs of data corruption, reload the data into a new file. Steps for reloading data are described in the NetWare Btrieve 6.10c README file.

How can I direct output to a text file from an NLM (such as BUTIL.NLM) running at the server console?

To direct output to a text file from an NLM, enter the command:

LOAD BUTIL -STAT BTRFILE (CLIB_OPT)/>sys:\output.txt

This command is case-sensitive with no spaces.

Copyright © Madis Kaal 2000-