I am having a problem trying to save records in a parent / child data relation. I have to tables tblContacts & tblMember. There is a fk relation on the ContactID field. The tblContacts table is the master record. I am using a set up bound windows forms controls to do the data collection. The problem that I am having is in saving the child record. After the form is populated in both the fields and hitting the save button the items in the child record get deleted. It does add a row in the child record but only the ContactID (from the master table) and the key for the tblMember table.

I can see that since the new master record incites the addition of a new row, the data is abandoned. Once there is a save done to the master / child record I can go back and modify the fields and it saves it successfully. I know I must be missing something small. I am not sure how to work around this so that the controls are read into memory and then completed in the new row. I have an example of my code:

Private Sub TblContactsBindingNavigatorSaveItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TblContactsBindingNavigatorSaveItem.Click

        Dim newMemberRow As DataRow 'To create a new row in the tblMember table
        Dim contactID As Integer 'To hold the contactID to insert in the new member ContactID field
        Dim rowsaffected As Integer 'To indicate the number of rows affected by update
        Dim contactIndex As Integer


        ' Me.TblContactsBindingSource.MoveLast()

        contactIndex = Me.TblContactsBindingSource.Position()

        MessageBox.Show("The contact Index is " & contactIndex)

        contactID = Me.Ds.Tables("tblContacts").Rows(contactIndex).Item("ContactID")


        If (Me.TblMemberBindingSource.Find("ContactID", contactID.ToString()) < 0) Then

            MessageBox.Show("Current Position in table " & TblMemberBindingSource.Position().ToString())

            MessageBox.Show("The ContactID is " & contactID.ToString())

            '  newMemberRow = Ds.Tables("tblMember").NewRow()
            '  newMemberRow.Item("ContactID") = contactID
            '  newMemberRow.Item("Status") = StatusTextBox.Text
            '  newMemberRow.Item("MemberNotes") = MemberNotesTextBox.Text


            Catch ex As Exception


            End Try

        ElseIf (Me.TblMemberBindingSource.Find("ContactID", contactID.ToString()) >= 0) Then



            Catch ex As Exception


            End Try

        End If


    End Sub
This article has been dead for over six months. Start a new discussion instead.