x84 db to x64

goodhead

Registered User.
Local time
Today, 14:29
Joined
Feb 18, 2013
Messages
37
I have built a database on access 2010 x84.

I thought most software that is x84 will run on x64.

Yet when run on access 2010 x64 it errors and moans about architecture.

Is there a way to make my db compatible with both without writing all over again for x64.
 
I have built a database on access 2010 x84.

I thought most software that is x84 will run on x64.

Yet when run on access 2010 x64 it errors and moans about architecture.

Is there a way to make my db compatible with both without writing all over again for x64.

A couple of things.

1. it is x86 not x84
2. and if you have a database that is running in x64 OFFICE then it will not be immune from having to have changes. If the 32 bit of Office or Access is installed on WINDOWS 64 bit, the database should work fine. If you have built a database with 32 bit Access but then want to run it in 64 bit Access, there may be things that are necessary to be done to it. Most will run fine but there could be features used (including Windows API's) which need changes.
 
X86. Yes. Thats the trouible with doing things when your tierd and late at night !!

yes i built in 32 and need to have compatible with 64.
You mention api changes. Can you allaborate?


A couple of things.

1. it is x86 not x84
2. and if you have a database that is running in x64 OFFICE then it will not be immune from having to have changes. If the 32 bit of Office or Access is installed on WINDOWS 64 bit, the database should work fine. If you have built a database with 32 bit Access but then want to run it in 64 bit Access, there may be things that are necessary to be done to it. Most will run fine but there could be features used (including Windows API's) which need changes.
 
I've had to come back to this.
It runs on both 32 and 64 windows.

Just not if office is 64

I have packaged up the db so that you don't need access and instead install office run time.

So why should it care what version of office is on a pc cos that's the point of using the run time package.



A couple of things.

1. it is x86 not x84
2. and if you have a database that is running in x64 OFFICE then it will not be immune from having to have changes. If the 32 bit of Office or Access is installed on WINDOWS 64 bit, the database should work fine. If you have built a database with 32 bit Access but then want to run it in 64 bit Access, there may be things that are necessary to be done to it. Most will run fine but there could be features used (including Windows API's) which need changes.
 
If you are sing API's then you will have a declaration similar to this

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
This will not work in 64 bit office and has to be redeclared as follows with the addition of PtrSafe (which will also work for 32bit so you do not need two versions of your source):

Private Declare PtrSafe Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Also, if you are providing a precompiled version or an accde then it will need to be compiled again in 64bit office. This will also apply to any accde libraries you may be using.
 
This mention of API's does come up and its a new concept to me and not sure what they are or what they do.

I'm also not much of a coder, so if I need to just copy and paste that code in I need to know where and how if you don't mind.

Anythink more complex then I gonna have to pay some one I guess.


If you are sing API's then you will have a declaration similar to this


This will not work in 64 bit office and has to be redeclared as follows with the addition of PtrSafe (which will also work for 32bit so you do not need two versions of your source):



Also, if you are providing a precompiled version or an accde then it will need to be compiled again in 64bit office. This will also apply to any accde libraries you may be using.
 
you would know if you are using API's but if you are not sure, search all modules for
Private Declare Function

if you find one, just add PtrSafe in as previously indicated
 
I have 2 modules.
I think they are to allow a image file browser to open.

It has the code you said I should look for.

But if its just for file browser is this still right one to add to?
see the code for module.

Option Compare Database
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type



you would know if you are using API's but if you are not sure, search all modules for
Private Declare Function

if you find one, just add PtrSafe in as previously indicated
 
yes - you need to state

Private Declare PtrSafe Function GetOpenFileName ....

which will work in both 32 and 64 bit office environments.

The Private Type statement can be left unchanged
 
Most people don't consider the 64-bit version of Access to be an "upgrade" since you loose all the common dialog objects that we have been using for years. You will also loose any add-ins you use that don't have 64-bit equivalents and that includes the popular TreeView and ListView activeX cntrols. If everyone has the same version of Access, you can just convert the API's and deal with the loss of the controls. However, if you have to support multiple environments, it is more of a problem. You will probably have to use conditional compilation so that one set of code is used in one environment and the other is used in the other environment.

FYI - it is NOT possible to mix and match Office parts due to the common files. Either ALL of Office is 32-bit or ALL of Office is 64-bit.
 

Users who are viewing this thread

Back
Top Bottom