1
votes

I've just been handed an old VB6 application that uses DataControls on the form; these are referencing an MDB file (Access 2000 or 2002-2003) and have the "Connect" property set to "Access 2000;" Machine has recently been upgraded (Windows 7, MS Office 2010) and is now giving "Couldn't find installable ISAM" at Form load. I've read quite a bit of information regarding this issue, but I've had no luck resolving it.

  • I'm not sure how (or whether I should) install the missing ISAM drivers.

  • I've tried changing the "Connect" property of the DataControl to "Access" only (no 2000) but then I get "unrecognisable database format error".

  • I've tried updating the DB to Access 2010 (.accdb) format with the same problem "unrecognisable database format".

  • I've tried creating a Database connection and assigning that to the DataControl control "Connect" property: doesn't work and I'm not even sure this is a valid thing to do.

Has anyone seen and resolved this issue?

1
I'm not sure what a "DataNavigator" is, and I've been around VB6 for a long time. Can I confirm that you are not talking about one of the native Data controls and calling it a "DataNavigator"?BobRodes
Yes, sorry I think it is a naïve "Data Control", specifically the one on the form is the control with backward/forward navigation arrows at either end for row selection. Post updatedKevin Roche
Ok. Next thing is that there are different data controls which meet your description. Which one is yours? The ADO Data control or the older one?BobRodes
p.s. How big a job is it to get rid of the data controls in your project, assuming you know what to do?BobRodes
Can you check your references (under Projects | References) - are there any objects marked as "MISSING" - you might need to update your references - or register an older DAO librarydbmitch

1 Answers

0
votes

I never got to the bottom of why the Data Control was unable to connect to the hardcoded database path; however I managed to resolve the issue by opening the database and assigning the required recordsets programmatically within the Form.Load event. i.e.

dbPath = App.Path & "\XXX.mdb"
Set daoDB = DBEngine(0).OpenDatabase(dbPath) 

Set rsBS = daoDB.OpenRecordset(--Table data to retrieve--, dbOpenDynaset)
Set Databs.Recordset = rsBS

Set rsLiq = daoDB.OpenRecordset(--Table data to retrieve--, dbOpenDynaset)
Set DataLiq.Recordset = rsLiq

Works fine.