2011-11-15 56 views
1

我是VB.net的新手,並創建了一個簡單的主窗口細節。我創建了兩個表格數據集,然後將表格中的主表格作爲連續表單或具有多個文本框的詳細表單放置以保存數據。子表單是一個數據網格。2010 VB.Net MAster詳細表格不保存記錄

我已經直接添加到數據庫的測試數據顯示與表單上正確的父子關係。我也可以使用表單的僅父部分將新記錄輸入到數據庫中。

當我嘗試在父窗體和子數據網格中輸入帶有數據的完整記錄時,出現此錯誤。

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消除了額外代碼的需要

+0

只需按照說明的一個旁註,我可以輸入主或父信息的數據並保存記錄而不會出錯。然後,我可以離開記錄並返回並輸入記錄的詳細信息或子部分,而不會在保存時出錯。只有當我嘗試完成並保存主數據和詳細數據時纔會出現該錯誤。 –

回答

0

該錯誤是有效地告訴您:

1)孩子記錄(tblComplaint)被父記錄(tblUseOfForce)

2)子記錄的參考父記錄之前保存(UOfID)在父記錄解決之前未被更新。

我懷疑數字2是最可能的原因。

希望這可以幫助您查明導致此問題的特定代碼。