Updated ACC2COMP.TXT for Jet 2.0/VB 3.0 Compatibility Layer

ID: Q113594


The information in this article applies to:
  • Microsoft Visual Basic programming system for Windows, version 3.0
  • Microsoft Jet 2.0/Visual Basic 3.0 Compatibility Layer


SUMMARY

This document contains the complete text of the ACC2COMP.TXT file that ships with the Microsoft Jet 2.0/Visual Basic 3.0 Compatibility Layer. For more information about installing the Compatibility Layer, please see the following article in the Microsoft Knowledge Base:

Q113684 : Installation Issues with Jet 2.0/VB 3.0 Compatibility Layer


MORE INFORMATION


                   A C C 2 C O M P . T X T

             Release Notes for Compatibility Layer

    Microsoft Visual Basic (R) 3.0 -- Microsoft Access (R) 2.0

           (C) Copyright Microsoft Corporation, 1994


This document describes the Microsoft Jet Database Engine version
2.0/Visual Basic version 3.0 Compatibility Layer, which enables Visual
Basic version 3.0 and applications created with Visual Basic version 3.0 to
use data stored in Microsoft Access version 2.0 databases.

------------------------
How To Use This Document
------------------------

To view this document on screen using Microsoft Windows Notepad, maximize
the Notepad window.

To print this document, open it using Windows Write, Microsoft Word, or
another word processor. Then select the entire document and format the text
in 10-point Courier font before printing.

--------
Contents
--------

1.  Summary
2.  Installing the Compatibility Layer
3.  Limitations of the Compatibility Layer
4.  Microsoft Jet Database Engine 1.1 Compatibility Issues
5.  Adapting Your .INI Files
6.  Availability of Version 2.0 Jet Database Engine Features

-----------
1. Summary
-----------

Microsoft Access version 2.0 uses a file format for database (.MDB) files
that is different from the format used by Microsoft Access versions 1.1 and
1.0. Microsoft Visual Basic version 3.0 cannot use databases in Microsoft
Access 2.0 format. If you want to share .MDB format databases between
Microsoft Access 2.0 and Visual Basic 3.0 applications, you must either:

**  Keep the .MDB files in 1.1 format, which both Microsoft
    Access 2.0 and Visual Basic 3.0 can use.

**  Install the Jet Database Engine 2.0/Visual Basic 3.0
    Compatibility Layer included on this disk.

The rest of this document describes the Compatibility Layer.

The files on this disk enable Visual Basic 3.0 (Standard or Professional
Edition) and applications created with Visual Basic 3.0 to use the version
2.0 Jet database engine to read and write data stored in Microsoft Access
2.0 databases. If your Visual Basic 3.0 application doesn't use Microsoft
Access 2.0 databases, you won't significantly benefit from using the
Compatibility Layer. If you access remote data through attached tables in
databases that use the Jet database engine, you will benefit, but you may
need to make minor modifications to the application source code. If you
don't have access to the source code, you may want to reconsider converting
to the version 2.0 Jet database engine.

---------------------------------------
2. Installing the Compatibility Layer
---------------------------------------

Before you begin, make backup copies of the existing Visual Basic 3.0 data
access files that will be either replaced or modified. These include the
following files.

Table 2.1  Files That Are Replaced or Modified
           by the Compatibility Layer
---------------------------------------------------
File            Description
---------------------------------------------------
VBDB300.DLL     Visual Basic to Jet database engine
                1.1 interface DLL
PDCTJET.DLL     Run-time DLL for Crystal Reports
PDIRJET.DLL     Run-time DLL for Crystal Reports
PDBJET.DLL      Run-time DLL for Crystal Reports
CRW.EXE         Crystal Report Designer application
VB.INI          Visual Basic initialization file
SETUPWIZ.INI    Setup Wizard initialization file

----------------------------------------------------------
NOTE  You may not have all these files on your system; for
example, CRW.EXE is included only in the Professional
Edition of Visual Basic 3.0.
-----------------------------------------------------------

To upgrade your existing Visual Basic 3.0 Standard or Professional Edition
to support the version 2.0 Jet database engine, you need the following
files.

Table 2.2  Files Needed to Upgrade Visual Basic 3.0
----------------------------------------------------
File            Description
----------------------------------------------------
MSAJT200.DLL    Version 2.0 Jet database engine
MSAJT112.DLL    Jet Database Engine 2.0/Visual Basic
                3.0 Compatibility Layer
