I was working through Beth Massi's article, "Using TableAdapters to Insert Related Data into an MS Access Database" here:
http://blogs.msdn.com/b/bethmassi/archive/2009/05/14/using-tableadapters-to-insert-related-data-into-an-ms-access-database.aspxAnd I configured the TableAdapter exactly as shown by Beth, yet I am getting an error here:
Me.OrderDetailsTableAdapter.Update(newOrderDetailsRow)
The Error says: "You must enter a value in the 'OrderDetails.CustomerID' field."
I am using this code for inserting a related record:
Namespace MyDataSetTableAdapters
Public Class AccessIDHelper
'<summary> 'Retrieves the primary key autonumber values from Access '</summary> '<remarks></remarks> Public Shared Sub SetPrimaryKey(
ByVal trans
As OleDbTransaction,
ByVal e
As OleDbRowUpdatedEventArgs)
If e.Status = UpdateStatus.
Continue AndAlso e.StatementType = StatementType.Insert
Then
' If this is an INSERT operation...
Dim CustomerID = e.Row.Table.PrimaryKey
' and a primary key column exists... If CustomerID
IsNot Nothing AndAlso CustomerID.
Count = 1
Then
Dim cmdGetIdentity
As New OleDbCommand(
"SELECT @@IDENTITY", trans.Connection, trans)
' Execute the post-update query to fetch new @@Identity
e.Row(CustomerID(0)) =
CInt(cmdGetIdentity.ExecuteScalar) e.Row.AcceptChanges()
End If
End If
End Sub
End Class
Partial Public Class CustomerTableAdapter
Private Sub _adapter_RowUpdated(
ByVal sender
As Object,
ByVal e
As System.Data.OleDb.OleDbRowUpdatedEventArgs)
Handles _adapter.RowUpdated AccessIDHelper.SetPrimaryKey(
Me.Transaction, e)
End Sub and this for this code for inserting a new record:
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
If MsgBox("Yes or No", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Dim newOrderDetailsRow As MyDataSet.OrderDetailsRow newOrderDetailsRow =
MyDataSet.OrderDetailsTable.NewOrderDetailsRow()
newOrderDetailsRow.OrderCategory = txtOrderCategory.Text
'newOrderDetailsRow.Discounts = Val(ComboDiscounts.SelectedValue)
newOrderDetailsRow.Region = txtRegion.Text
---------
---------------------------
----------------- etc etc
Me.MyDataSet.OrderDetailsTable.Rows.Add(newOrderDetailsRow)
' Save the new row to the database
Me.OrderDetailsTableAdapter.Update(newOrderDetailsRow) <<<<<<<<<<<<<<<<< Error Here Me.Close()
Dim f As Form = New AddNewOrderDetailsForm
f.Show()
End If
End Sub
I am not able to insert and move on as I am getting the error marked above.
What could be possibly wrong with the above code and why is this giving an error ?? It should work as Beth explains.
Please help.