ACCESS 我用到树功能,需要引用MSCOMCTL.OCX,几台电脑使用时,有些电脑常常出错打不开树形,后来发现是MSCOMCTL.OCX版本不同导致,我的电脑的MSCOMCTL.OCX的版本是6.1.98.34 2012年的,大小是1070152。换成低版本无法使用,于是只能将各台电脑的MSCOMCTL.OCX的版本统一为6.1.98.34,并使用
regsvr32 c:\windows\system32\MSCOMCTL.OCX 注册好。各台电脑使用正常。
但是后来,又莫其妙地出现问题,还是打不开树!弹出错误提示(错误号忘了,意思是树形加载失败),这错误提示倒不是提示未注册MSCOMCTL.OCX,因为确实已经引用了、注册了、检查MSCOMCTL.OCX文件及版本也无问题,反复反注册/注册,还是一样。
最后,什么都不动,只是以“视图--代码--工具--引用”中,将“Microsoft Windows Common Controls 6.0” 前的勾取消,然后再又重新引用C:\WINDOWS\SYSTEM32\MSCOMCTL32.OCX,问题就好了!其他连网的电脑打开也继续正常。
详细使用情况:
多台电脑都是相同的MSCOMCTL.OCX的版本6.1.98.34 ,共享打开同一个mdb数据库,往往有时候某一台电脑树形功能出错。这个时候,将该mdb数据库离线拷贝到该电脑上进一步测试,保存在C盘上重命名为C.mdb,再复制一份在D盘上一份重命名为D.mdb。然后对C.mdb,使用VBA中去除引用再重新引用的方法,之后打开正常,但D.mdb0 是打开出错。然后将D.mdb剪切到C盘,将C.mdb剪切到D盘,即互换位置,仍然是C.mdb能正常打开,D.mdb打开时继续报错。
说明:
1、与Windows系统无关,因为是同一台电脑、同一个系统。
2、MSCOMCTL.OCX文件和版本无关,因为是同一台电脑。搜索也确实只发现只有一个MSCOMCTL.OCX文件,反复重新拷贝和注册也不能改变问题。
3、与注册表相关信息无关,也因为是同一台电脑、同一个注册表系统。
4、与对文件本身(C.mdb、D.mdb)的注册表信息无关,通过对调位置甚至互换文件名,出错的还是出错,正常的还是正常。
那么,问题就非常奇怪了,到底与什么有关?看来只能是重新引用的过程,导致mdb文件内部本身修改了。
VBA的“引用”,到底是一个什么过程?编制修改窗体的过程,是否类似程序“编译”的过程?将MSCOMCTL.OCX包含“写入”mdb内部?因为我经常需要修改升级mdb,难道是某些时候,修改窗体时(即重新“编译”时)出错?那为什么对同样的环境,又那么容易出错?而就算出错,其他连网电脑能正常打开,而只有某一台电脑出错?这时在出错电脑上打开共享的mbd数据库,重新“引用”,就全部正常了,其他正常的电脑还是继续正常。
问题到底是什么?求教高手。我用的是ACCESS2003.