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,真要命.如果能有详细点的说明更好,谢谢.
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,真要命.如果能有详细点的说明更好,谢谢.
sql server 用ADO吧!
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
用这个连接后看看!!(参考)