设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1786|回复: 3
打印 上一主题 下一主题

[其它] 求助:关闭access窗体

[复制链接]
跳转到指定楼层
1#
发表于 2016-3-15 08:16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下代码可以在vb中打开access窗体
Sub 打开access窗体()
    Dim acc As String
    Dim mypassword As String
    Dim SSpath As String
    On Error Resume Next
    acc = "记录"
    SSpath = App.Path & "\对账记录\" & acc & ".mdb"
    Dim NEWpath
    Set NEWpath = CreateObject("access.application")
    NEWpath.OpenCurrentDatabase SSpath, False, mypassword  '在新文件中打开数据库文件
    NEWpath.UserControl = True '用户激活新打开的文件
    NEWpath.DoCmd.OpenForm "主窗体", acDesign, , , acFormEdit, acDialog '打开数据库的窗体
End Sub
如果在我不知道窗体已经打开的情况下,再次点击按钮就会出错。
请问如何在再次点击按钮的情况下,先关闭这个窗体。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-3-15 10:20:22 | 只看该作者
没搞懂。既然用VB做界面,就不必打开Access的窗体了啊。VB里一些数据表控件(例如FlexGrid之类)就可以读取Access数据了。
在Access里可以通过isLoad属性来识别,VB里怎么用,你自己看着办吧。大约是这样:
currentproject.allforms("窗体名").isLoaded=true
docmd.close acform,"窗体名"
3#
 楼主| 发表于 2016-3-15 10:34:52 | 只看该作者
roych 发表于 2016-3-15 10:20
没搞懂。既然用VB做界面,就不必打开Access的窗体了啊。VB里一些数据表控件(例如FlexGrid之类)就可以读取 ...

谢谢老师!
每次都得到老师的帮助,感谢!
因为在vb中用控件显示access数据,复选框没有办法显示,
我就想用vb打开access,在我用access数据库做的文件里面,不同的权限在不同的复选框打钩。
所以就想用vb操作access。
4#
 楼主| 发表于 2016-3-15 12:31:40 | 只看该作者
roych 发表于 2016-3-15 10:20
没搞懂。既然用VB做界面,就不必打开Access的窗体了啊。VB里一些数据表控件(例如FlexGrid之类)就可以读取 ...

已经在网上找到代码了,谢谢老师!
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 'FindWindowAPI函数
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'PostMessageAPI函数
Public Const WM_CLOSE = &H10 '常用变量定义

Private Sub Command2_Click()
    Dim winHwnd As Long '定义一个长整形变量winHwnd
    Dim RetVal As Long '定义一个长整形变量RetVal
    winHwnd = FindWindow(vbNullString, "主窗体") 'API函数查找"主窗体"这个窗口
    Debug.Print winHwnd '显示这个窗口句柄
    RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&) '如果返回信息为0.表示失败,未发送成功
    If winHwnd = 0 Then '如为0,表示没有找到窗口,那么就打开窗口
       '打开窗体
    End If
    If winHwnd <> 0 Then '如不为0,表示找到窗口,那么就先关闭窗口,再重新打开窗体
        RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&) '关闭窗体
        '打开窗体
    End If
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-14 19:23 , Processed in 0.090579 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表