VBDB300.DLL     Visual Basic to Jet database engine support DLL
BTRV200.DLL     Btrieve ISAM driver library
PDX200.DLL      Paradox ISAM driver library
XBS200.DLL      Microsoft FoxPro ISAM driver library
CRWACC20.EXE    Program that modifies Crystal Reports files
                to work with Microsoft Access 2.0 databases
SETUP.EXE       Application that installs the Compatibility Layer
ACC2COMP.TXT    This file

>>>To install the Compatibility Layer
-------------------------------------
  1. Insert the Compatibility Layer disk into drive A.
  2. From the File menu in the Windows Program Manager or
     File Manager, choose Run.
  3. Type a:setup
  4. Follow the Setup instructions on screen.

Once Setup is complete, you may not need to do to anything else to your
Visual Basic application, unless you've included code for creating or
compacting databases, or code that specifically refers to version 1.1
installable ISAM drivers. Details on how to deal with these and other
contingencies are discussed in the following sections.

CRWACC20.EXE is an MS-DOS-based program that enables Crystal Reports for
Visual Basic to work with the version 2.0 Jet database engine. It modifies
the following files:

**  CRW.EXE
**  PDBJET.DLL
**  PDIRJET.DLL
**  PDCTJET.DLL

The program looks for these files in the current directory or in a
directory passed in as part of the command line when it is run. To modify
these files, you must run this program after running Setup. Once the
program has modified the files it is of no further use. However, you might
reinstall Crystal Reports after you install the Compatibility Layer, so you
may want to run the program again later.

>>>To run CRWACC20.EXE
----------------------
  * At the command prompt, type CRWACC20 <path to CRW.EXE>

    For example, if CRW.EXE is in a VB subdirectory
    called REPORT, you type this:

    CRWACC20 c:\vb\report

If CRWACC20.EXE finds the files in the specified directory, it modifies
them. If you don't specify a path, it looks in the current directory. When
this program modifies a file, the date for the file is set to the current
date.

After you run Setup, examine your VB.INI file for references to the Jet
database engine 1.1 installable ISAM drivers (BTRV110.DLL, PDX110.DLL,
XBS110.DLL). Replace any references to these drivers with the new Jet
database engine 2.0 driver names (BTRV200.DLL, PDX200.DLL, XBS200.DLL). If
you use the Paradox driver (PDX200.DLL), you must also add the entry
"ParadoxNetStyle=3.x" to the [Paradox ISAM] section of the VB.INI file. In
addition, you need to modify the .INI files of any executable applications
you've created. For example, if you have an application named BREAD.EXE,
you'd have to modify the BREAD.INI file as well. For an example of new .INI
entries, see Section 5, "Adapting Your .INI Files," later in this document.

You should also change the entries in SETUPWIZ.INI to specify the new files
used in the Compatibility Layer. SETUPWIZ.INI is used with the Setup Wizard
to create distribution disks for your application. Once you've installed
the Compatibility Layer, any applications you create that perform data
access always use the version 2.0 Jet database engine, even if you're
accessing data in earlier .MDB formats or other file formats. Therefore,
whenever you distribute an application created in Visual Basic 3.0 that
performs data access, you need to include the files listed previously in
Table 2.2. (You're free to distribute these files with your application.)
For an example of new entries for the SETUPWIZ.INI file, see Section 5,
"Adapting Your .INI Files," later in this document.

Setup doesn't remove the version 1.1 Jet database engine files from your
Windows System directory. If you have no other application using those
files (such as Microsoft Access 1.1), you can delete them. As a precaution,
however, you may want to rename them or move them to another directory for
a few days before deleting them to ensure that no other application uses
them.

------------------------------------------
3.  Limitations of the Compatibility Layer
------------------------------------------

Although the Compatibility Layer enables your Visual Basic 3.0 applications
to read and write data stored in Microsoft Access 2.0 databases, it doesn't
give your applications access to all the new Jet database engine 2.0
objects and features because the existing Visual Basic 3.0 language doesn't
support programmatic access to these new features.

When your Visual Basic 3.0 application manipulates data in Microsoft Access
2.0 databases, you'll encounter the following limitations:

**  New Jet database engine 2.0 errors, which result from
    new database engine behavior, will be returned as unknown
    errors ("Reserved error <error number.>").  The error
    numbers listed in the error messages are version 2.0
    Jet database engine numbers.  To determine the message
    associated with an error number, search for "error codes"
    in Microsoft Access 2.0 Help.

**  Visual Basic version 3.0 doesn't take advantage of any
    of the new Jet database engine 2.0 properties, objects,
    or methods.  See Section 6, "Availability of Version 2.0
    Jet Database Engine Features," at the end of this document
    for a list of major new features and information about
    their accessibility from Visual Basic 3.0 applications.

**  The version 2.0 Jet database engine supports eight new
    collating orders (Arabic, Russian, Czech, Greek, Hebrew,
    Hungarian, Polish, and Turkish), which are unavailable to
    Visual Basic 3.0.  Databases created in any of these
    languages are available in read-only mode only. Data in
    the languages may not sort correctly when accessed by
    Visual Basic.

**  The version 2.0 Jet database engine allows the entry of
    zero-length strings as well as Null values.  Because of
    this, Null values aren't automatically converted to
    zero-length strings when they're entered into version
    2.0  databases.  This may cause some updates to fail
    because of validation rules that require zero-length
    strings, resulting in a message for an unknown error
    ("Reserved error <error number.>").  To fix the error,
    you have to either use Microsoft Access 2.0 to change
    the rule or not enter Null data into the database.
    For more information, see Section 6, "Availability of
    Version 2.0 Jet Database Engine Features."

**  You can't open a dynaset on a remote database (such as a
    SQL Server database) within a transaction using the version
    2.0 Jet database engine. For example, the following code will
    fail as the dynaset is created:

    Dim MyDB As Database, MyDS As Dynaset
    Set MyDB = OpenDatabase("")    ' Open user-selected external database.
    MyDB.BeginTrans                ' Begin transaction.
    Set MyDS = MyDB.CreateDynaset(MyDB.TableDefs(0))   ' Open first table.


    However, if you attach tables from the remote database to
    a Microsoft Access database, you can create dynasets on
    those tables within transactions. (Note that access to
    remote data is faster if the tables are attached.)

