0

updateAllテーブル アダプター マネージャーのメソッドを使用しようとしています。別のテーブルに子として保存されているレコードを更新しようとすると、updateAll「テーブルの「競合」に関連するレコードが含まれているため、削除または変更できません」という例外がスローされます。このメソッドは、すべてのテーブル リレーションを処理することになっていませんか?

ここに私が保存しているコードがあります:

Public Sub saveAll(ByVal dataSet As SudokuDataSet)
  Try
    Dim tbAdapterManager As New SudokuDataSetTableAdapters.TableAdapterManager

    tbAdapterManager.CompetitorTableAdapter = competitorTableAdapter
    tbAdapterManager.PuzzleTableAdapter = puzzleTableAdapter
    tbAdapterManager.CompetitionTableAdapter = competitionTableAdapter

    tbAdapterManager.UpdateAll(dataSet)
  Catch ex As Exception
    MessageBox.Show(ex.Message, "Saving Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  End Try
End Sub
4

2 に答える 2

0

テーブルに関連レコードが含まれているため、レコードを削除または変更できません。(エラー 3200)

関連テーブルの参照整合性規則に違反する操作を実行しようとしました。たとえば、"多" テーブルに関連レコードがある場合に、"1" テーブルのレコードを 1 対多リレーションシップで削除または変更しようとすると、このエラーが発生します。

レコードを削除または変更する場合は、まず「多」テーブルから関連するレコードを削除します。

ここから。

于 2012-11-02T00:08:26.787 に答える
0

メソッドがうまく機能していることを発見しました。問題は、テーブル間の関係を構成し、それらをカスケードに設定する必要があるデータベースにありました。

つまり、関係で「Cascade Update Related Fields」と「Cascade Delete Related Fields」を有効にします。

于 2012-11-07T12:11:39.717 に答える