无法一次从两个表中向数据库添加记录

时间:2016-09-30 12:22:19

标签: database vb.net ms-access-2013

我编写了一个使用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

如果我将“接受/拒绝规则”更改为“级联”,则仅保存“客户”记录,但不会保存订单信息。 我已经尝试了我所知道的一切,并研究了我能找到的任何信息,但我无法解决这个问题。拜托,我真诚地感谢任何帮助。

0 个答案:

没有答案
相关问题