Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Use of ACCESS Runtime 2010 with office 2010 and ACCESS 2007 application 1

Status
Not open for further replies.

Niebotel

Programmer
Jan 1, 2007
169
0
0
NL
Hello, i'm forced to use ACCESS Runtime 2010 for my ACCESS 2007 application, because Runtime 2007 does not work on Windows 10.
That is not a problem, but there are two version of Runrime 2010, 32 and 64 bits.

On my development PC I have still office 2007, so the 64 bits version won't install.

But some of my users have already installed Office 2010. Does my application (ACCESS 2007) still work on there computers and do they have to instal the 64 bits version of the runtime?
 
It is not related to the version of office (2007,2010,2012) it is whether or not you are creating the app using 32 or 64 bit access.

And also related to whether they have 32bit or 64bit office installed because you can't have both.

So it is not possible to have a user with 64bit office use 32bit runtime and vice versa - you will get an error message telling you this!

Here we all run 32bit Office / runtime, but some have office 2007, some have office 2101 and some office 2013, all run my access 2010 apps with access 2010 runtime, regardless of office version.

Though you must write your apps to use late bindings if you want them to interact with a mix version office environment.



"In complete darkness we are all the same, it is only our knowledge and wisdom that separates us, don't let your eyes deceive you."

"If a shortcut was meant to be easy, it wouldn't be a shortcut, it would be the way!"
Free Electronic Dance Music
 
Thanks, getting more clear now.
On what moment does a user decide to install the 64 bit or the 32 bit version of the office applications?
Is that during buying (so different versions) or during installation (just a choice?)

 
Thanks again.

So the first step is to ask my customer to (re)install the 32 bits version instead of the 64 bits of office.

Second step is to rewrite my application into late binding.

I'm also thinking of to upgrade to ACCESS 2013. So that will be the moment to rewrite ny application.

Because I'm not a very experienced VBA programmer (I was in the past Cobol programmer)I have some diffulculties with onderstanding how to implement "late binding".

So far I understood that it has something to do with the references, bit there it stop for me.

Is anybody willing to explain in simple words what changes I have to make.

My existing app uses a list of references and in the app I use different ways of getting information from tables (which are situated in a sharepoint)

Thanks on forehand

Willem

 
If you have someone who is running 64bit office you either need to compile them a 64bit version of your app, or get them to re-install 32bit office.

You can't mix and match 32bit with 64bit unfortunately.

Just remember if you upgrade to Access 2013, then you will need to ensure your users have the 2013 run-time installed.

