2010年VB.Net MAster详细信息表单未保存记录

时间:2011-11-15 01:24:14

标签: vb.net vb.net-2010

我是VB.net的新手,并创建了一个简单的主细节窗体。我创建了一个两个表数据集,然后将主表格作为连续表单或具有多个文本框的详细表单放在表单上以保存数据。子表单是数据网格。

我直接添加到数据库的测试数据显示在表单上的正确父子关系。我还可以使用表单的父级部分将新记录输入数据库。

当我尝试在父表单和子数据网格中输入包含数据的完整记录时,我收到此错误。

  

INSERT语句与FOREIGN KEY约束冲突   FK_tblComplainant_tblUseOfForce。冲突发生在数据库中   "C:\SQLFILES\CCTS_2.MDF",表"dbo.tblUseOfForce",列'UOFID'。   声明已经终止。

tblComplainant是孩子,tblUseOfForce是主人。用于保存此记录的代码如下:

 Private Sub TblUseOfForceBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesTblUseOfForceBindingNavigatorSaveItem.Click
    Me.Validate()
    Me.TblUseOfForceBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.UseOfForceDataSet)
 End Sub

我搜索了此错误的可能原因但找不到任何解释。我在早期版本的VB.net中注意到你必须输入代码来保存子记录,但是VB 2010代码似乎没有使用相同的语法,所以我假设UpdateAll消除了对额外代码的需求

2 个答案:

答案 0 :(得分:0)

错误有效地告诉你:

1)在父记录(tblUseOfForce)之前保存子记录(tblComplaint)

2)在父记录解决之前,子记录对父记录(UOfID)的引用没有更新。

我怀疑2号是最可能的原因。

希望这可以帮助您找出导致此问题的特定代码。

答案 1 :(得分:0)

本文为我提供了如何在详细信息表之前更新主表的好主意。

How to: Update Data Using a TableAdapter

我希望这对你也有帮助!