Office中国论坛/Access中国论坛

标题: a.mdb如何打开另一个b.mdb,然后关闭自己,然后另一个b.mdb执行后再打开a.mdb [打印本页]

作者: tmtony    时间: 2009-1-12 10:17
标题: a.mdb如何打开另一个b.mdb,然后关闭自己,然后另一个b.mdb执行后再打开a.mdb
a.mdb如何打开另一个b.mdb,然后关闭自己,然后另一个b.mdb执行后再打开a.mdb
我试过,有时正常,有时不太正常,很奇怪
作者: xuwenning    时间: 2009-1-12 11:42
没这样操作过
关注[:50]
作者: Grant    时间: 2009-1-12 14:12
经过几次测试
A数据库添加代码
Option Compare Database
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
     (ByVal hwnd As Long, ByVal lpszOp As String, _
     ByVal lpszFile As String, ByVal lpszParams As String, _
     ByVal LpszDir As String, ByVal FsShowCmd As Long) _
     As Long
    Const SW_SHOW = 1
Private Sub Form_Load()
ShellExecute 0, "Open", "c:\b.mdb", "", "", SW_SHOW  '打开B数据库
Application.Quit 退出A.mdb
End Sub

B数据库代码差不多,不过事件上要调整一下.
Option Compare Database
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
     (ByVal hwnd As Long, ByVal lpszOp As String, _
     ByVal lpszFile As String, ByVal lpszParams As String, _
     ByVal LpszDir As String, ByVal FsShowCmd As Long) _
     As Long
    Const SW_SHOW = 1
   
Private Sub Form_Timer()  '这里为时间触发器1毫秒
ShellExecute 0, "Open", "c:\a.mdb", "", "", SW_SHOW '打开A数据库
Application.Quit 退出该数据库
End Sub
经过多次实验这种方法没有出现问题
如果b数据库在加载事件中则会出现不正常现象,可能太快了还来不及执行 所以加了一个1毫秒进行事件触发就没问题了
作者: Henry D. Sy    时间: 2009-1-12 14:19
假如不用api,能不能达到目的。
作者: Grant    时间: 2009-1-12 14:20
原帖由 Henry D. Sy 于 2009-1-12 14:19 发表
假如不用api,能不能达到目的。


可以,只是个人习惯.
作者: wu8313    时间: 2009-1-13 21:25
想知道这样做是为了什么。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3