【问题标题】:2010 VB.Net MAster Detail form not saving record2010 VB.Net MAster Detail 表单不保存记录
【发布时间】:2011-11-15 01:24:14
【问题描述】:

我是 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 消除了对额外代码的需要

【问题讨论】:

  • 只是附带说明,我可以输入主信息或父信息的数据并保存记录而不会出错。然后,我可以离开记录并返回并输入记录的详细信息或子部分,而在保存时不会出现错误,该错误仅在我尝试完成并保存主和详细信息时发生。

标签: vb.net vb.net-2010


【解决方案1】:

错误实际上是在告诉您:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多