Option ExplicitPrivate Con As ADODB.Connection
Private DataBaseconfig As clsDataBaseConfigPrivate Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As LongPrivate Sub ConnectToServer(DataBaseconfig As clsDataBaseConfig)
On Error GoTo errCon
If Con.State = 1 Then
Con.Close
End If
Con.ConnectionString = DataBaseconfig.GetConString(DataBaseconfig)
Con.CursorLocation = adUseClient
Con.ConnectionTimeout = 50
Con.Open
Exit Sub
errCon:
Err.Raise 512 + 1, , "连接失败!"
End Sub
Public Function GetRecordset(strSql As Variant, Rst As Variant) As Collection
On Error GoTo errRst
Dim rstCollection As New Collection
Dim i As Integer
If Rst.State = 1 Then
Rst.Close
End If
Rst.Source = strSql
Rst.ActiveConnection = Con
Rst.LockType = adLockOptimistic
Rst.CursorType = adOpenKeyset
Rst.Open
If Not Rst.BOF And Not Rst.EOF Then
Rst.MoveFirst
Do While Not Rst.EOF
Dim smallColl As New Collection
For i = 0 To Rst.Fields.Count - 1
smallColl.Add Rst.Fields(i).Value
Next
rstCollection.Add smallColl
Set smallColl = Nothing
Rst.MoveNext
Loop
Rst.MoveFirst
End If
Set GetRecordset = rstCollection
Exit Function
errRst:
Err.Raise 512 + 2, , "获取记录集失败!"
End FunctionPrivate Sub Class_Initialize()
Dim str As String * 100
Dim lngReturn As Long
Set Con = New ADODB.Connection
Set DataBaseconfig = New clsDataBaseConfig
lngReturn = GetPrivateProfileString("DataBaseConfig", "ServerName", ".", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.ServerName = Left(str, lngReturn)
lngReturn = GetPrivateProfileString("DataBaseConfig", "DataBaseType", "1", str, 100, App.Path & "\DataSet.ini")
If Left(str, lngReturn) = 1 Then
DataBaseconfig.DataBaseType = SqlServer
Else
DataBaseconfig.DataBaseType = Access
End If
lngReturn = GetPrivateProfileString("DataBaseConfig", "DataBaseName", "", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.DatabaseName = Left(str, lngReturn)
lngReturn = GetPrivateProfileString("DataBaseConfig", "ValidateType", "1", str, 100, App.Path & "\DataSet.ini")
If Left(str, lngReturn) = 1 Then
DataBaseconfig.ValidateType = SQl
Else
DataBaseconfig.ValidateType = Winnt
End If
lngReturn = GetPrivateProfileString("DataBaseConfig", "UserName", "", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.UserName = Left(str, lngReturn)
lngReturn = GetPrivateProfileString("DataBaseConfig", "UserPwd", "", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.UserPwd = Left(str, lngReturn)
Call ConnectToServer(DataBaseconfig)
Debug.Print Con.State
End Sub
Private Sub Class_Terminate()
If Con.State = 1 Then
Con.Close
End If
Set Con = Nothing
Set DataBaseconfig = Nothing
End Sub
Private DataBaseconfig As clsDataBaseConfigPrivate Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As LongPrivate Sub ConnectToServer(DataBaseconfig As clsDataBaseConfig)
On Error GoTo errCon
If Con.State = 1 Then
Con.Close
End If
Con.ConnectionString = DataBaseconfig.GetConString(DataBaseconfig)
Con.CursorLocation = adUseClient
Con.ConnectionTimeout = 50
Con.Open
Exit Sub
errCon:
Err.Raise 512 + 1, , "连接失败!"
End Sub
Public Function GetRecordset(strSql As Variant, Rst As Variant) As Collection
On Error GoTo errRst
Dim rstCollection As New Collection
Dim i As Integer
If Rst.State = 1 Then
Rst.Close
End If
Rst.Source = strSql
Rst.ActiveConnection = Con
Rst.LockType = adLockOptimistic
Rst.CursorType = adOpenKeyset
Rst.Open
If Not Rst.BOF And Not Rst.EOF Then
Rst.MoveFirst
Do While Not Rst.EOF
Dim smallColl As New Collection
For i = 0 To Rst.Fields.Count - 1
smallColl.Add Rst.Fields(i).Value
Next
rstCollection.Add smallColl
Set smallColl = Nothing
Rst.MoveNext
Loop
Rst.MoveFirst
End If
Set GetRecordset = rstCollection
Exit Function
errRst:
Err.Raise 512 + 2, , "获取记录集失败!"
End FunctionPrivate Sub Class_Initialize()
Dim str As String * 100
Dim lngReturn As Long
Set Con = New ADODB.Connection
Set DataBaseconfig = New clsDataBaseConfig
lngReturn = GetPrivateProfileString("DataBaseConfig", "ServerName", ".", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.ServerName = Left(str, lngReturn)
lngReturn = GetPrivateProfileString("DataBaseConfig", "DataBaseType", "1", str, 100, App.Path & "\DataSet.ini")
If Left(str, lngReturn) = 1 Then
DataBaseconfig.DataBaseType = SqlServer
Else
DataBaseconfig.DataBaseType = Access
End If
lngReturn = GetPrivateProfileString("DataBaseConfig", "DataBaseName", "", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.DatabaseName = Left(str, lngReturn)
lngReturn = GetPrivateProfileString("DataBaseConfig", "ValidateType", "1", str, 100, App.Path & "\DataSet.ini")
If Left(str, lngReturn) = 1 Then
DataBaseconfig.ValidateType = SQl
Else
DataBaseconfig.ValidateType = Winnt
End If
lngReturn = GetPrivateProfileString("DataBaseConfig", "UserName", "", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.UserName = Left(str, lngReturn)
lngReturn = GetPrivateProfileString("DataBaseConfig", "UserPwd", "", str, 100, App.Path & "\DataSet.ini")
DataBaseconfig.UserPwd = Left(str, lngReturn)
Call ConnectToServer(DataBaseconfig)
Debug.Print Con.State
End Sub
Private Sub Class_Terminate()
If Con.State = 1 Then
Con.Close
End If
Set Con = Nothing
Set DataBaseconfig = Nothing
End Sub
解决方案 »
- 关于goto语句问题
- 我也不知道怎么描述这个问题,但是应该不难,大家棒棒我吧,关于操作ADO的
- 两台windows 2000 server 服务器上的COM+组建如何正常通讯?
- 为什么生成EXE文件后运行不正常,而在工程里F5运行是正常的?
- 如何动态建立一个access数据库中的表?
- 感谢 哥呼拉,又100分
- 如何在VB中打印ACCESS数据库中的某一特定的表(高手请进!在线等待!)
- 定位打印,打印票据,高分求解!!
- 请问用VB增加XML节点怎么做?急。
- 谁有用vb实现朗读英文功能的例子?
- 有关于为什么用adcmdtext,AdCmdTable...
- 请问如何用代码来生成一个Driver da Microsoft para arquivos texto (*.txt;*.csv)数据源?
Public Enum DataBaseTypeEnm
Access = 0
SqlServer = 1
End EnumPublic Enum ValidateTypeEnm
Winnt = 0
SQl = 1
End Enum'保持属性值的局部变量
Private mvarServerName As String '局部复制
Private mvarDataBaseType As DataBaseTypeEnm '局部复制
Private mvarDataBaseName As String '局部复制
Private mvarUserName As String '局部复制
Private mvarUserPwd As String '局部复制
Private mvarValidateType As ValidateTypeEnm '局部复制Private Sub Class_Initialize()
mvarServerName = "."
mvarDataBaseType = SqlServer
mvarDataBaseName = ""
mvarUserName = ""
mvarUserPwd = ""
mvarValidateType = SQl
End Sub
Public Property Let ValidateType(ByVal vData As ValidateTypeEnm)
mvarValidateType = vData
End Property
Public Property Get ValidateType() As ValidateTypeEnm
ValidateType = mvarValidateType
End PropertyPublic Property Let UserPwd(ByVal vData As String)
mvarUserPwd = vData
End Property
Public Property Get UserPwd() As String
UserPwd = mvarUserPwd
End PropertyPublic Property Let UserName(ByVal vData As String)
mvarUserName = vData
End Property
Public Property Get UserName() As String
UserName = mvarUserName
End PropertyPublic Property Let DataBaseName(ByVal vData As String)
mvarDataBaseName = vData
End Property
Public Property Get DataBaseName() As String
DataBaseName = mvarDataBaseName
End PropertyPublic Property Let DataBaseType(ByVal vData As DataBaseTypeEnm)
mvarDataBaseType = vData
End Property
Public Property Get DataBaseType() As DataBaseTypeEnm
DataBaseType = mvarDataBaseType
End PropertyPublic Property Let ServerName(ByVal vData As String)
mvarServerName = vData
End Property
Public Property Get ServerName() As String
ServerName = mvarServerName
End Property
Public Function GetConString(DataBaseConfig As clsDataBaseConfig) As String
Dim strCon As String
If DataBaseConfig.DataBaseType = Access Then
Else
If DataBaseConfig.ValidateType = SQl Then
strCon = "Provider=SQLOLEDB.1;Password=" & DataBaseConfig.UserPwd & ";Persist Security Info=True;User ID=" & DataBaseConfig.UserName & ";Initial Catalog=" & DataBaseConfig.DataBaseName & ";Data Source=" & DataBaseConfig.ServerName
Else
End If
End If
GetConString = strCon
End Function