Läsa in data till Combobox-objekt i arbetsblad
Här demonstreras hur vi kan läsa in data till ett Combobox-objekt i ett arbetsblad samt hur ett valt listvärde kan placeras i ett textfält.Här används Combobox-kontrollen från verktygsfältet Kontroller samt Textbox-kontrollen från MS Form 2.0 som nås via verktygsfältet Kontroller.
Option Explicit
Private Sub ComboBox1_Change()
'© 2004 Alla rättigheter XL-Dennis
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stDB As String, stSQL As String
Dim stDatum As String, stCon As String
'Felhantering nödvändig då växling till bladet
'renderar i att Comboboxen töms vilket i sin tur
'initierar denna Change-händelse
If ComboBox1.ListIndex = -1 Then Exit Sub
'Sökväg till och namn på databasen.
stDB = ThisWorkbook.Path & "\" & "XLData1.mdb"
'Skapa anslutningssträngen.
stCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & stDB & ";" & _
"Jet OLEDB:Database Password=dennis;"
stDatum = ComboBox1.Text
'SQL-frågan.
stSQL = "SELECT [UT]" & _
" FROM [tblData]" & _
" WHERE [IN]= # " & stDatum & " # "
'Instansierar ADO-objekten.
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
'Öppnar anslutningen
cnt.Open stCon
With rst
.CursorType = adOpenStatic
.CursorLocation = adUseClient 'Förutsättning för att frikoppla recordset.
.Open stSQL, cnt, , adCmdText 'Öppnar recordset.
Set .ActiveConnection = Nothing 'Frikopplar recordset.
End With
'Stänger anslutningen.
cnt.Close
'Tilldelar Textbox-kontrollen det erhållna värdet.
Me.TextBox1.Text = rst.Fields(0).Value
'Stänger recordset.
rst.Close
'Frigör objekt från minnet.
Set rst = Nothing
Set cnt = Nothing
End Sub
Option Explicit
Private Sub Worksheet_Activate()
'© 2004 Alla rättigheter XL-Dennis
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stDB As String, stCon As String, stSQL As String
Dim vaData As Variant
'Sökväg och namn på databasen.
stDB = ThisWorkbook.Path & "\" & "XLData1.mdb"
'Skapa anslutningssträngen.
stCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & stDB & ";" & _
"Jet OLEDB:Database Password=dennis;"
'SQL-frågan.
stSQL = "SELECT [In]" & _
" FROM [tblData]" & _
" ORDER BY [In];"
'Instansiera ADO-objekten.
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
'Öppnar anslutningen.
cnt.Open stCon
With rst
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.Open stSQL, cnt, , adCmdText 'Öppnar recordset.
Set .ActiveConnection = Nothing 'Frikopplar recordset.
vaData = .GetRows 'Tilldela arrayen hela recordset.
End With
'Stänger anslutningen.
cnt.Close
With Me.ComboBox1
.Clear
.List = Application.Transpose(vaData)
.ListIndex = -1
End With
'Frigör objekt från minnet.
rst.Close
Set rst = Nothing
Set cnt = Nothing
End Sub