Proses penyimpanan data melibatkan dua table seperti pada potongan kode di bawah ini, silakan perhatikan komentar pada tiap baris kode yang menjelaskan maksud dari masing-masing baris kode yang ada.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' try saving data
Try
' akhiri proses editing
Me.BindingContext(Me.DsInventory.transactions).EndCurrentEdit()
Me.BindingContext(Me.DsInventory.transaction_details).EndCurrentEdit()
' cek apakah add new atau edit data
If (IsNewData) Then
Dim dsChanges As New dsInventory
' copy master record dari main dataset
' harus dilakukan krena main dataset sebelumnya sudah
' AcceptChanges padahal belum diupdate ke database
dsChanges.transactions.Rows.Add(Me.DsInventory.transactions(0).ItemArray)
' copy juga detail record dari main dataset
For i = 0 To Me.DsInventory.transaction_details.Rows.Count - 1
dsChanges.transaction_details.Rows.Add(Me.DsInventory.transaction_details(i).ItemArray)
Next
' simpan perubahan ke master table
Me.TransactionsTableAdapter.Update(dsChanges.transactions)
' retrieve generated identity field
Dim id As Long = 0
Dim sql As String = "select last_insert_id()"
Using cn As New MySqlConnection(My.Settings.inventoryConnectionString)
Using cm As New MySqlCommand(sql, cn)
cn.Open()
id = cm.ExecuteScalar
cn.Close()
End Using
End Using
' assign retrieved id to master table
dsChanges.transactions(0).id = id
dsChanges.transactions.AcceptChanges()
' simpan perubahan ke details table
Me.Transaction_detailsTableAdapter.Update(dsChanges.transaction_details)
Else
' simpan perubahan ke database
Me.TransactionsTableAdapter.Update(Me.DsInventory.transactions)
Me.Transaction_detailsTableAdapter.Update(Me.DsInventory.transaction_details)
End If
' informasikan data berhasil disimpan
MessageBox.Show("Data BERHASIL disimpan!",
Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information)
' tutup form
Me.Close()
Catch ex As Exception
MessageBox.Show("Error saving data to database " + vbCrLf + "Details: " + ex.Message,
Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
End Sub