|
本帖最后由 liucqa 于 2013-8-19 00:59 编辑
- Option Explicit
- Private conConnection As ADODB.Connection
- Public rct As New ADODB.Recordset
- Public ServerName As String
- Public DBName As String
- Public UserId As String
- Public PassWord As String
- Public SQLString As String
- '连接到数据库
- Public Function connectToServer() As Boolean
- On Error GoTo ON_ERROR
- Call CloseConnect
- Set conConnection = New ADODB.Connection
- conConnection.ConnectionString = "Provider=Sqloledb;User ID=" & UserId & ";Password=" & PassWord & ";" & _
- "Initial Catalog=" & DBName & ";Data Source=" & ServerName & ";"
- conConnection.ConnectionTimeout = 30
- conConnection.Open
- connectToServer = True
- Exit Function
- ON_ERROR:
- MsgBox "错误描述:" & Err.Description & vbCrLf & "错误代码:" & Err.Number, vbCritical + vbOKOnly, "打开数据库错误"
- connectToServer = False
- End Function
- '类初始化
- Private Sub Class_Initialize()
- Set conConnection = New ADODB.Connection
- End Sub
- '类实例销毁
- Private Sub Class_Terminate()
- Call CloseConnect
- End Sub
- '断开数据库的连接
- Private Function CloseConnect() As Boolean
- On Error Resume Next
- If conConnection.State = adStateOpen Then
- conConnection.Close
- End If
- Set rct = Nothing
- Set conConnection = Nothing
- CloseConnect = True
- End Function
- '获数据库里表的数据
- Public Function GetSQLData() As Boolean
- On Error GoTo ON_ERROR
- Set rct = conConnection.Execute(SQLString)
- If rct.EOF = True And rct.BOF = True Then
- GetSQLData = False
- Exit Function
- Else
- GetSQLData = True
- End If
- Exit Function
- ON_ERROR:
- MsgBox "错误描述:" & Err.Description & vbCrLf & "错误代码:" & Err.Number, vbCritical + vbOKOnly, "错误"
- Err.Clear
- GetSQLData = False
- End Function
- Public Function ReturnSQLData()
- Application.ScreenUpdating = False
- Dim shtke As Excel.Worksheet
- Dim bs%, RowNum%, ColNum%
- On Error Resume Next
- Set shtke = ThisWorkbook.Sheets("数据源")
- Application.ScreenUpdating = False
- RowNum = shtke.UsedRange.Rows.Count
- ColNum = shtke.UsedRange.Columns.Count
- shtke.Range(shtke.Cells(3, 1), shtke.Cells(RowNum, ColNum)).ClearContents
- If g_DBManager.GetSQLData = True Then
- Dim i As Integer
- Dim r As Integer
- r = 0
- For i = 0 To g_DBManager.rct.Fields.Count - 1
- With shtke.Cells(3, i + 1)
- .Value = g_DBManager.rct.Fields(i).Name
- '.Interior.ColorIndex = 15
- End With
- Next i
- While Not g_DBManager.rct.EOF
- For i = 0 To g_DBManager.rct.Fields.Count - 1
- shtke.Cells(r + 4, i + 1).Value = g_DBManager.rct.Fields(i).Value
- Next i
- r = r + 1
- g_DBManager.rct.MoveNext
- Wend
- Dim ww As New wangvei
- ww.jilugx Application, UFsezhi
- Set ww = Nothing
- Else
- MsgBox "Excel未能正确返回查询结果,请检查SQL语句是否正确!", vbExclamation, "操作失败"
- End If
- End Function
- Public Function morengenxin()
- On Error Resume Next
- Application.ScreenUpdating = False
- Dim shtke As Excel.Worksheet
- Dim bs%, RowNum%, ColNum%
- Set shtke = ThisWorkbook.Sheets("数据源")
- Dim ww As New wangvei
- ww.jiludy Application, UFsezhi
- Set ww = Nothing
- Set g_DBManager = New clsDBManager
- g_DBManager.ServerName = UFsezhi.txtServerName.Text
- g_DBManager.UserId = UFsezhi.txtUserID.Text
- g_DBManager.PassWord = UFsezhi.txtPassword.Text
- g_DBManager.DBName = UFsezhi.cboDBName.Text
- If g_DBManager.connectToServer = True Then
- ' MsgBox "Excel已经成功与SQLServer服务器:" & g_DBManager.ServerName & "上的数据库:" & _
- ' g_DBManager.DBName & "建立了连接! ", vbInformation, "操作成功"
- '返回所有数据库名称
- g_DBManager.SQLString = "sp_helpdb"
- Call g_DBManager.GetSQLData
- 'SELECT * FROM sysobjects WHERE (xtype = 'u')
- If g_DBManager.GetSQLData = False Then
- MsgBox "Excel未能正确返回查询结果,请检查SQL语句是否正确!", vbExclamation, "操作失败"
- Set g_DBManager = Nothing
- Exit Function
- End If
- Else
- MsgBox "Excel未能与SQLServer服务器连接", vbExclamation, "操作失败"
- Exit Function
- End If
- RowNum = shtke.UsedRange.Rows.Count
- ColNum = shtke.UsedRange.Columns.Count
- shtke.Range(shtke.Cells(3, 1), shtke.Cells(RowNum, ColNum)).ClearContents
- Dim ww2 As New wangvei
- ww2.jiludy2 Application, UFsezhi
- Set ww2 = Nothing
- g_DBManager.SQLString = Trim(UFsezhi.txtSQL.Text)
- If g_DBManager.GetSQLData = True Then
- Dim i As Integer
- Dim r As Integer
- r = 0
- If UFsezhi.CheckBox2.Value = True Then
- r = 1
- For i = 0 To g_DBManager.rct.Fields.Count - 1
- With shtke.Cells(3, i + 1)
- .Value = g_DBManager.rct.Fields(i).Name
- .Interior.ColorIndex = 15
- End With
- Next i
- End If
- While Not g_DBManager.rct.EOF
- For i = 0 To g_DBManager.rct.Fields.Count - 1
- shtke.Cells(r + 3, i + 1).Value = g_DBManager.rct.Fields(i).Value
- Next i
- r = r + 1
- g_DBManager.rct.MoveNext
- Wend
- 'shtke.Range("B1").CurrentRegion.Columns.AutoFit
- MsgBox "您已经完成了一次数据更新!", 64, "系统提示"
- Else
- MsgBox "Excel未能正确返回查询结果,请检查SQL语句是否正确!", vbExclamation, "操作失败"
- End If
- End Function
复制代码
类模块留着玩吧
|
|