Solved

Database Engine Error

Posted on 2000-05-13
8
3,113 Views
Last Modified: 2008-02-26
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
Comment
Question by:icarey
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
8 Comments
 
LVL 15

Expert Comment

by:simonet
ID: 2807750
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
 
LVL 3

Author Comment

by:icarey
ID: 2808182
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
 
LVL 1

Expert Comment

by:xsoft
ID: 2808192
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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 15

Expert Comment

by:simonet
ID: 2808602
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
 
LVL 3

Author Comment

by:icarey
ID: 2810303
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
 
LVL 15

Expert Comment

by:simonet
ID: 2811515
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
 
LVL 3

Author Comment

by:icarey
ID: 2817252
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
 
LVL 15

Accepted Solution

by:
simonet earned 200 total points
ID: 2817885
>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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question