Help with MDE file

  • Thread starter Thread starter Fred Jacobowitz
  • Start date Start date
F

Fred Jacobowitz

I have an '.mde' file that I can not access ( no pun ).
I don't know what version it was created in. Is there any way to tell?
When I run it under access 2003 I select Open Database on the Convert/Open
page but then I get this message;You can't convert of enable an MDE file.
When I run it under access 2002 I get the same message.
Thank you,
Fred Jacobowitz
 
Fred said:
I have an '.mde' file that I can not access ( no pun ).
I don't know what version it was created in. Is there any way to
tell? When I run it under access 2003 I select Open Database on the
Convert/Open page but then I get this message;You can't convert of
enable an MDE file. When I run it under access 2002 I get the same
message. Thank you,
Fred Jacobowitz

Well that tells you that the file is Access 97 or older.
 
Fred said:
When I run it under access 2003 I select Open Database on the Convert/Open
page but then I get this message;You can't convert of enable an MDE file.

It's an Access 97 MDE or an Access 95 wizard. Try opening it in Access 97.
 
Access 97; yikes... that is going to be a far stretch. Is there a runtime
environment I can setup to support this file? I can not image where I am
going to find Access 97 and certainly I would be hesitant to put it on my
machine for fear it would corrupt my current OFFICE environment.

Am I dead in the water?
Thank you,
Fred Jacobowitz
 
Fred said:
Is there a runtime
environment I can setup to support this file?

People occasionally post the Access Runtime versions on the web to support
their Access applications. You can Google for an Access 97 Runtime and see
if you get lucky. To avoid compatibility problems, you need to either
install the Access 97 Runtime on a computer that doesn't already have any
newer versions of Access installed, or you'll have to uninstall your current
versions, then install each version again, oldest first.

So for Access 2003, you'd need to uninstall that, then install the Access 97
Runtime, then the service packs, then install Access 2003, then the service
packs, then delete everything that's in the MSACCESS.SRG file in the Access
97 installation so that it doesn't re-register itself every time you run it.
 
Granny Spitz via AccessMonster.com said:
People occasionally post the Access Runtime versions on the web to support
their Access applications. You can Google for an Access 97 Runtime and see
if you get lucky. To avoid compatibility problems, you need to either
install the Access 97 Runtime on a computer that doesn't already have any
newer versions of Access installed, or you'll have to uninstall your current
versions, then install each version again, oldest first.

So for Access 2003, you'd need to uninstall that, then install the Access 97
Runtime, then the service packs, then install Access 2003, then the service
packs, then delete everything that's in the MSACCESS.SRG file in the Access
97 installation so that it doesn't re-register itself every time you run it.

It is not a given that Access must be installed in version order. Many report
installing out of order and having no particular problems.
 
Thank you very much for your response. I just want to make sure I am on the
correct path. I have an 'mde' file and the current thinking is that it is an
access 97 file. Maybe I jumped the gun when I asked for a runtime
environment. Is the runtime environment going to let me run and have full
functionality of the 'mde' file or did I need a full installation of Access
97? Or is the runtime environment only of value when you have embedded
access api's in a program referencing the data in an mdb/mbe?
Thank you,
Fred Jacobowitz
 
Rick said:
It is not a given that Access must be installed in version order. Many report
installing out of order and having no particular problems.

True, but I'd want to avoid the panic from the "Microsoft Access can't start
because there is no license for it on this machine" message.
 
Fred said:
Is the runtime environment going to let me run and have full
functionality of the 'mde' file or did I need a full installation of Access
97?

The runtime version gives you limited functionality. It will allow you to
*run* the application, meaning you can open/close forms and reports,
enter/delete/update data, etc. You won't be able to change the design or
create new objects, like tables and queries. And you'll have a limited menu
unless the Access developer created a custom menu for the application.

If you need to make design changes, then you'll need to get ahold of the
original Access 97 *MDB* file and convert that to your current version of
Access, then make changes in the newly converted file. If you have the
original Access 97 MDB file then you don't need Access 97, runtime or retail.
You'll be prompted to enable/convert it when you open it in Access 2003.
 
Hi Fred

If you want to confirm first that this IS an Access 97 database, you could
use the following code:

