Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3163
  • Last Modified:

Database Engine Error

Thanks for your reply
I am using Delpih 5 pro.
I have written an application using an access 97 database.
In the alias I have used the MSACCESS driver. All works on my development pc.
The problem is when I install it on another computer without Delphi already installed.
When you use the BDE administrator to look at the alias you get the following error.
"Database engine error
 Cannot load an IDAPI Service library c:\program files\common files\microsoft shared dao
DAO3032.DLL bde error 8458

I have installed this dll and its corresponding tlb file into the correct directory and they also have been registered.

With InstallShield I set up an alias of the correct type ie MSACCESS.

What am I doing wrong or what do I need to do.

Ivan
0
icarey
Asked:
icarey
  • 4
  • 3
1 Solution
 
simonetCommented:
I've had this problem before.

Here's what to do:
In the user's machine, search for DAO3032.DLL. Once you find it, copy to the directory called "c:\program files\common files\microsoft shared\dao"

If that folder doesn't exist, you have to create it. Note that there's a backslash before DAO on the path info. Then run REGSVR32.EXE on the newly copied file and restart the application.

If that doesn't work, try copying the file to \WINDOWS\MSAPPS\DAO (that's where it is located in my coputer... MS Office put it there and it's been there ever since).

Another thing: In the BDE Administrator, go to the Configuration tab and select Drivers -> Native -> MSACCESS and make sure that the DLL32 property is set to IDDAO32.DLL

Yours,

Alex
0
 
icareyAuthor Commented:
Thanks Alex. the DAO3032.DLL is aready in the correct directory.

I also placed it into the msapps directory with no luck.

I checked the BDE Administrator and it has its DLL32 property is set to IDDAO32.DLL .

When I used InstallShield is said it couldn't register the DAO3032.DLL . So I looked at Microssoft support and the said to include DAO2532.tlb. I did this and I no longer had a message from InstallShield that DAO3032.DLL didnot register.

I ran REGSVR32.EXE DAO3032.DLL and received the following message.
"loaded library("dao3032.dll") failed
GetLastError returns 0x00000485

Do you think it may be worth going to Paradox 9?

Thanks
Ivan

0
 
xsoftCommented:
Is the DAO correctly installed on the computer?
It is not enough, to copy the DAO3032.dll on the pc and register it as there are other files too, on which DAO depends on.
If you have a program on that pc which legally installs the DAO (like most of the MS-Office components) then just run the installation of any of those programs again to refresh your DAO-installation.

HTH,

Thomas
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
simonetCommented:
DAO3032.DLL depends on the following files:

- MSJTER32.DLL
- MSJINT32.DLL
- MSTJ3032.DLL

(all other dependencies are of Windows DLLs).

Make sure these DLLs are also installed.

Nother thing: it looks to me like DAO3032.DLL might be corrupted. Make a fresh copy of the file and copy it, replace the existing one.

Alex
0
 
icareyAuthor Commented:
Alex,
I have installed the dlls
- MSJTER32.DLL
- MSJINT32.DLL
- MSTJ3032.DLL (should this be MSJT3032)
into the windows\system directory and made sure all other dll's as previous are in the correct place.
I now get the error:
  General SQL error.
  -2147221164
  Table
  Alias: MusicSel

Thanks again for your help
Ivan
0
 
simonetCommented:
Ok, that means that now BDE is working and attempting to open the table, which is a good sign.

Let's try 2 things:
1) Make sure no files are set as Read-only (I had this problem once bacause I copied a MDB file right off the CD and forgot to remove the R-O attribute).

2) IF that fails, try changing the setting in the BDE Administrator -> Configuration tab ->Drivers -> Native -> MSACCESS  to the other DLL.

LEt me know how it went.

Yours,

Alex
0
 
icareyAuthor Commented:
Alex,
I checked the mdb file for read only and it wasn't.
I changed the MSACCESS native driver to IDDA3532.dll and all works now.
As a test I did a fresh install without all the previous dll's we installed and the bde can still see the mdb file. This is consistant with the setup of my development pc, which does not have all of the dll's(Msjter32.dll and msjint32.dll etc) installed.
The problem I now have is how to set the alias to have a native MSACCESS driver dll of IDDA3532.dll and not IDDDAO32.DLL.
The install by InstallShield does not allow me to select which dll to use.
One more problem is the alias path to the mdb file. In InstallShield I select an Install Object of BDE -> SETTINGS ->
Full Installation -> BDE Alias ->MusicSel -> set to save for 16 and 32 bit apps -> Select the alias name, set the path and select type to MSACCESS -> Finish.
On the install pc after installation, using BDE admin checking the path of the database in DATABASE NAME it is set to drive/path/database name.

What I would like to do is make the installation seemless to the user, ie so they do not have to use BDE admin to set the path. I thought that the setting in InstallShield would do this.

Regards
Ivan

0
 
simonetCommented:
>The problem I now have is how to set the alias

That has to be done manually. Sorry :(
This issue has raised a lot of complaints at the Borland newsgroups and they haven't solved it yet.


>I thought that the setting in InstallShield would do this.

It is supposed to.

But here are a couple suggestions that are even better (not as easy as using InstallShield, but less troublesome):

1) Do not use InstallShield to install BDE. Instead, use this method:

http://www.bhnet.com.br/~simonet/tipstricks/bdeinstcab.htm

2) Instead of using a BDE alias, create the alias at runtime. Suppose the MDB file is always in the same folder as the executable you're deploying. In this case you would set the database name to:

Database1.DatabaseName := ExtractFilePath(ExpandFileName(application.exename)) + '\MYACCESS.MDB';
(I don't remember if the backslash before the name of the file is necessary or not).

If you want to have your program create a permanent alias, here's how to do it:

http://www.bhnet.com.br/~simonet/tipstricks/alias.htm

InstallShield is full of flaws, and we cannot trust it to do the simplest installation/setup procedures. This is way I often use unconventional methods to have my database applications deployed. Although it required a few more programming lines, deployment is flawless, unlike InstallShield.

>What I would like to do is make the installation seemless to the user

That's a good thing to do. The steps I outlined can all be done be InstallShield, if, instead of letting IS deploy the entire BDE, let it deploy *AND REGISTER* BDEINST.DLL (which is inside BDEINST.CAB). You'll also need the other files needed for your applications to run (like the executable and any DLLs you may have created, databases, etc).

Just let me know if you need furhter assistance.

Yours,

Alex
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now