2010 Форма VB.Net MAster Detail не сохраняет запись

Я новичок в 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 устраняет необходимость в дополнительном коде.


person P Pierce    schedule 15.11.2011    source источник
comment
Просто примечание, как указано, я могу ввести данные для основной или родительской информации и сохранить запись без ошибок. Затем я могу оставить запись и вернуться и ввести детальную или дочернюю часть записи без получения ошибки при сохранении. Ошибка возникает только тогда, когда я пытаюсь завершить и сохранить как мастер, так и деталь.   -  person P Pierce    schedule 15.11.2011


Ответы (1)


Ошибка фактически говорит вам:

1) Дочерняя запись (tblComplaint) сохраняется перед родительской записью (tblUseOfForce)

or

2) Ссылка дочерней записи на родительскую запись (UOfID) не обновляется до решения родительской записи.

Я подозреваю, что номер 2 является наиболее вероятной причиной.

Надеюсь, это поможет вам определить конкретный код, вызывающий эту проблему.

person competent_tech    schedule 15.11.2011