VBA+SQL訪問數據庫基本框架

VBA+SQL訪問數據庫基本框架

系統框架

在這裏插入圖片描述

代碼框架

Public Const ConStrSCM = "Provider=xxx;Server=xxx;Database=xxx;User ID=xxx;Password=xxx;"
'定義數據庫鏈接

Sub Query_Click()	'Query按鈕
    Call QueryData
End Sub

Sub QueryData()

    Dim cn As Object
    Dim rs As Object
    
    Dim i As Integer
    Dim j As Integer
    
     Dim iID As Integer
     Dim sfirstName As String
     
    On Error GoTo err_label
    ' 在執行時不更新畫面,也不報警
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' 新增DB Connection連線
         Set cn = CreateObject("ADODB.Connection")

    ' 設定DB連線逾時的時間
    cn.CommandTimeout = 300

    ' 連接DB
    cn.Open ConStrSCM

    Set rs = CreateObject("ADODB.RecordSet")
    
    iID = Cells(1, 2).Value
    sfirstName = Cells(2, 2).Value
    
    sSQL = "select * from xxx"

 '下SQL指令
 Set rs = cn.Execute(sSQL)
    
'將數據整表抄入Excel
    If Not rs.EOF Then
         Cells(6, 1).CopyFromRecordset rs
    End If
  
    Call ReleaseDB(cn, rs)
    
   ' 計算完成後恢復用戶Excel的默認計算方式
    Application.Calculation = iDefaultCalculate
    
    Exit Sub
   
   
err_label:
    
    Call ReleaseDB(cn, rs)

    ' 發生異常後也需恢復畫面更新,以及報警通知
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    ' 計算完成後恢復用戶Excel的默認計算方式
    Application.Calculation = iDefaultCalculate
         
    '提示SQL語句錯誤信息
    MsgBox Err.Description, vbOKOnly + vbExclamation, "提示"
End Sub

Sub ReleaseDB(ByRef cn As Object, ByRef rs As Object)

    ' 關閉Recordset
    If rs.State = 1 Then
        rs.Close
    End If
    
    ' 關閉DB連線
    If cn.State = 1 Then
        cn.Close
    End If
    
    ' 釋放Recordset資源
    Set rs = Nothing
    
    ' 釋放DB連線資源
    Set cn = Nothing

End Sub
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章