Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

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

[復(fù)制鏈接]

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

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


本貼總結(jié)答案:

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

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

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

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

sCreateConnectionTrap:
    sCreateConnection = Err.Description
    Resume sCreateConnectionExit

End Function



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

本帖被以下淘專輯推薦:

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

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

3#
 樓主| 發(fā)表于 2002-3-24 20:41:00 | 只看該作者
我是這樣做的:在啟動(dòng)窗口的 Form_Load事件中寫(xiě)如下代碼

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 "請(qǐng)連接數(shù)據(jù)庫(kù)!"
        ChkConnect = False
        DoCmd.RunCommand acCmdConnection
    Else
        ChkConnect = True
    End If
End Function

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

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

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

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

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


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

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

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

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

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

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

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

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 10:18 , Processed in 0.101423 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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