Public Function GetAccessVersion(DbFile As String) As Single
Dim db As Database, sVersion As String
On Error GoTo ProcErr
If DbFile = CurrentDb.Name Or Len(DbFile) = 0 Then
Set db = CurrentDb
Else
Set db = DBEngine(0).OpenDatabase(DbFile, , True)
End If
On Error Resume Next
sVersion = db.Properties("AccessVersion")
If Err = 3270 Then
Err.Clear
sVersion = db.Properties("Version")
End If
With Err
If .Number Then .Raise .Number, .Source, .Description
End With
GetAccessVersion = Val(sVersion)
ProcEnd:
On Error Resume Next
If Not db Is Nothing Then
If Not db Is CurrentDb Then db.Close
Set db = Nothing
End If
Exit Function
ProcErr:
MsgBox "Cannot read file " & DbFile & vbCrLf & Err.Description
Resume ProcEnd
End Function

Just paste it in a module in any Access database and pass it the full path
for your MDE.

It will return one of the following values:
1.00 Access 1.0
1.10 Access 1.1
2.00 Access 2
6.68 Access 95
7.53 Access 97
8.50 Access 2000
9.50 Access 2002/2003
 
Graham,
Thank you for the code snippet. It is an access 97 mde file.
I know there is a single table. I have an earlier version of the database
that is an mdb file and did get it to run under 2003. If I could only
extract the data I would be in good shape. Any ideas?
Fred Jacobowitz

Graham Mandeno said:
Hi Fred

If you want to confirm first that this IS an Access 97 database, you could
use the following code:

Public Function GetAccessVersion(DbFile As String) As Single
Dim db As Database, sVersion As String
On Error GoTo ProcErr
If DbFile = CurrentDb.Name Or Len(DbFile) = 0 Then
Set db = CurrentDb
Else
Set db = DBEngine(0).OpenDatabase(DbFile, , True)
End If
On Error Resume Next
sVersion = db.Properties("AccessVersion")
If Err = 3270 Then
Err.Clear
sVersion = db.Properties("Version")
End If
With Err
If .Number Then .Raise .Number, .Source, .Description
End With
GetAccessVersion = Val(sVersion)
ProcEnd:
On Error Resume Next
If Not db Is Nothing Then
If Not db Is CurrentDb Then db.Close
Set db = Nothing
End If
Exit Function
ProcErr:
MsgBox "Cannot read file " & DbFile & vbCrLf & Err.Description
Resume ProcEnd
End Function

Just paste it in a module in any Access database and pass it the full path
for your MDE.

It will return one of the following values:
1.00 Access 1.0
1.10 Access 1.1
2.00 Access 2
6.68 Access 95
7.53 Access 97
8.50 Access 2000
9.50 Access 2002/2003

--
Good Luck!

Graham Mandeno [Access MVP]
Auckland, New Zealand

Fred Jacobowitz said:
Thank you very much for your response. I just want to make sure I am on
the
correct path. I have an 'mde' file and the current thinking is that it
is
an
access 97 file. Maybe I jumped the gun when I asked for a runtime
environment. Is the runtime environment going to let me run and have
full
functionality of the 'mde' file or did I need a full installation of
Access
97? Or is the runtime environment only of value when you have embedded
access api's in a program referencing the data in an mdb/mbe?
Thank you,
Fred Jacobowitz
 
Graham,
I just tried your script on another file and it returns 3.0. Do you
know what version of access that would be?
Graham said:
Hi Fred

If you want to confirm first that this IS an Access 97 database, you could
use the following code:

Public Function GetAccessVersion(DbFile As String) As Single
Dim db As Database, sVersion As String
On Error GoTo ProcErr
If DbFile = CurrentDb.Name Or Len(DbFile) = 0 Then
Set db = CurrentDb
Else
Set db = DBEngine(0).OpenDatabase(DbFile, , True)
End If
On Error Resume Next
sVersion = db.Properties("AccessVersion")
If Err = 3270 Then
Err.Clear
sVersion = db.Properties("Version")
End If
With Err
If .Number Then .Raise .Number, .Source, .Description
End With
GetAccessVersion = Val(sVersion)
ProcEnd:
On Error Resume Next
If Not db Is Nothing Then
If Not db Is CurrentDb Then db.Close
Set db = Nothing
End If
Exit Function
ProcErr:
MsgBox "Cannot read file " & DbFile & vbCrLf & Err.Description
Resume ProcEnd
End Function

