[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2525
  • Last Modified:

Acc2010 The object you referenced ... isn't an OLE object

I'm trying to run our Acc 2003 database application in Acc 2010. I have not converted the database, just run it in Acc2010.

Seems to work fine, but when closing a print preview I get
"The object you referenced in the Visual Basic procedure as an OLE Object isn't an OLE object"
The ONClose property runs a sub macro which uses a SetValue command to set a form (from which the report preview was opened) to visible.

Before the report preview was opened the form in question had it's visible value set to no (so it is still open) but hidden.

Worked fine in Acc2003.
So has the syntax changed or dependencies for setvalue on form objects?

A references issue?
These references are loaded (none show MISSING):
Visual Basic for applications (vbe7.dll)
Microsoft Access 14.0 Object Library
OLE Automation (STDOLE2.TLB)
Microsoft DAO 3.6 Object Library
Microsoft ActiveX Data Object 2.5 Library
Microsoft OLE DB Service Component 1.0 Type Library

Any help greatly appreciated!

0
ComputerFundi
Asked:
ComputerFundi
  • 2
1 Solution
 
peter57rCommented:
Code please.
0
 
ComputerFundiAuthor Commented:
Form events run macros not VBA so what follows is macro statements (in acc2010 format)

Submacro: Print_Targets Dept
SetValue
Item = [Forms]![Target_Input].[Visible]
Expression  = No

OpenReport
Report Name Subject Targets_by Dept_KS5
View Print Preview
Filter Name
Where Condition
Window Mode Normal
MaximizeWindow
End Submacro

Submacro: ONClose

SetValue
Item = [forms]![Target_Input].[Visible]
Expression = Yes

End Submacro

It is the SetValue statement in the ONclose section which fails with the error
0
 
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
What value are you setting? I presume it's the Visible property, but cannot be sure (I don't use macros).

These types of errors can result from many things. One of the more common is incorrectly referring to an Object (for example, not properly referring to a subform control). Earlier versions of Access were far more forgiving of these types of errors, but 2007/2010 is more strict.

In many cases, you're better off building a new, blank database in 2010 (you can use the .mdb format to do this), and then import everything from your old database. This will maintain compatibility with older versions, but will "fixup" the container to be fully compatible with 2010.

Are you sure you need this reference:

Microsoft OLE DB Service Component 1.0 Type Library

This is generally only used to build data links, and isn't really something that you typically reference in an Access app. You can determine if you need it like this:

1) Make a backup of your database
2) Compile your database - from the VBA window, click Debug - Compile. Fix any errors, and continue doing this until the menuitem is disabled
3) Compact your database
4) Remove the reference (i.e. uncheck it).
5) Compile again.

If Step #5 doesn't result in any errors, then you don't need that reference and can leave it out. While in many cases it does no real harm to leave in these refs, they cause unnecessary bloat, and can cause code issues, performance issues, etc etc.


0
 
ComputerFundiAuthor Commented:
Fantastic! Thank you:
So here's what I did -
1. In acc2003 (on the unconverted db) - I followed your procedure to remove the reference to Microsoft OLE DB Service Component 1.0 Type Library, which worked - clearly it wasn't needed.
2. I created an empty Accdb file and imported all the tables in the backend (data) db. Compacted it. Done
3. Created another empty ACCDB file and imported all the objects including local (but not linked) tables.
4. Added this library:
 Microsoft ActiveX Data Objects 2.8 Library as per this allenbrowne page: http://allenbrowne.com/ser-38.html#LibVer
5. Compiled the db. OK
6. linked tables from ACCDB backend
7. Compacted the dB
7. Tested - so far no issues. The Report close function (with that nice 'tabbed' view of the report) works perfectly.

Again MANY THANKS!
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now