Hello,
My developing environment is :
Win 10 64
Visual Basic 2010
WinForm application Front-End, MS-Access 2016 Database
My Issue :
I have a Form that contains 4 ComboBox Controls, each ComboBox is supposed to be filled with Data From a different table within the Database. I'm using BackgroundWorker Control to fill one ComboBox control on Form_Load() event.
I'm wondering, how to do the same with the rest 3 ComboBox controls? and if there are a better way to achieve such task !!
Here is my code for filling one of the combobox controls:
My developing environment is :
Win 10 64
Visual Basic 2010
WinForm application Front-End, MS-Access 2016 Database
My Issue :
I have a Form that contains 4 ComboBox Controls, each ComboBox is supposed to be filled with Data From a different table within the Database. I'm using BackgroundWorker Control to fill one ComboBox control on Form_Load() event.
I'm wondering, how to do the same with the rest 3 ComboBox controls? and if there are a better way to achieve such task !!
Here is my code for filling one of the combobox controls:
Code:
Imports System.Data.OleDb
Public Class ThisForm
Private ComboItems As New Dictionary(Of String, String)()
Private Sub PurchaseFrm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
If BackgroundWorker1.IsBusy Then
BackgroundWorker1.CancelAsync()
End If
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim SqlStr As String =
("SELECT * FROM Types;")
Using CN As New OleDbConnection With {.ConnectionString = My.Settings.MainConnection},
M_Cmd As New OleDbCommand(SqlStr, CN)
CN.Open()
Using ComboReader As OleDbDataReader = M_Cmd.ExecuteReader
While ComboReader.Read
If ComboReader.HasRows Then
'Almost 29.8k records of string.
ComboItems.Add(ComboReader!TypeID.ToString, ComboReader!TypeNm)
Else
TypCbo.DataSource = Nothing
End If
End While
End Using
End Using
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
With TypCbo
.DataSource = Nothing
.Items.Clear()
.BeginUpdate()
.DataSource = New BindingSource(ComboItems, Nothing)
.DisplayMember = "Value"
.ValueMember = "key"
.SelectedIndex = -1
.EndUpdate()
End With
End Sub
End Class