3
Answers

Fill data in ComboBox from DataTable using Access database

Anas Tasadduq

Anas Tasadduq

10y
4.8k
1
I have a two column table in an MS Access database and want to fill its second column in a ComboBox from where the user can make a selection. I'm using a DataTable to do it. The code is below:
 
private void Form1_Load(object sender, EventArgs e)
{
OleDbConnection connect = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Anas\Dropbox\C# Projects\2.Database\ClOsODb.accdb; Persist Security Info=False");
connect.Open();
OleDbCommand cmd = new OleDbCommand("select * from Course Number and Name", connect);
OleDbDataReader odr = null;
odr = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(odr);
course_Number_and_NameComboBox.DataSource = table;
course_Number_and_NameComboBox.BindingContext = this.BindingContext;
course_Number_and_NameComboBox.DisplayMember = "Course Number and Name";
course_Number_and_NameComboBox.ValueMember = "ID";
connect.Close();
}
 
 However, the problem is that when I run the application, the ComboBox is empty! It doesn't get filled. Can anyone help me and tell me where I am wrong and what should I do? Help will be greatly appreciated.
 
Also, can anyone tell me how will I get the value in the first column of the selected row of the DataTable when a selection is made at the ComboBox(in other words, when an item will be selected in the ComboBox-second column of a row in the table-how will I know which row is selected in the ComboBox and how will I get the value in the first column of the same row)? 
Answers (3)
0
Khan Abrar Ahmed

Khan Abrar Ahmed

NA 5.8k 199.9k 10y
Hi you can try this code
private void Form1_Load(object sender, EventArgs e)
{
OleDbConnection connect = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Anas\Dropbox\C# Projects\2.Database\ClOsODb.accdb; Persist Security Info=False");
connect.Open();
string cmd = "select * from Course Number and Name";
OleDbDataAdapter adapter = new OleDbDataAdapter(new OleDbCommand(strSql, connect));
 DataSet ds = new DataSet();
adapter.Fill(ds);

course_Number_and_NameComboBox.DataSource = ds.Tables[0];
course_Number_and_NameComboBox.DisplayMember = "Course Number and Name";
course_Number_and_NameComboBox.ValueMember = "ID";
connect.Close();
}
0
Anas Tasadduq

Anas Tasadduq

NA 3 4.8k 10y
But I am using C#, not VB. Sorry I did not mention it in the question.
0
Khan Abrar Ahmed

Khan Abrar Ahmed

NA 5.8k 199.9k 10y
Hi you can try below code
Dim cn As New OleDbConnection("provider=Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Users\Anas\Dropbox\C# Projects\2.Database\ClOsODb.accdb")
   Dim da As New OleDbDataAdapter()
   Dim dt As New DataTable()
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      cn.Open()
      da.SelectCommand = New OleDbCommand("select * from [course Number and Name]", cn)
      da.Fill(dt)
 
      ComboBox1.DataSource = dt
      ComboBox1.DisplayMember = "Course Number and Name";
      ComboBox1.ValueMember = "ID";
 
      ' or this way
      ComboBox1.Items.Clear()
      Dim r As DataRow
      For Each r In dt.Rows
         ComboBox1.Items.Add(r(1).ToString)
      Next
      cn.Close()
   End Sub