'Database connectivity coding
--------------------------------
Option Explicit
Public cnn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public strSQL As String
Public Sub OpenDB()
If cnn.State = adStateOpen Then cnn.Close
cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx,
*.xlsm, *.xlsb)};DBQ=" & _
ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
cnn.Open
End Sub
Public Sub closeRS()
If rs.State = adStateOpen Then rs.Close
rs.CursorLocation = adUseClient
End Sub
==============================================
'Clear
----------------------------------
Private Sub cmdCLEAR_Click()
Sheet1.cmbUnitType.Clear
Sheet1.cmbCity.Clear
Sheet1.Visible = True
Sheet1.Select
Range("Result").Select
Range(Selection, Selection.End(xlDown)).ClearContents
End Sub
===============================================
'Update drop down
-----------------------------
Private Sub cmdUpdate_Click()
strSQL = "Select Distinct [Unit Type] From [data$] Order by [Unit Type]"
closeRS
OpenDB
Sheet1.cmbUnitType.Clear
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
Sheet1.cmbUnitType.AddItem rs.Fields(0)
rs.MoveNext
Loop
Else
MsgBox "I was not able to find any unique Products.", vbCritical +
vbOKOnly
Exit Sub
End If
strSQL = "Select Distinct [City] From [data$] Order by [City]"
closeRS
OpenDB
Sheet1.cmbCity.Clear
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
Sheet1.cmbCity.AddItem rs.Fields(0)
rs.MoveNext
Loop
Else
MsgBox "I was not able to find any unique Products.", vbCritical +
vbOKOnly
Exit Sub
End If
End Sub
====================================================
'Show the data
--------------------------------------
Private Sub cmdShow_Click()
strSQL = "SELECT * FROM [data$] WHERE "
If Sheet1.cmbUnitType.Text <> "" Then
strSQL = strSQL & " [Unit Type]='" & Sheet1.cmbUnitType.Text & "'"
End If
If Sheet1.cmbCity.Text <> "" Then
If Sheet1.cmbUnitType.Text <> "" Then
strSQL = strSQL & " AND [City]='" & Sheet1.cmbCity.Text & "'"
Else
strSQL = strSQL & " [City]='" & Sheet1.cmbCity.Text & "'"
End If
End If
If Sheet1.cmbUnitType.Text <> "" Or Sheet1.cmbCity.Text <> "" Then
'now extract data
closeRS
OpenDB
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Sheets("View").Visible = True
Sheets("View").Select
Range("Result").Select
Range(Selection, Selection.End(xlDown)).ClearContents
'Now putting the data on the sheet
ActiveCell.CopyFromRecordset rs
Else
MsgBox "I was not able to find any matching records.", vbExclamation
+ vbOKOnly
Exit Sub
End If
End If
End Sub

Database connectivity in VBA

  • 1.
    'Database connectivity coding -------------------------------- OptionExplicit Public cnn As New ADODB.Connection Public rs As New ADODB.Recordset Public strSQL As String Public Sub OpenDB() If cnn.State = adStateOpen Then cnn.Close cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _ ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name cnn.Open End Sub Public Sub closeRS() If rs.State = adStateOpen Then rs.Close rs.CursorLocation = adUseClient End Sub ============================================== 'Clear ---------------------------------- Private Sub cmdCLEAR_Click() Sheet1.cmbUnitType.Clear Sheet1.cmbCity.Clear Sheet1.Visible = True Sheet1.Select Range("Result").Select Range(Selection, Selection.End(xlDown)).ClearContents End Sub =============================================== 'Update drop down ----------------------------- Private Sub cmdUpdate_Click() strSQL = "Select Distinct [Unit Type] From [data$] Order by [Unit Type]" closeRS OpenDB Sheet1.cmbUnitType.Clear rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic If rs.RecordCount > 0 Then Do While Not rs.EOF Sheet1.cmbUnitType.AddItem rs.Fields(0) rs.MoveNext Loop Else MsgBox "I was not able to find any unique Products.", vbCritical + vbOKOnly Exit Sub End If strSQL = "Select Distinct [City] From [data$] Order by [City]" closeRS OpenDB Sheet1.cmbCity.Clear rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic If rs.RecordCount > 0 Then Do While Not rs.EOF Sheet1.cmbCity.AddItem rs.Fields(0) rs.MoveNext
  • 2.
    Loop Else MsgBox "I wasnot able to find any unique Products.", vbCritical + vbOKOnly Exit Sub End If End Sub ==================================================== 'Show the data -------------------------------------- Private Sub cmdShow_Click() strSQL = "SELECT * FROM [data$] WHERE " If Sheet1.cmbUnitType.Text <> "" Then strSQL = strSQL & " [Unit Type]='" & Sheet1.cmbUnitType.Text & "'" End If If Sheet1.cmbCity.Text <> "" Then If Sheet1.cmbUnitType.Text <> "" Then strSQL = strSQL & " AND [City]='" & Sheet1.cmbCity.Text & "'" Else strSQL = strSQL & " [City]='" & Sheet1.cmbCity.Text & "'" End If End If If Sheet1.cmbUnitType.Text <> "" Or Sheet1.cmbCity.Text <> "" Then 'now extract data closeRS OpenDB rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic If rs.RecordCount > 0 Then Sheets("View").Visible = True Sheets("View").Select Range("Result").Select Range(Selection, Selection.End(xlDown)).ClearContents 'Now putting the data on the sheet ActiveCell.CopyFromRecordset rs Else MsgBox "I was not able to find any matching records.", vbExclamation + vbOKOnly Exit Sub End If End If End Sub