设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

在ADP启动时,使用VBA代码判定数据库连接是否有效并重新设定数据库连接

2015-4-11 21:52| 发布者: admin| 查看: 1763| 评论: 19|原作者: zhuyiwen|来自: www.office-cn.net

摘要: 请问:如何在ADP启动时,使用VBA代码判定数据库连接是否有效并重新设定数据库连接? 本贴总结答案: 在应用程序结束时,使用 MakeADPConnectionless 清除ADP连接,在程序启动就不会再出现提示连接的对话框,使 ...
请问:如何在ADP启动时,使用VBA代码判定数据库连接是否有效并重新设定数据库连接?

本贴总结答案:

在应用程序结束时,使用 MakeADPConnectionless 清除ADP连接,在程序启动就不会再出现提示连接的对话框,使用 CurrentProject.IsConnected 判定 ADP 是否连接,如果未连接,使用 sCreateConnection 创建新的连接字符串,使用 CurrentProject.OpenConnection 连接。

作者:大熊
Sub MakeADPConnectionless()
   Application.CurrentProject.CloseConnection '关闭连接
   Application.CurrentProject.OpenConnection '将连接设置为无
End Sub

附:在ADP项目中创建ADP的数据库的默认连接的代码
Public Function sCreateConnection(sSvrName As String, sUID As String, sPWD As String, sDatabase As String) As String
'********************************************************************
'该函数在ADP中检查连接,如果没有,它将通过输入参数创建一个连接
'
'输入:
'   sSvrName    数据库服务器名
'   sUID        用户名
'   sPWD        口令
'   sDatabase   MSDE数据库名
'
'输出:
'   连接状态
'
'********************************************************************

    On Error GoTo sCreateConnectionTrap:
   
    If Application.CurrentProject.BaseC Then
        '表示 ADP 处于无连接状态
        sConnectionString = & _
                        "PROVIDER=SQLOLEDB.1; " & _
                        "PASSWORD=" & sPWD & ";" & _
                        "PERSIST SECURITY INFO=TRUE; USER ID=" & sUID & "; "  & _
                        "INITIAL CATALOG=" & sDatabase & ";" & _
                        "DATA SOURCE=" & sSvrName
        Application.CurrentProject.OpenConnection sConnectionString
        sCreateC & sDatabase & " 数据库的连接!"
    Else '连接已存在
        sCreateC & sDatabase & " 数据库的连接!"
    End If
   
   
sCreateConnectionExit:
Exit Function

sCreateConnectionTrap:
    sCreateConnection = Err.Description
    Resume sCreateConnectionExit

End Function


发表评论

最新评论

引用 wyh 2002-3-24 18:25
有个思路,不过要等等,要测试一下,我正在换硬盘
原来的硬盘实在没办法装上SQL SERVER
引用 zhuyiwen 2002-3-24 20:41
我是这样做的:在启动窗口的 Form_Load事件中写如下代码

Private Sub Form_Load()
    Dim bb As Boolean
    bb = ChkConnect()
End Sub

Public Function ChkConnect() As Boolean
    Dim strSQL As String
   
    If Not CurrentProject.IsConnected Then
        MsgBox "请连接数据库!"
        ChkConnect = False
        DoCmd.RunCommand acCmdConnection
    Else
        ChkConnect = True
    End If
End Function

这样出现一系统的数据库连接对话框,总感觉不是太理想,是否有更好的办法?
引用 tmtony 2002-3-24 21:30
将连接字符串代码写进去即可,加入用户名和密码,连接服务器。数据源等
引用 zhuyiwen 2002-3-25 00:43
你是说更改
CurrentProject.Connection.ConnectString
对吗?
我试过,这样不行,报错!


[此贴子已经被作者于2002-3-24 16:42:51编辑过]

引用 tmtony 2002-3-25 01:02
出什么错误呢, 可否贴上来
引用 zhuyiwen 2002-3-25 01:38
对不起,这是前些日子测试的,现在没代码。
当时,不管是直接修改,还断开以后修改,或者创建新的连接再指定到CurrentProject.Connection 都报错
引用 chenwintek 2002-3-25 03:53
很有意思,NORTHWINDCS的启动就有,但是太复杂,还没看大懂。
引用 zhuyiwen 2002-3-25 05:58
楼上兄弟说得好!确实是太复杂,难得看,所以才发问
引用 liujunqun 2002-3-28 01:18
我用过字符串指明数据库源和用户名等等连接数据库服务器,没有用DSN,不用配置客户端或ODBC,那样太麻烦。如果报错就调用系统链接窗体重新设置。
引用 tmtony 2002-3-28 01:28
各有长短优劣
引用 zhuyiwen 2002-3-28 10:42
以下是引用liujunqun在2002-3-27 17:18:03的发言:
我用过字符串指明数据库源和用户名等等连接数据库服务器,没有用DSN,不用配置客户端或ODBC,那样太麻烦。如果报错就调用系统链接窗体重新设置。


是否能将代码贴出来供大家学习?

在ADP中,有一个默认的ADO数据库连接,即:CurrentProject.Connection,也就是说如何改变这个连接。用ADO很容易新建连接,关键是改变默认连接。


[此贴子已经被zhuyiwen于2002-3-28 2:42:13编辑过]

引用 大熊 2002-4-7 05:00
此例程将从 ADP 删除连接,使其处于无连接状态。
Sub MakeADPConnectionless()
     
     Application.CurrentProject.CloseConnection '关闭连接
     Application.CurrentProject.OpenConnection '将连接设置为无

End Sub

引用 zhuyiwen 2002-4-13 19:33
这是微软MSDN中,在ADP项目中创建ADP的数据库的默认连接的代码

Public Function sCreateConnection(sSvrName As String, sUID As String, sPWD As String, sDatabase As String) As String
'********************************************************************
'该函数在ADP中检查连接,如果没有,它将通过输入参数创建一个连接
'
'输入:
'   sSvrName    数据库服务器名
'   sUID        用户名
'   sPWD        口令
'   sDatabase   MSDE数据库名
'
'输出:
'   连接状态
'
'********************************************************************

    On Error GoTo sCreateConnectionTrap:
   
    If Application.CurrentProject.BaseC Then
        '表示ADP处于无连接状态
        sC & sPWD _
            & "; PERSIST SECURITY INFO=TRUE; USER ID=" & sUID & "; _
            INITIAL CATALOG=" & sDatabase & "; DATA SOURCE=" & sSvrName
        Application.CurrentProject.OpenConnection sConnectionString
        sCreateC & sDatabase & " 数据库的连接!"
    Else '连接已存在
        sCreateC & sDatabase & " 数据库的连接!"
    End If
   
   
sCreateConnectionExit:
Exit Function

sCreateConnectionTrap:
    sCreateConnection = Err.Description
    Resume sCreateConnectionExit

End Function
引用 KenjiSato 2002-8-8 00:52
万一创建连接时服务器出故障、网络连接不上如何提示?
引用 zyz 2002-8-8 04:28
出了问题,就报错! [em26]

愿上帝保佑你!

最好是念一声"阿迷坨佛".

哈哈哈......[em26]
引用 KenjiSato 2002-8-9 00:49
我的意思是做个友善的界面引导用户再连接或更改连接服务器等
引用 zyz 2002-8-9 02:57
你不会把代码分开吗?![em26]
引用 zhuyiwen 2008-9-2 18:18
此贴已圆满解决。
引用 唐玉娥 2009-5-11 23:36
看不明白。不过感觉还是有点意思。慢慢研究一下先啦!

查看全部评论(19)

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

GMT+8, 2024-4-27 10:39 , Processed in 0.098556 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部