Link to home
Start Free TrialLog in
Avatar of jimsha
jimsha

asked on

Access97 crashes with VBA332.dll fault c0000005

I'm having a problem with MS Access.
The nearest I can trace it the problem started after modifying the file layouts (added 1 field to 2 files) in my 'attached' data.mdb.
Now, when I try to log into my code.mdb I get the following:
MSACCESS.EXE caused fault #c0000005 in VBA332.DLL at address 0177:6517daaa

(Or, from newly downloaded version of VBA332.DLL)
MSACCESS.EXE caused fault #c0000005 in VBA332.DLL at address 0177:65182a15

I can also load without running my code.mdb but as soon as I try to run a form I get the same error.

VBA332.dll appears to be some sort of Access to VBA interpreter or interface which has appeared to have slipped a cog.

Anyone heard of this? Any known solutions?

Thanks,
jimsha
Avatar of danyell
danyell
Flag of France image

Have you ever gotten this MDB-pair to work?

If so, try refreshing your table links using the "Attached Table Manager" in the Add-Ins menu. Then try opening the form again. Also try compacting both MDBs. I've had crashes like yours (except connecting to SQL Server) that went away after compressing the "client" (your Code) MDB file.

If not, have you installed any new software recently? An unbelievable number of products (not all from Microsoft) rely on various VB DLLs. What version of VBA332.DLL do you have, what's the file date and where is it stored?

Mine is v3.0.7019, size: 1,597,200 bytes, dated 7/11/97 12:00 AM, located in "C:\Program Files\Common Files\Microsoft Shared\VBA."

ASKER CERTIFIED SOLUTION
Avatar of perove
perove
Flag of Norway image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jimsha
jimsha

ASKER

It took a day but, after repairing, compressing, reattaching, upgrading vbx332.dll...,  I got into re-compiling and crashed. Decided to import everything (>2000 objects) into a new, blank mdb. This crashed on a specific MODULE. So I imported everything but that. Them got that from a backup. I hadn't made any changes to that code so I didn't loose anything but have no idea why it got corrupted.
That is a good reference as it helps cover all bases in a case like this.
Thanks.
jimsha
Avatar of jimsha

ASKER

danyell, thanks. See note to perove above.
The database in question was probably compiled using resources that, in your present system, have changed. Meaning: If you compile/save the MDB file and then install a program (from microsoft or where ever) that updates certain VBA component DLL's, the entry points to the resources may or may not coincide to the database's list. What you need to do is decompile the MDB file and then recompile it. You do this by adding the switch "/decompile" in the command line when you open the database. When you recompile the database, the database then attains the new entry point list from Access. The resources that the database refer to are then in sync. That would be the reason why when you import all the objects into a new database it usually solves the problem. I hope this helps. But there is no question that the page fault is a resource entry point problem.
I do probably know a "partial" way to solve a problem:

  that mistake occurs because (in my sitiation) MSA'97 compiles
  the code You're usin' in You module(s). That applies to any
  API using functions and procedures (such as RegKeyOpenEx).
  You can fix (or just bypass) the bug, when using  Norton
  CrashGuard (NCG) (part of NU'98 toolkit). That program is
  a TSR, which detects system faults and tries to correct them,
  before Windows shows You a fatalerrorwindow. In my case, i've
  launched a corrupt database, NCG detected a mistake and
  stopped the compiling, asking if i could proceed without it.
  By answering Yes i've got my database open and functionable.
  Just a remark: delete the function You think caused a mistake
  or rebuild it.

Just do it
 
If your file vba332.dll has a date of 11/20/96 or older, this is probably your problem.