0
votes

I have populated a DataGridView from the two tables.i am working on windows forms

In page load event I have this code:

Dim adapter As SqlDataAdapter
Dim bSource As BindingSource
Dim dt1 As DataTable

     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim con As SqlConnection = New SqlConnection("Data Source=SUPPORT2\SUPPORT2;Initial Catalog=Registry;Persist Security Info=True;User ID=sa;password=solutions") 'SET THE CONNECTION STRING
            con.Open()

            Dim cd As SqlCommandBuilder = New SqlCommandBuilder(adapter)
            adapter = New SqlDataAdapter("select c.cid,c.CompanyName,d.dtName,d.dtPhone,d.dtEmail  from CompanyMaster_tbl c join  DepartmentMaster_tbl d on c.Cid=d.cId", con)
            dt1 = New DataTable
            bSource = New BindingSource
            adapter.Fill(dt1)
            bSource.DataSource = dt1
            gv.DataSource = bSource
        End Sub

in update button click i given code like this:

Dim cid As Integer
        Dim cmpname As String
        Dim dtname As String
        Dim dtPhone As String
        Dim dtEmail As String
 Dim rv = DirectCast(bSource.Current, DataRowView)
        cid = rv.Row.Field(Of Integer)("Cid")
        cmpname = rv.Row.Field(Of String)("CompanyName")
        dtname = rv.Row.Field(Of String)("dtName")
        dtPhone = rv.Row.Field(Of String)("dtPhone")
        dtEmail = rv.Row.Field(Of String)("dtEmail")

        adapter.UpdateCommand.Parameters.AddWithValue("@Cid", cid)
        adapter.UpdateCommand.Parameters.AddWithValue("@CompanyName", cmpname)
        adapter.UpdateCommand.Parameters.AddWithValue("@dtName", dtname)
        adapter.UpdateCommand.Parameters.AddWithValue("@dtPhone", dtPhone)
        adapter.UpdateCommand.Parameters.AddWithValue("@dtEmail", dtEmail)
        adapter.UpdateCommand = New SqlCommand("UPDATE CompanyMaster_tbl SET CompanyName = @CompanyName, dtName = @dtName, dtPhone = @dtPhone, dtEmail = @dtEmail WHERE Cid = @Cid", con)

Whenever I edit something in the dataGridView and click update button i am getting error in this line: adapter.UpdateCommand.Parameters.AddWithValue("@Cid", cid)
Error: Object reference not set to an instance of an object.

1
check your SELECT Statement your not selecting C.ID..Unknownymous

1 Answers

0
votes

I think you Need to reinitialize you adapter , add this to your button click code :

    Adapter =  new SqlDataAdapter

EDIT : Change Your Code Like This :

    adapter.UpdateCommand = New SqlCommand("UPDATE CompanyMaster_tbl SET CompanyName = @CompanyName, dtName = @dtName, dtPhone = @dtPhone, dtEmail = @dtEmail WHERE Cid = @Cid", con)
    adapter.UpdateCommand.Parameters.AddWithValue("@Cid", cid)
    adapter.UpdateCommand.Parameters.AddWithValue("@CompanyName", cmpname)
    adapter.UpdateCommand.Parameters.AddWithValue("@dtName", dtname)
    adapter.UpdateCommand.Parameters.AddWithValue("@dtPhone", dtPhone)
    adapter.UpdateCommand.Parameters.AddWithValue("@dtEmail", dtEmail)
    adapter.UpdateCommand.ExecuteNonQuery()