Just paste it in a module in any Access database and pass it the full path
for your MDE.

It will return one of the following values:
1.00 Access 1.0
1.10 Access 1.1
2.00 Access 2
6.68 Access 95
7.53 Access 97
8.50 Access 2000
9.50 Access 2002/2003

--
Good Luck!

Graham Mandeno [Access MVP]
Auckland, New Zealand

Fred Jacobowitz said:
Thank you very much for your response. I just want to make sure I am on
the
correct path. I have an 'mde' file and the current thinking is that it is
an
access 97 file. Maybe I jumped the gun when I asked for a runtime
environment. Is the runtime environment going to let me run and have full
functionality of the 'mde' file or did I need a full installation of
Access
97? Or is the runtime environment only of value when you have embedded
access api's in a program referencing the data in an mdb/mbe?
Thank you,
Fred Jacobowitz
 
Fred said:
Graham,
Thank you for the code snippet. It is an access 97 mde file.
I know there is a single table. I have an earlier version of the
database that is an mdb file and did get it to run under 2003. If I
could only extract the data I would be in good shape. Any ideas?
Fred Jacobowitz

Tables from an MDE should be perfectly accessible to newer versions. Just
link to them or import them into a new file.
 
Fred said:
I just tried your script on another file and it returns 3.0. Do you
know what version of access that would be?

Please pardon my butting in, but that code is returning the file's Version
number, not its Access Version number. Version 3.0 means Jet 3.0. You are
reading either an Access 95 or 97 file. I would guess it's an Access 97 file,
simply because there are more of those around.
 
Graham
Thank you for the function. It worked and it certainly is an Access 97
database! I ran it against another database and got '3.0'. I don't
see that in your list.
Thank you,
Fred Jacobowitz

Graham said:
Hi Fred

If you want to confirm first that this IS an Access 97 database, you could
use the following code:

Public Function GetAccessVersion(DbFile As String) As Single
Dim db As Database, sVersion As String
On Error GoTo ProcErr
If DbFile = CurrentDb.Name Or Len(DbFile) = 0 Then
Set db = CurrentDb
Else
Set db = DBEngine(0).OpenDatabase(DbFile, , True)
End If
On Error Resume Next
sVersion = db.Properties("AccessVersion")
If Err = 3270 Then
Err.Clear
sVersion = db.Properties("Version")
End If
With Err
If .Number Then .Raise .Number, .Source, .Description
End With
GetAccessVersion = Val(sVersion)
ProcEnd:
On Error Resume Next
If Not db Is Nothing Then
If Not db Is CurrentDb Then db.Close
Set db = Nothing
End If
Exit Function
ProcErr:
MsgBox "Cannot read file " & DbFile & vbCrLf & Err.Description
Resume ProcEnd
End Function

Just paste it in a module in any Access database and pass it the full path
for your MDE.

It will return one of the following values:
1.00 Access 1.0
1.10 Access 1.1
2.00 Access 2
6.68 Access 95
7.53 Access 97
8.50 Access 2000
9.50 Access 2002/2003

--
Good Luck!

Graham Mandeno [Access MVP]
Auckland, New Zealand

Fred Jacobowitz said:
Thank you very much for your response. I just want to make sure I am on
the
correct path. I have an 'mde' file and the current thinking is that it is
an
access 97 file. Maybe I jumped the gun when I asked for a runtime
environment. Is the runtime environment going to let me run and have full
functionality of the 'mde' file or did I need a full installation of
Access
97? Or is the runtime environment only of value when you have embedded
access api's in a program referencing the data in an mdb/mbe?
Thank you,
Fred Jacobowitz
 
Hi Fred

That's strange! I cobbled the function together by cutting and pasting from
a larger chunk of code, but I just checked it against a variety of files,
both MDBs and MDEs, ranging from Version 1 to 2003 (yes, I still have some
V1 databases!) and it always returns one of the values I listed.

