これは私の最初の投稿なので、ルールを破ったり、後でいくつかのことを明確にする必要がある場合はご容赦ください. 私の問題は、Visual Basic 2008 を使用していて、データビューにバインドされた複数のテキスト ボックスを持つ Windows フォームがあることです。データは問題なく編集でき、データは SQL 2005 Express データベースにコミットされます。また、プログラムを終了しない限り持続するレコードを追加することもできます。編集すると、新しいレコードが失われます。つまり、基本的に編集はコミットされていますが、追加はコミットされていません。これが私が使用しているコードです。お時間をいただきありがとうございます。
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Cursor = Cursors.WaitCursor
Try
cn = New SqlConnection(sConnString)
cn.Open()
' Open the Master table
da = New SqlDataAdapter("SELECT * FROM CAMaster;", cn)
ds = New DataSet
da.Fill(ds, "Master")
dv = New DataView(ds.Tables("Master"))
cm = CType(Me.BindingContext(dv), CurrencyManager)
dv.AllowNew = True
dv.AllowEdit = True
dv.AllowDelete = True
' Bind the form Textboxes to the Master table dataview and assign formatting
Dim ctl As Control
For Each ctl In Controls
If TypeOf ctl Is TextBox Then
If ctl.Tag <> "" Then
Select Case ctl.Tag
Case "Date"
ctl.DataBindings.Add("Text", dv, ctl.Tag, True, DataSourceUpdateMode.OnValidation, False, "MM/dd/yyyy")
Case Else
ctl.DataBindings.Add("Text", dv, ctl.Tag, True, DataSourceUpdateMode.OnValidation, False, "C2")
End Select
End If
End If
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Form Load Error")
End
End Try
Me.Cursor = Cursors.Default
End Sub
Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
Try
dv.RowFilter = ""
dv.AddNew()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, "Add Error")
End Try
End Sub
Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
Me.Cursor = Cursors.WaitCursor
Dim i As Integer
Try
Me.Validate()
cm.EndCurrentEdit()
cb = New SqlCommandBuilder(da)
da.Update(ds, "Master")
ds.Tables("Master").AcceptChanges()
Catch ex As Exception
MsgBox(ex.Message)
End Try
SetButtons(True)
If mbAddNewFlag Then
Me.cmbDate.SelectedItem = Me.txtDate.Text
End If
Me.Cursor = Cursors.Default
End Sub