竹笛版主:
因为这个例子尚未成型,我把要点再次描述如下
关于TransferDatabase问题
原则是两个库,在本地库操作对外部库的对象进行维护
我的初衷是在删除外部库对象前先将它改名,也就是原来对象名称=RP报价,拟将其改为=aaRP报价,如果这个对象有用,则将它的名字改回来,
否则,对冠以aa的对象就可以放心可以删除。但是DoCmd。Rename命令只有在本地库有用,于是想一个笨办法:
1.将这个RP报价从外部库改名为LsTem导入到本地库,作为临时文件改名目的是避免与本地库的对象文件冲突。
If Not IsNull(DLookup("Name", "MSysObjects", "Name='LsTem' And Type=-32764")) Then DoCmd.DeleteObject acReport, LsTem
DoCmd.TransferDatabase acImport, "Microsoft Access", 外部库路径, acReport, RP报价, LsTem, False
2.将这个LsTem文件改名导出至外部库
DoCmd.TransferDatabase acExport, "Microsoft Access", 外部库路径, acReport, LsTem, aaRP报价, False
If Not IsNull(DLookup("Name", "MSysObjects", "Name='LsTem' And Type=-32764")) Then DoCmd.DeleteObject acReport, LsTem
3.将外部库这个名为RP报价的文件删除
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase 外部库路径
appAccess.Application.Visible = False
appAccess.DoCmd.DeleteObject acReport, RP报价
appAccess.Quit
Set appAccess = Nothing
操作时报错
结果报错:运行错误'2501'
这个TransferDatabase操作被取消。
请教这里有什么问题吗?
另外:当本地库关闭后发现外部库没有关闭,此时外部库.ldb及外部库.mdb不能打开、删除或者从USB中拷贝进行覆盖。
只有当电脑重新启动后,这个外部库.ldb也消失了,外部库可以打开。
如果有外部库文件直接改名的命令就不那么费事了。也许我的这个思路毫无实际意义,只是好奇。