VB程序出现"Couldn't find installable ISAM."这条错误信息,什么含义?
回答:
以下内容是针对VB 3.0和VB 4.0 16位版本的。VB 5.0以后版本参考QA000156 "VB 5.0出现错误信息Couldn't find installable ISAM"。
出现"Couldn't find installable ISAM."这条错误信息的情况大致有两种:
1. 初试化文件(.INI)找不到或设置不正确;
2. 必需的驱动程序(. DLL)找不到。
VB 3.0支持的数据库可以分为五类,Microsoft Access、Btrieve、xBASE(包括dBASE III、dBASE IV、FoxBASE、FoxPro for MS-DOS/Windows)、Paradox以及ODBC(包括Oracle、SQL Server等),每一类数据库所使用的驱动程序和初试化文件是不尽相同的。各类程序所需的驱动程序可见下表。
数据库类别 | 驱动程序 |
Microsoft Access | MSAES110.DLL、MASAJT110.DLL、VBDB300.DLL |
Btrieve | BTRV110.DLL |
xBASE | XBS110.DLL |
Paradox | PDX110.DLL |
ODBC | ODBC.DLL、ODBCINST.DLL、 ODBCINST.INI、ODBCINST.HLP |
除Microsoft Access 外,数据库程序若没有相应的初始化文件也是无法工作的。数据库使用VB.INI和APPNAME.INI作为初始化文件:当在VB集成环境中设计和调试程序时使用VB.INI文件,而当编译成.EXE文件后使用APPNAME.INI,这里的APPNAME指的是.EXE文件的文件名。此外,Btrieve 数据库的一些初始化设置在WIN.INI文件的[Btrieve]节中。设计者可以在程序中用SetDataAccessOption语句改变默认的初始化文件的文件名或路径,如:SetDataAccessOption 1, "C:/VB/DATA.INI"。这个语句必须出现在所有数据库操作语句之前。
从您的情况来看,程序在VB集成环境中运行正常,而编译成.EXE文件后不能运行,显然是APPNAME.INI文件设置不正确。可以先检查这个文件是否存在,若存在,则可将这个文件与VB.INI文件加以比较,以检查设置是否正确。一般的设置文件如下(用户的路径名可能与本例不同):
[ISAM]
PageTimeout=5
MaxBufferSize=128
LockRetry=20
CommitLockRetry=20
ReadAheadPages=16
[Installable ISAMs]
Paradox 3.X=C:/WINDOWS/SYSTEM/pdx110.DLL
FoxPro 2.0=C:/WINDOWS/SYSTEM/xbs110.DLL
FoxPro 2.5=C:/WINDOWS/SYSTEM/xbs110.DLL
dBASE III=C:/WINDOWS/SYSTEM/xbs110.DLL
dBASE IV=C:/WINDOWS/SYSTEM/xbs110.DLL
Btrieve=C:/WINDOWS/SYSTEM/btrv110.DLL
[Paradox ISAM]
PageTimeout=600
ParadoxUserName=Joe User
ParadoxNetPath=P:/PDOXDB/ ;PARADOX.NET文件的路径
CollatingSequence=Ascii
[BTrieve ISAM]
PageTimeout=600
[dBase ISAM]
PageTimeout=600
Century=Off
Date=American
Mark=47
Deleted=ON
"Couldn't find installable ISAM."错误是可以在程序中用On Error语句来捕捉的(错误号为3170),一个对用户友好的软件应在发生错误时将正确的设置写入初始化文件。
我们以上的讨论均是基于VB 3.0而言的,如果在使用VB 4.0时遇到类似错误,情况会有所不同。在VB 4.0中,无论16bit版本,还是32bit版本均将有关DLL文件的信息(即VB 3.0的[Installable ISAMs]节)保存在系统注册数据库中,用户应使用Windows 3.X或Windows 95的REGEDIT.EXE来检查这一设置是否正确。
此问题由李海回答。