我编写了一个使用Access.accdb的vb.net程序。数据库中有三个表;客户,订单和另一个表仅用于填充ComboBox。我有一个TextBoxes绑定到CustomersTableBindingSource的表单和一个Navigator Control,我还有一个DataViewGrid,显示与该特定Customers记录相关的所有订单。当表单关闭时,它会检查数据集是否有更改,如果是,则进行保存。当我对表单上的客户记录或DataGridView上的订单记录进行更改或同时执行这两项操作时,所有这些都可以正常工作。我甚至可以添加一个没有问题的新订单记录,一切都将更新到数据库中。当我尝试创建新的客户记录并同时向该记录添加订单时,会出现问题。只要我创建一个客户记录并且不添加任何订单它就可以保存得很好,但是如果我向它添加订单我会得到 -
You cannot add or change a record because a related record is required in table 'Customers'
当然,我只能保存客户信息,然后返回并稍后添加订单信息,但这并不令人满意。我想同时做两件事。
这可能是相关的代码;
Private Sub UpDatetheDataBase()
Try
Validate()
CustomersBindingSource.EndEdit()
OrdersBindingSource.EndEdit()
TableAdapterManager.UpdateAll(CompanyDataSet)
MsgBox("Update successful")
Catch ex As Exception
MsgBox("Error Number: " & Err.Number & vbCrLf & Err.Description & vbCrLf & "Update Failed!")
End Try
End Sub
而且这个。
Private Sub OrdersBindingSource_AddingNew(sender As Object, e As AddingNewEventArgs) Handles OrdersBindingSource.AddingNew
'Commit parent records in the dataset before adding new child records
CustomersBindingSource.EndEdit()
End Sub
父表:客户 子表:订单
Customers Key Columns: ID
Orders Foreign Key Columns: CustomersID
Both Relation and Foreign Key Constraint
UpDate Rule: Cascade
Delete Rule: Cascade
Accept/Reject Rule: None
Checked Nested Relation
TableAdapterManager UpDateOrder UpDateInsertDelete
如果我将“接受/拒绝规则”更改为“级联”,则仅保存“客户”记录,但不会保存订单信息。 我已经尝试了我所知道的一切,并研究了我能找到的任何信息,但我无法解决这个问题。拜托,我真诚地感谢任何帮助。