-----------------------------------------------------------
4.  Microsoft Jet Database Engine 1.1 Compatibility Issues
------------------------------------------------------------

When you use the Compatibility Layer to access data in version 2.0 format,
you should keep the following issues in mind:

**  Because the Compatibility Layer is uniquely named
    (MSAJT112.DLL), it shouldn't cause any problems with
    applications (such as Microsoft Access 1.1) that use
    the file MSAJT110.DLL. Jet database engine 1.1
    installable ISAM drivers can't be used by the version
    2.0 database engine. If the version 1.1 drivers are
    listed in the [Installable ISAM] section of your
    .INI file, an error will occur when you attempt to
    use your application to access data in any of these
    database formats.

**  Visual Basic 3.0 applications that use the version
    2.0 Jet database engine may be able to update data
    in situations in which they previously could not (for
    example, the "one" side of a one-to-many relationship).
    However, applications can't update data when the change
    would orphan records on the many side of a recordset.

**  For some new SQL reserved words, you must enclose the
    word in brackets ([ ]) if you want to use it as part
    of an identifier (for example, a table or field name)
    in the context of an SQL string.  For a list of the Jet
    database engine 2.0 SQL reserved words, search Microsoft
    Access 2.0 Help for "SQL."

**  By default, the CreateDatabase function and CompactDatabase
    statement now create databases in Jet database engine 2.0
    format. You can override this default behavior by using
    the DB_VERSION10 constant (in the file DATACONS.TXT).  Using
    this constant creates a version 1.1 database, not a version
    1.0 database.  You can't create version 1.0 databases.
    The following table shows which type of database is created
    when you use CreateDatabase and CompactDatabase with and
    without DB_VERSION10.

-----------------------------------------------------------------
Jet database engine   Creates by default      With DB_VERSION10
-----------------------------------------------------------------
Version 1.1           Version 1.1 database    Version 1.0 database
Version 2.0           Version 2.0 database    Version 1.1 database

------------------------------
5.  Adapting Your .INI Files
------------------------------

Your .INI file is used by the Jet database engine to locate driver files.
When you're designing your application, the VB.INI file contains entries
that point to each of the installable ISAM drivers your application will
need. If you're creating an executable Visual Basic 3.0 program, you'll
need to create an .INI file for the application that also contains these
entries. For example, if your application is named CAT.EXE, you'll need to
create an .INI file called CAT.INI and add the necessary entries.

Shown below is the default [Installable ISAM] section of the VB.INI file.
Although it includes entries for all the installable ISAM drivers, the .INI
file you create for your application may need only one of these entries. If
you use the Paradox driver (PDX200.DLL), you also need to add a line to the
[Paradox ISAM] section of your .INI files. You don't need to change any of
the other entries in your .INI files.

