Before I changed my code, I used
to update the datatable. This specifies a dataset (ds) that I could then use to bind to the combobox in the following way:
I have now changed my code following advice from tg and JMc (strongly based on JMc's codebank entries in his signature.
The update now does not specify a dataset
I tried finding ".Tables" in the DataAdapter but of course it isn't there.
MY question is: with my code below, how can I bind the combobox like I did before I changed the code.
This attempt did not report errors but did not work either.
vb.net Code:
daLevel.Fill(ds, "tblLevel")
vb.net Code:
Dim bndLevel As New BindingSource bndLevel.DataSource = ds.Tables("tblLevel") cboLevelMaint.DataSource = bndLevel cboLevelMaint.ValueMember = "lvID" cboLevelMaint.DisplayMember = "lvName" cboLevelMaint.SelectedIndex = -1
I have now changed my code following advice from tg and JMc (strongly based on JMc's codebank entries in his signature.
The update now does not specify a dataset
vb.net Code:
Me.LevelAdapter.Fill(Me.LevelTable)
MY question is: with my code below, how can I bind the combobox like I did before I changed the code.
vb.net Code:
Public Class frmMain Private conn As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Vocab.mdb") Private LevelAdapter As New OleDb.OleDbDataAdapter("SELECT * FROM tblLevel", conn) Private LevelTable As New DataTable . . . . . . . Private Sub btnLevelDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnLevelDelete.Click Using conn Using LevelAdapter conn.Open() LevelAdapter.DeleteCommand.Parameters("@id").Value = cboLevelMaint.SelectedValue LevelAdapter.DeleteCommand.ExecuteNonQuery() SaveLevelData() End Using End Using ShowDeleted() End Sub #Region "Datalayer" Private Sub InitialiseLevelDataAdapter() Dim DeleteCMD As New OleDb.OleDbCommand("DELETE FROM tblLevel WHERE lvID = @id", Me.conn) Dim InsertCMD As New OleDb.OleDbCommand("INSERT INTO tblLevel (lvName) VALUES(@nm)", Me.conn) Dim UpdateCMD As New OleDb.OleDbCommand("UPDATE tblLevel SET lvName = @nm WHERE lvID = @id", Me.conn) DeleteCMD.Parameters.Add("@id", OleDb.OleDbType.Double) InsertCMD.Parameters.Add("@nm", OleDb.OleDbType.VarChar, 10) UpdateCMD.Parameters.Add("@nm", OleDb.OleDbType.VarChar, 10) UpdateCMD.Parameters.Add("@id", OleDb.OleDbType.Double) Me.LevelAdapter.DeleteCommand = DeleteCMD Me.LevelAdapter.InsertCommand = InsertCMD Me.LevelAdapter.UpdateCommand = UpdateCMD Me.LevelAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey End Sub Private Sub GetLevelData() Me.LevelAdapter.Fill(Me.LevelTable) End Sub Private Sub SaveLevelData() Me.LevelAdapter.Update(Me.LevelTable) End Sub #End Region
This attempt did not report errors but did not work either.
vb.net Code:
Private Sub btnLevelDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnLevelDelete.Click Dim adapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(SQL, conn) Dim Levels As DataSet = New DataSet Dim bndLevel As New BindingSource Using conn Using LevelAdapter conn.Open() LevelAdapter.DeleteCommand.Parameters("@id").Value = cboLevelMaint.SelectedValue LevelAdapter.DeleteCommand.ExecuteNonQuery() SaveLevelData() End Using End Using SQL = "SELECT * FROM tblLevel" adapter.Fill(Levels, "tblLevel") bndLevel.DataSource = Levels.Tables("tblLevel") cboLevelMaint.DataSource = bndLevel cboLevelMaint.ValueMember = "lvID" cboLevelMaint.DisplayMember = "lvName" cboLevelMaint.SelectedIndex = -1 ShowDeleted() End Sub