Private Function MyOpenDatabase() As Boolean
    Const MSG1 = "输入 ODBC 连接参数"
    Const MSG2 = "打开 ODBC 数据库"
    Const MSG3 = "输入 ODBCINST.INI 文件中的驱动程序名称:"
    Const MSG4 = "驱动程序名称"
    Const MSG5 = "这个数据源还没有注册,现在将试图注册!"
    Const MSG7 = "无效的参数,请再试一次!"
    Const MSG8 = "不能设置查询超时,将使用缺省值!"
    Const MSG9 = "数据源注册成功,进一步打开。"
    
    On Error GoTo cmdOK_ClickErr
    
    DBEngine.DefaultUser = "admin"
    DBEngine.DefaultPassword = vbNullString
    
    '登录到 Jet
'    On Error Resume Next
'
'Global gwsMainWS As Workspace
'Global gwsDateWS As Workspace
'Global dbs As Database'Global dbDate As Database    Set gwsMainWS = DBEngine.CreateWorkspace("MainWS", "admin", vbNullString)
    Set gwsDateWS = DBEngine.CreateWorkspace("MainWS", "admin", vbNullString, dbUseODBC)
    
    gsConnect = ""
    gsConnect = "ODBC;DSN=SQL Server Source" & ";"
    gsConnect = gsConnect & "UID=SA" & ";"
    gsConnect = gsConnect & "PWD=gyj" & ";"
    gsConnect = gsConnect & "Database=MyDb" & ";"
    
    Set dbs = gwsMainWS.OpenDatabase("", False, False, gsConnect)
    Set dbDate = gwsDateWS.OpenDatabase("", False, False, gsConnect)
    
'    If dbs Is Nothing Then
'        MyOpenDatabase = False
'    End If
    '成功
    MyOpenDatabase = True
    
'    Dim glQueryTimeout As Integer
'    glQueryTimeout = 5
    
'    gdbCurrentDB.QueryTimeout = glQueryTimeout
    Exit Function
    
cmdOK_ClickErr:
    If InStr(1, Error, "ODBC--connection to " & " SQL Server Source " & "失败") > 0 Then
        Beep
        MsgBox MSG5, 48
    '      If RegisterDB((cboDSNList.Text)) Then
    '        MsgBox MSG9, 48
    '      End If
    ElseIf InStr(1, Error, "Login failed") > 0 Then
        Beep
        MsgBox MSG7, 48
    ElseIf InStr(1, Error, "QueryTimeout property") > 0 Then
        If glQueryTimeout <> 5 Then
            Beep
            MsgBox MSG8, 48
        End If
        Resume Next
    Else
    '      ShowError
    End If
    
    '  MsgBar MSG1, False
    If Err = 3059 Then
    '    Unload Me
    End If
    
    MyOpenDatabase = False
End Function
偶刚刚用VB,不知道这个到底应该发在哪个版块,ODBC数据源我也配了一个名称是MainWS的.测试是成功的,运行这段程序的时候就是连接不到SQL 2K.到底是我的程序错了,还是ODBC配错了.请各位指教.别告诉我用ADO什么的,要求就这段程序不能做大的改动,虽然我不知道这个到底是什么,但是应该不是ADO,也不是RDO,真要命.如果能有详细点的说明更好,谢谢.

解决方案 »

  1.   

    你用的是DAO,一般是对access数据库的。
    sql server 用ADO吧!
      

  2.   

    楼主用ADO吧,搜索一下,CSDN上有的
      

  3.   

    dim  cn  As  new  ADODB.Connection  
    Dim  rs  As  new  ADODB.Recordset  
    cn.Open  "Provider=sqloledb;server=ip地址;Initial  Catalog=数据库名;user  id=用户名;password=密码"  
    rs.open  "select  *  from  表名  where  项目名称='明珠大厦'",cn,3,3  
    用这个连接后看看!!(参考)