設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 8083|回復(fù): 19
打印 上一主題 下一主題

請問:如何在ADP啟動時,使用VBA代碼判定數(shù)據(jù)庫連接是否有效并重新設(shè)定數(shù)據(jù)庫連接

[復(fù)制鏈接]

點擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2002-3-24 07:46:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問:如何在ADP啟動時,使用VBA代碼判定數(shù)據(jù)庫連接是否有效并重新設(shè)定數(shù)據(jù)庫連接?


本貼總結(jié)答案:

在應(yīng)用程序結(jié)束時,使用 MakeADPConnectionless 清除ADP連接,在程序啟動就不會再出現(xiàn)提示連接的對話框,使用 CurrentProject.IsConnected 判定 ADP 是否連接,如果未連接,使用 sCreateConnection 創(chuàng)建新的連接字符串,使用 CurrentProject.OpenConnection 連接。

作者:大熊
Sub MakeADPConnectionless()
   Application.CurrentProject.CloseConnection '關(guān)閉連接
   Application.CurrentProject.OpenConnection '將連接設(shè)置為無
End Sub

附:在ADP項目中創(chuàng)建ADP的數(shù)據(jù)庫的默認連接的代碼
Public Function sCreateConnection(sSvrName As String, sUID As String, sPWD As String, sDatabase As String) As String
'********************************************************************
'該函數(shù)在ADP中檢查連接,如果沒有,它將通過輸入?yún)?shù)創(chuàng)建一個連接
'
'輸入:
'   sSvrName    數(shù)據(jù)庫服務(wù)器名
'   sUID        用戶名
'   sPWD        口令
'   sDatabase   MSDE數(shù)據(jù)庫名
'
'輸出:
'   連接狀態(tài)
'
'********************************************************************

    On Error GoTo sCreateConnectionTrap:
   
    If Application.CurrentProject.BaseC Then
        '表示 ADP 處于無連接狀態(tài)
        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 & " 數(shù)據(jù)庫的連接!"
    Else '連接已存在
        sCreateC & sDatabase & " 數(shù)據(jù)庫的連接!"
    End If
   
   
sCreateConnectionExit:
Exit Function

sCreateConnectionTrap:
    sCreateConnection = Err.Description
    Resume sCreateConnectionExit

End Function



(ADP-相關(guān)文章技巧鏈接):
Access 在ADP啟動時,使用VBA代碼判定數(shù)據(jù)庫連接是否有效并重新設(shè)定數(shù)據(jù)庫連接

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖2 訂閱訂閱
2#
發(fā)表于 2002-3-24 18:25:00 | 只看該作者
有個思路,不過要等等,要測試一下,我正在換硬盤
原來的硬盤實在沒辦法裝上SQL SERVER

點擊這里給我發(fā)消息

3#
 樓主| 發(fā)表于 2002-3-24 20:41:00 | 只看該作者
我是這樣做的:在啟動窗口的 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 "請連接數(shù)據(jù)庫!"
        ChkConnect = False
        DoCmd.RunCommand acCmdConnection
    Else
        ChkConnect = True
    End If
End Function

這樣出現(xiàn)一系統(tǒng)的數(shù)據(jù)庫連接對話框,總感覺不是太理想,是否有更好的辦法?

點擊這里給我發(fā)消息

4#
發(fā)表于 2002-3-24 21:30:00 | 只看該作者
將連接字符串代碼寫進去即可,加入用戶名和密碼,連接服務(wù)器。數(shù)據(jù)源等

點擊這里給我發(fā)消息

5#
 樓主| 發(fā)表于 2002-3-25 00:43:00 | 只看該作者
你是說更改
CurrentProject.Connection.ConnectString
對嗎?
我試過,這樣不行,報錯!


[此貼子已經(jīng)被作者于2002-3-24 16:42:51編輯過]

點擊這里給我發(fā)消息

6#
發(fā)表于 2002-3-25 01:02:00 | 只看該作者
出什么錯誤呢, 可否貼上來

點擊這里給我發(fā)消息

7#
 樓主| 發(fā)表于 2002-3-25 01:38:00 | 只看該作者
對不起,這是前些日子測試的,現(xiàn)在沒代碼。
當時,不管是直接修改,還斷開以后修改,或者創(chuàng)建新的連接再指定到CurrentProject.Connection 都報錯
8#
發(fā)表于 2002-3-25 03:53:00 | 只看該作者
很有意思,NORTHWINDCS的啟動就有,但是太復(fù)雜,還沒看大懂。

點擊這里給我發(fā)消息

9#
 樓主| 發(fā)表于 2002-3-25 05:58:00 | 只看該作者
樓上兄弟說得好!確實是太復(fù)雜,難得看,所以才發(fā)問
10#
發(fā)表于 2002-3-28 01:18:00 | 只看該作者
我用過字符串指明數(shù)據(jù)庫源和用戶名等等連接數(shù)據(jù)庫服務(wù)器,沒有用DSN,不用配置客戶端或ODBC,那樣太麻煩。如果報錯就調(diào)用系統(tǒng)鏈接窗體重新設(shè)置。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 08:30 , Processed in 0.108582 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表