As Granny Spitz says, the Version property returns the Jet version that
created the database, so for A95/97 it is 3.0 and for A2000/02/03 it is 4.0.
However, from Access 95 on there is also an AccessVersion property which
gives further information on the data format. That is why the code checks
first for AccessVersion and then checks Version only if the property does
not exist (error 3270).

I have yet to come across a Jet version 3.0 database which does not have the
additional AccessVersion property.
--
Graham Mandeno [Access MVP]
Auckland, New Zealand

The AccessVersion
Fred J said:
Graham
Thank you for the function. It worked and it certainly is an Access 97
database! I ran it against another database and got '3.0'. I don't
see that in your list.
Thank you,
Fred Jacobowitz

Graham said:
Hi Fred

If you want to confirm first that this IS an Access 97 database, you
could
use the following code:

Public Function GetAccessVersion(DbFile As String) As Single
Dim db As Database, sVersion As String
On Error GoTo ProcErr
If DbFile = CurrentDb.Name Or Len(DbFile) = 0 Then
Set db = CurrentDb
Else
Set db = DBEngine(0).OpenDatabase(DbFile, , True)
End If
On Error Resume Next
sVersion = db.Properties("AccessVersion")
If Err = 3270 Then
Err.Clear
sVersion = db.Properties("Version")
End If
With Err
If .Number Then .Raise .Number, .Source, .Description
End With
GetAccessVersion = Val(sVersion)
ProcEnd:
On Error Resume Next
If Not db Is Nothing Then
If Not db Is CurrentDb Then db.Close
Set db = Nothing
End If
Exit Function
ProcErr:
MsgBox "Cannot read file " & DbFile & vbCrLf & Err.Description
Resume ProcEnd
End Function

Just paste it in a module in any Access database and pass it the full
path
for your MDE.

It will return one of the following values:
1.00 Access 1.0
1.10 Access 1.1
2.00 Access 2
6.68 Access 95
7.53 Access 97
8.50 Access 2000
9.50 Access 2002/2003

--
Good Luck!

Graham Mandeno [Access MVP]
Auckland, New Zealand

Fred Jacobowitz said:
Thank you very much for your response. I just want to make sure I am
on
the
correct path. I have an 'mde' file and the current thinking is that it
is
an
access 97 file. Maybe I jumped the gun when I asked for a runtime
environment. Is the runtime environment going to let me run and have
full
functionality of the 'mde' file or did I need a full installation of
Access
97? Or is the runtime environment only of value when you have embedded
access api's in a program referencing the data in an mdb/mbe?
Thank you,
Fred Jacobowitz

:

Fred Jacobowitz wrote:
Is there a runtime
environment I can setup to support this file?

People occasionally post the Access Runtime versions on the web to
support
their Access applications. You can Google for an Access 97 Runtime
and
see
if you get lucky. To avoid compatibility problems, you need to either
install the Access 97 Runtime on a computer that doesn't already have
any
newer versions of Access installed, or you'll have to uninstall your
current
versions, then install each version again, oldest first.

So for Access 2003, you'd need to uninstall that, then install the
Access
97
Runtime, then the service packs, then install Access 2003, then the
service
packs, then delete everything that's in the MSACCESS.SRG file in the
Access
97 installation so that it doesn't re-register itself every time you
run
it.
 
Hi Granny

Feel free to butt in (I did after all!) The more the merrier :-)

Please see my reply to Fred. The code should be returning the
AccessVersion, not the Version property for files with Version later than
2.0. That's certainly the way it works for me. I'd be interested to know
what happens if you test it.
 
Graham said:
The code should be returning the
AccessVersion, not the Version property for files with Version later than
2.0.

I agree with you. But his file doesn't have an AccessVersion property. It's
probably corrupted, but there are other reasons that can cause this besides
general corruption:

1) Even though the AccessVersion property is built-in, it can be deleted
through code (though this will cause severe problems).

2) If the file is compacted to dbVersion30 via the CompactDatabase function
instead of being converted to Access 97 via the menu, it may leave the
database in a partially converted state. When this happens, the Access
objects won't be converted, so only the tables and queries can be recovered
from the file. The AccessVersion property may be messed up or missing as
well.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top