Default entries for VB.INI and <appname>.INI
----------------------------------------------------------------------
[Installable ISAMs]
Paradox 3.X=C:\VB\PDX200.DLL    ;Path of the Paradox 3.x driver
Paradox 4.X=C:\VB\PDX200.DLL    ;Path of the Paradox 4.x driver
FoxPro 2.0=C:\VB\XBS200.DLL     ;Path of the Microsoft FoxPro 2.0 driver
FoxPro 2.5=C:\VB\XBS200.DLL     ;Path of the Microsoft FoxPro 2.5 driver
dBASE III=C:\VB\XBS200.DLL      ;Path of the dBASE III driver
dBASE IV=C:\VB\XBS200.DLL       ;Path of the dBASE IV driver
Btrieve=C:\VB\BTRV200.DLL       ;Path of the Btrieve driver

[Paradox ISAM]
ParadoxNetStyle=3.x             ;Required to open Paradox databases

---------------------------------------------------------
NOTE   You don't need new ODBC drivers to use the version
2.0 Jet database engine; it works correctly with the ODBC
drivers that were included with Visual Basic version 3.0.
---------------------------------------------------------

In addition, you can adapt SETUPWIZ.INI to accommodate the new drivers and
additional files. You can remove entries for these files:

**  MSAJT110.DLL
**  MSAES110.DLL
**  XBS110.DLL
**  PDX110.DLL
**  BTRV110.DLL

These are the new entries for SETUPWIZ.INI.
----------------------------------------------------
[ACCESS]                ; Key used by Setup Wizard
                        ; Jet database engine files
file1=MSABC110.DLL
file2=MSAJT200.DLL
file3=VBDB300.DLL
file4=SHARE.EXE:1       ; Jet database engine DLLs require
                        ;  'SHARE.EXE /L:500' in AUTOEXEC.BAT
file5=MSAJT112.DLL


; Files used by the Crystal Report (*.RPT) files
[PDBJET.DLL]
file1=PDBJET.DLL         ; Jet database engine DLL for Crystal Reports
file2=PDIRJET.DLL        ; Jet database engine DLL for Crystal Reports
file3=PDCTJET.DLL        ; Jet database engine DLL for Crystal Reports
file4=MSABC110.DLL       ; Jet database engine DLL for Crystal Reports
file5=MSAJT200.DLL       ; Jet database engine DLL for Crystal Reports
file6=VBDB300.DLL        ; Visual Basic DLL for Crystal Reports
file7=SHARE.EXE:1        ; Jet database engine DLLs require
                         ;  'SHARE.EXE /L:500' in AUTOEXEC.BAT
file8=MSAJT112.DLL       ; Compatibility Layer

-------------------------------------------------------------
6.  Availability of Version 2.0 Jet Database Engine Features
-------------------------------------------------------------

This section lists new features of the version 2.0 Jet database engine and
indicates whether you can take advantage of them in Visual Basic 3.0 when
you use the Compatibility Layer.

Cascading Updates and Deletes
-----------------------------

In Microsoft Access 2.0, you can specify that updates and/or deletions in
referenced fields can be cascaded to all referencing tables. In Visual
Basic 3.0, however, you can't specify cascading updates or deletes.
Consequently, you must use Microsoft Access 2.0 to set this feature. Note
that some errors generated from cascading updates and deletes are returned
as reserved errors. Whenever possible, these new errors are mapped to
existing errors.

Table-Level Validation
----------------------

Field- and record-level validation is now maintained by the Jet database
engine. This includes setting table-level validation rules as well as
default values. In Visual Basic 3.0, you can't set table-level validation
rules or default values. Once these values are set by Microsoft Access 2.0,
applications created in Visual Basic 3.0 will see the results. Violations
of table-level validation rules generate reserved errors.

Zero-Length Strings
-------------------

In Microsoft Access 2.0 databases, you can enter a zero- length string ("")
to indicate data that is known but doesn't exist. A zero-length string is a
string in a Text field containing no characters; it's not the same as Null.
Visual Basic converts all zero-length strings to Null. There is no way to
enter zero-length strings in Visual Basic 3.0. When table-level validation
rules or default values have been set by Microsoft Access to enforce the
entry of zero-length strings, Visual Basic 3.0 can't enter Null data into
these fields. 

Additional query words: 3.00 readme

Keywords :
Version :
Platform :
Issue type :


Last Reviewed: June 15, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.