Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 2 of 2 total
Thread DBISAM Engine Error # 11010 Table or backup file 'test.rddat' does not exist
Thu, Dec 1 2011 2:59 PMPermanent Link

Mike Corrente

I have a third party database that uses custom file extensions (rddat, rdidx, rdblb).

I'm trying to install another copy of the ODBC driver to handle these tables, but getting the error in the subject line.  When I use dbodbccfg.exe to modify the default extensions for the ODBC driver already installed (DBISAM 4 ODBC Driver), the table pulls up perfectly.  It appears to add several Table*Extension values to the registry key rather than changing FileExtns as in the documentation, but it works.

When I try to create a copy of that driver by copying the dll to the same folder with a different name then creating a key under ODBCINST.INI and under ODBC Drivers and copying all the values verbatim (except the Driver and Setup values, obviously), I get the error.  I'm sure it's something small I'm missing, but I've burned half the day trying to figure it out.

Here's the code that fails with the custom driver.  Note that this works if I substitute DBISAM 4 ODBC Driver for RDPRO 4 ODBC Driver (because I left the custom file extensions in the default driver while testing):

       Dim connString As String = _
       String.Format( _
           "Driver={0};" & _
               "ConnectionType=""{1}"";" & _
               "PrivateDirectory={2};" & _
               "CatalogName=""{{0}}""", _
           "{{RDPRO 4 ODBC Driver}}", _
           "Local", _
           My.Computer.FileSystem.SpecialDirectories.Temp _
       )
       Dim conn As New Odbc.OdbcConnection(String.Format(connString, "C:\Test\COMPARE"))

       conn.Open()
       Dim cmd As New Odbc.OdbcCommand(String.Format("SELECT * FROM ""{0}\{1}.rddat""", "C:\Test\COMPARE", "test"), conn)
       Dim rdr As Odbc.OdbcDataReader
       rdr = cmd.ExecuteReader

Here are the registry keys.  I'm on a 64-bit machine.

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\RDPRO 4 ODBC Driver]
"APILevel"="1"
"ConnectFunctions"="YYY"
"Driver"="C:\\Program Files (x86)\\DBISAM 4 ODBC-STD\\libs\\dbodbc\\rdproodbc.dll"
"DriverODBCVer"="03.00"
"FileExtns"="*.rddat,*.rdidx,*.rdblb"
"FileUsage"="1"
"Setup"="C:\\Program Files (x86)\\DBISAM 4 ODBC-STD\\libs\\dbodbc\\rdproodbc.dll"
"SQLLevel"="0"
"UsageCount"=dword:00000001
"LargeFiles"="False"
"FilterRecordCounts"="True"
"CreateTempTablesInDatabase"="False"
"TableFilterIndexThreshhold"="1"
"EngineSignature"="DBISAM_SIG"
"MaxTableDataBufferSize"="32768"
"MaxTableDataBufferCount"="8192"
"MaxTableIndexBufferSize"="65536"
"MaxTableIndexBufferCount"="8192"
"MaxTableBlobBufferSize"="32768"
"MaxTableBlobBufferCount"="8192"
"TableDataExtension"=".rddat"
"TableIndexExtension"=".rdidx"
"TableBlobExtension"=".rdblb"
"TableDataBackupExtension"=".rddbk"
"TableIndexBackupExtension"=".rdibk"
"TableBlobBackupExtension"=".rdbbk"
"TableDataUpgradeExtension"=".rddup"
"TableIndexUpgradeExtension"=".rdiup"
"TableBlobUpgradeExtension"=".rdbup"
"TableDataTempExtension"=".rddat"
"TableIndexTempExtension"=".rdidx"
"TableBlobTempExtension"=".rdblb"
"LockFileName"="dbisam.lck"
"TableReadLockWaitTime"="3"
"TableReadLockRetryCount"="32768"
"TableWriteLockWaitTime"="3"
"TableWriteLockRetryCount"="32768"
"TableTransLockWaitTime"="3"
"TableTransLockRetryCount"="32768"
"TableMaxReadLockCount"="100"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers]
"RDPRO 4 ODBC Driver"="Installed"
Fri, Dec 2 2011 9:40 AMPermanent Link

Mike Corrente

Want to post the solution in case anyone else has this issue.  Thanks to Tim for email support.

In order to use a custom ODBC driver installation, the internal DLL values have to be modified.  Tim directed me to http://melander.dk/reseditor/ to get a resource editor to make the change.  The only value I had to change to get it to work was ProductName under VersionInfo.  Set this equal to the name I designated for my custom ODBC driver and worked like a charm.
Image