Late Bindings is simply about NOT declaring your variables as a particular object/class type (so you don't need to reference a particular library version of office).

You simply assign the object type when you want to instantiate it, letting the application / OS use what ever version it can find currently installed on the user machine.

E.G. for an Outlook object.

Code:
    ' Declare variable as generic object type
    Dim objOutlook As Object

    ' Instantiate a new Outlook object
    Set objOutlook = CreateObject("Outlook.Application")

This code doesn't care if the user has Outlook 2003,2007,2010,2013 - as long as they have Outlook installed, it will work :)

Luckily VBA isn't a strongly typed OOP language either, so no casting is needed to get access to the Outlook object's properties / method protocol.

"In complete darkness we are all the same, it is only our knowledge and wisdom that separates us, don't let your eyes deceive you."

"If a shortcut was meant to be easy, it wouldn't be a shortcut, it would be the way!"
Free Electronic Dance Music
 
OK I think I understand what you mean. Thanks for your explanation!
If you have a liitle time for me look below please.
Just to make sure for me I copied some parts of my coding down below. Do you see any places which I have to change to get "late binding"

Dim con As ADODB.Connection

Set con = CurrentProject.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Plaats = "Versie"
rs.Open "Versie", con, adOpenStatic, adLockPessimistic

If rs.BOF = True And rs.EOF = True Then
MsgBox ("Geen Versie gevonden")
rs.Close
Exit Sub
End If
'Sharewijz: foutafhandeling
rs.MoveFirst
AppNaamActief = rs!AppNaamActief
VersieNummer = rs!VersieNummer
Conversie = rs!Conversie
rs.Close


---------------------------------------------------------
Public Sub RelinkingTabellen(NewPathname As String)
On Error GoTo Err_RelinkingTabellen
Dim dbs As Database
Dim tdf As TableDef
Dim Tdfs As TableDefs
Set dbs = CurrentDb
Set Tdfs = dbs.TableDefs
'Loop through the tables collection
For Each tdf In Tdfs
If tdf.SourceTableName <> "" Then 'If the table source is other than a base table
' Tdf.Connect = ";DATABASE=" & NewPathname 'Set the new source
tdf.RefreshLink 'Refresh the link
End If
Next 'Goto next table


Exit_RelinkingTabellen:
Exit Sub

Err_RelinkingTabellen:
MsgBox Err.Description
Resume Next

End Sub

----------------------------------------
DoCmd.OpenQuery docName, A_NORMAL, A_EDIT

--------------------------------------------

Dim db As DAO.Database
Dim ws As DAO.Workspace

Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase("C:\Niebotel-Online\NiebotelLeden.accdb", False, False, "MS Access;PWD=CalypsoNiebot")

db.Execute "ALTER TABLE Tbl_leden ADD COLUMN LengteWens Number"
db.Execute "ALTER TABLE Tbl_leden ADD COLUMN BreedteWens Number"



db.TableDefs("Tbl_leden").Fields("LengteWens").Properties("DefaultValue") = 0
db.TableDefs("Tbl_leden").Fields("BreedteWens").Properties("DefaultValue") = 0

db.Close
--------------------------------------------------------------------------

Set con = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open "[Facturen]", con, adOpenDynamic, adLockPessimistic

rst.Sort = "Naam"

Do While Not rst.EOF
rst!Factuurnummer = StartwaardeFacturen
rst!FactuurSoort = "Jaarfactuur"
rst!Mededeling = Mededeling
etc
---------------------------------------------------
DoCmd.SendObject acSendReport, "JaarFactuur per lid", "pdf", EmailLid, , , "Jaarfactuur WSV Bru voor: " & Onderwerp, "Bijgevoegd vindt U uw factuur voor WSVBRU; Gaarne binnen 30 dagen betalen", False


I hope you do not mind asking me so much!!!!!!!!!!!!!!!!!!!!!!

Greetings

Willem
Netherlands (so you understand my bad English!)
 
I can't see any of your code using office objects?

This is not late binding
Code:
Dim rs As ADODB.Recordset

But this is also not related to any particular version of office, this is using the MS ActiveX Data Objects library.

If you have a reference to this, then all users must have that version of the ActiveX library installed.

To late bind ADODB, you remove the reference to the ActiveX library and then create the recordset in this manner

Code:
Dim rst As Objecj
Set rst = CreateObject("ADODB.Recordset")

Well TBH I'm not sure if you can remove the reference to the ActiveX and it still work, but in theory, that's how it is done.

Personally I use DAO and have a reference to MS Office 14.0 Access database engine Object library and declare all my recordset objects like this...

Code:
Dim rs As DAO.Recordset

But as this is related to the version of Access being used (the run-time and what I develop with - Access 2010), it doesn't matter what version of Office they have installed.







"In complete darkness we are all the same, it is only our knowledge and wisdom that separates us, don't let your eyes deceive you."

"If a shortcut was meant to be easy, it wouldn't be a shortcut, it would be the way!"
Free Electronic Dance Music
 
Hello again , thanks for spending your time.
One of my users has Office 64 bits installed and my application (32 bits) is running!!!
Surprise, surprise!
I do not understand why, but can it be that as long there are no references used to office the problem does not exist?
These are the references used in this application but I do not know why these references are used.
Is there a way to find out?
Visual basic for application
Microsoft access 12.0 object library
Microsoft activexdataobject 12.1 library
Micro office 12.0 Access database engine library
MicrosoftVisual basicfor applicationsExtensibility 5.3
 

>> One of my users has Office 64 bits installed and my application (32 bits) is running!!!

Hmmm, dunno... You can't run mix-mode, I tried, I get a message saying you can't have 32bit & 64bit installed.

Do they have Access with their Office or are you saying they are running 32bit run-time and 64bit Office?

Or 64bit run-time with 32bit application?

"In complete darkness we are all the same, it is only our knowledge and wisdom that separates us, don't let your eyes deceive you."

"If a shortcut was meant to be easy, it wouldn't be a shortcut, it would be the way!"
Free Electronic Dance Music
 
As far as I know they have the ACCESS Runtime 2007 (32bit) for the ACCESS 2007 .aaccdr and on top of it they have installed Office Pro 64.
This user has to PC's one of them Windows 10. On both machines it worked.

In the weekend I have the laptop of the user in my hands; are there special things I have to check?
 
Pass [ponder]

When ever I have tried to mix 32bit and 64bit the installer refuses to run saying you can't mix 32bit & 64bit.

I have no idea how they have managed to install both 32bit & 64bit office components on the same machine, perhaps this is new to Windows 10?

Maybe someone else can chime in and advise how this is possible?

"In complete darkness we are all the same, it is only our knowledge and wisdom that separates us, don't let your eyes deceive you."

"If a shortcut was meant to be easy, it wouldn't be a shortcut, it would be the way!"
Free Electronic Dance Music
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top