我是用这种方法做的:
在模块下设了以下语句
Public Const FileDS = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "data source=data.mdb;"
Public Const NetDS = "Provider=SQLOLEDB;Data Source=ADODUM;UID=ubad1d1;pwd=21@1n3z"在MDI窗体下设了以下语句
Private Sub MDIForm_Load()
Dim conn As New ADODB.Connectionconn.ConnectionString = FileDS
conn.OpenIf conn.State = 0 Then
   MsgBox "不能与数据库联接", vbOKOnly
Else
   MsgBox "已经联接了数据库", vbOKOnly
End IfEnd Sub
如果用这种方法,只要找不数据库,VB本身就会出错不能运行。有没有一种方法在VB可以正常运行的情况下去判断,数据库是否已联接成功。

解决方案 »

  1.   

    用错误陷阱
    on error goto myerr
    .......
    myerr;
    select case err.number
    case ...
    ....
    case ...
    ....
    end select
      

  2.   

    Public adoCNAccess As New ADODB.Connection '定义数据库的连接
    Public Function OpenAccess() As String
        With adoCNAccess
            If .State <> adStateOpen Then
                .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & cProgramPath & "Trade.mdb"
                
                .ConnectionTimeout = 5
                .Open
                If .State = adStateOpen Then
                    OpenAccess = "数据库连接成功"
                Else
                    OpenAccess = "数据库连接失败,请按帮助进行检查 !"
                    MsgBox "数据库连接失败,请找系统管理员进行检查 !", 16, cProgramName
                    End
                End If
            End If
        End With
    End Function
      

  3.   

    Public adoCN As New ADODB.Connection       '定义数据库的连接存放数据和代码Public SqlCommand As New ADODB.Command     '定义 SQL 命令Dim adoDateTime As New ADODB.Recordset     '获取 NT-SERVER 时间'***********************************************************************
    '*  功能:与 SQL SERVER 数据库建立连接并取出服务器时间
    '***********************************************************************
    Public Function OpenConnection() As String '打开数据库
        On Error GoTo SQLConErr
        With adoCN
            .CursorLocation = adUseClient
            .Provider = "sqloledb"
            .Properties("Data Source").Value = cNtServerName
            .Properties("Initial Catalog").Value = cDatabaseName
            .Properties("User ID") = cSQLUserName
            .Properties("Password") = cSQLPassword
            .Properties("prompt") = adPromptNever
            .ConnectionTimeout = 15  ‘可以改这个时间
            .Open
            
            If .State = adStateOpen Then
                adoDateTime.Open "select getdate()", adoCN, adOpenStatic, adLockOptimistic
                cServerDate = Format(adoDateTime(0), "yyyy-mm-dd")
                cServertime = Mid(adoDateTime(0), 10)
            Else
                MsgBox "数据库连接失败,请找系统管理员进行检查 !", 16, cProgramName
                End
            End If
        End With
        
        SqlCommand.ActiveConnection = adoCN
        SqlCommand.CommandType = adCmdText
        Exit Function
    SQLConErr:
        Select Case Err.Number
            Case -2147467259
                MsgBox "找不到指定的SQL Server服务器或者数据库不存在,请重新设置!", vbExclamation
                F_SetSystem.Show 1
            Case -2147217843
                MsgBox "指定的SQL Server数据库用户不存在或口令错误,请重新设置!", vbExclamation
                F_SetSystem.Show 1
            Case Else
                MsgBox "数据环境连接失败,请找系统管理员进行检查 !", 16, cProgramName
        End Select
        OpenConnection
    End Function
      

  4.   

    Public Const FileDS = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "data source=data.mdb;"
    Public Const NetDS = "Provider=SQLOLEDB;Data Source=ADODUM;UID=ubad1d1;pwd=21@1n3z"在MDI窗体下设了以下语句
    Private Sub MDIForm_Load()
    Dim conn As New ADODB.Connection
    on error resume next
    conn.ConnectionString = FileDS
    conn.OpenIf err.number <> 0 Then
       MsgBox "不能与数据库联接", vbOKOnly
    Else
       MsgBox "已经联接了数据库", vbOKOnly
    End If
    on error goto 0
    End Sub