VB.Net 2013 How do I programatically update a bindingsource without getting late binding errors/warnings?

487 Views Asked by At

I created a DataSet with a DataTable & TableAdapter that contains Select/Update/Insert/Delete commands that relate to my MSSQL database. The DataTable selects all the fields from a Person table (two fields in particular a LastName string and an UpdateUserID int).

Then I made a simple test form with a textbox and a button. From the Data Sources tab, I dragged the LastName field onto the form. This creates MyDataset, MyTableAdapter, and MyBindingSource on the form. It also databinds the textbox to the LastName field of the BindingSource.

Here's the complete code for the form:

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        loadData()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Validate()
        Me.MyBindingSource.EndEdit()
        ' Me.MyBindingSource.Current("updateUserID") = 123
        Me.MyTableAdapter.Update(Me.MyDataset.myDatatable)
        loadData()
    End Sub

    Private Sub loadData()
        Me.MyTableAdapter.Fill(Me.MyDataset.myDatatable)
    End Sub

End Class

This all works completely fine. The problem occurs when I uncomment the line: "Me.MyBindingSource.Current("updateID") = 123". I'm trying to set the UpdateID to save the ID of the user that most recently made a change.

In Visual Studio 2008, this worked fine. But I just upgraded to 2013 and now I'm getting an error that says "Option Strict On disallows late binding."

(PS, this is a test program. In the actual program - converted from 2008 - I only get warnings saying "Late bound resolution; runtime errors could occur.")

I understand why I'm getting these errors/warnings: because the IDE doesn't know what DataType the "updateUserID" DataColumn is.

But what can I do to manually update the BindingSource before saving? I don't think turning Option Strict off is a good idea.

The DataColumns in the DataTable have their DataTypes specified. Is there a way to reference the DataColumn directly instead of through the string of its name?

I'm looking for something like:

Me.MyBindingSource.Current.DataColumns.UpdateUserID.value = 123

Thanks for any help!

0

There are 0 best solutions below