Подключение к базе MS SQL по VBA • ArtTeleCom

Подключение к базе MS SQL по VBA

С помощью процедуры указанной ниже можно настроить подключение к базе данных MS SQL. Остается передать переменную sSQL в которой определен SQL-запрос и решить как будет обрабатываться ответ от базы (куда будут вставлены данные).

Public cnn As ADODB.Connection
Public rst As ADODB.Recordset

Private Sub sbCreateConnection_Sage(ByVal sSQL As String)

Dim strConn As String
Dim strUserID As String
Dim strPassword As String

strUserID = "username"
strPassword = "user-password"

strConn = "Provider=MSDASQL.1;"
strConn = strConn & "driver= {SQl Server};"
strConn = strConn & "Server=Server-IP-Address\Instance-Name;"
strConn = strConn & "Database=DB-Name;"
strConn = strConn & "uid=" & strUserID & ";"
strConn = strConn & "pwd=" & strPassword & ";"

Set cnn = New ADODB.Connection

With cnn
    .Open strConn
    .CursorLocation = adUseClient
End With

Set rst = New ADODB.Recordset

With rst
    .CursorLocation = adUseClient
    .Open Source:=sSQL, ActiveConnection:=cnn, CursorType:=adOpenForwardOnly, LockType:=adLockOptimistic, Options:=adCmdText
End With

End Sub

Ниже приведена процедура которая полученные данные вставляет в dropdown лист.

Sub sbConsumablesPeriod_DropDown()

On Error GoTo UserForm_Initialize_Err

Dim strSQL As String
strSQL = "select distinct tr.period as con_period from scheme.cotransm tr where tr.trans_ref like 'I0%' and RIGHT(tr.period,4) = '2017' or RIGHT(tr.period,4) = '2018' order by tr.period desc"

Call sbCreateConnection_Sage(strSQL)

rst.MoveFirst

With ufrmConsumablesGenerator.cboxPeriod
    .Clear
    Do
        .AddItem RTrim(rst![con_period])
        rst.MoveNext
    Loop Until rst.EOF
End With

UserForm_Initialize_Exit:
    On Error Resume Next
    Exit Sub

UserForm_Initialize_Err:
    MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
    Resume UserForm_Initialize_Exit
    
End Sub

Category

Leave a Comment

Your email address will not be published. Required fields are marked *