0

そのため、VB には、データベースのデータを DataGridView に表示するフォームがあります。デザイン モードでは、DataGridView タスク メニューの [追加を有効にする]、[編集を有効にする]、および [削除を有効にする] チェック ボックスをオンにします。しかし、プログラムを実行して、データベース内の行 (人) を編集または削除しようとすると、「DELETE ステートメントが REFERENCE 制約と競合しています」という例外がスローされます。また、DataGridView がオンになっているフォームを閉じて、メイン フォームから再度フォームを開くと、変更が保存されませんでした。

DataGridView フォームを閉じてメイン フォームに戻ると、次のコードが表示されます。

Private Sub CloseForm(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Try
        Me.Validate()
        Me.MembersBindingSource.EndEdit()
        MembersTableAdapter.Update(GroupDataSet.Members)
        Me.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error")
    End Try
End Sub

編集や削除を適用する方法がわからないので、DataGridView を使用してフォームをリロードすると、それらの変更が反映されます。

フォームのコード全体は次のとおりです。

Imports System.ComponentModel

Public Class AllMembersForm

Private Sub AllMembersForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'GroupDataSet.Members' table. You can move, or remove it, as needed.
    Me.MembersTableAdapter.Fill(Me.GroupDataSet.Members)

End Sub

Private Sub CloseForm(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Try
        Me.Validate()
        Me.MembersBindingSource.EndEdit()
        MembersTableAdapter.Update(GroupDataSet.Members)
        Me.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error")
    End Try
End Sub

Private Sub CloseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseToolStripMenuItem.Click
    Me.Close()
End Sub

クラス終了

メイン フォームでは、コードは form.showdialog のようなコードです。

4

0 に答える 0