Solved

Database Engine Error

Posted on 2000-05-13
8
3,091 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
  • 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
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
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

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Suggested Solutions

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

813 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now