そのため、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 のようなコードです。