Temporary recordset bisa digunakan sebagai tempat penyimpanan sementara sebelum data disimpan ke database. Dengan menggunakan recordset ini kita dapat mengolah, memfilter, dan menampilkan ke datagrid tanpa koneksi langsung dengan database.
Di awal kita perlu menambahkan reference ADO library.
Pilih salah satu versi, saya menggunakan versi 2.7. Centang kemudian klik OK.
Persiapkan UI sebagai berikut:
Code berikut untuk mengatur caption dan text UI yang ditempatkan pada event form_load:
'Setting UI Controls
Label1.Caption = "Kode"
Label2.Caption = "Nama"
Text1.Text = ""
Text2.Text = ""
Command1.Caption = "Add"
Pada even form_load juga dipanggil sub untuk setting awal recorset dan menampilkannya dalam grid, jangan lupa untuk mendeklarasikan recordset (rsTemp) di luar sub agar dapat dipanggil dari seluruh event/sub/function yang ada dalam form:
Dim rsTemp As ADODB.Recordset
Sub Data_Temp()
Set rsTemp = New ADODB.Recordset
rsTemp.Fields.Append "kode", adVarChar, 10, adFldIsNullable
rsTemp.Fields.Append "nama", adVarChar, 50, adFldIsNullable
rsTemp.Open
Set DataGrid1.DataSource = rsTemp
End Sub
Jadi code yang ada di event form_load adalah sebagai berikut:
Private Sub Form_Load()
'Setting UI Controls
Label1.Caption = "Kode"
Label2.Caption = "Nama"
Text1.Text = ""
Text2.Text = ""
Command1.Caption = "Add"
'panggil setting data temporary
Data_Temp
End Sub
Untuk menambahkan record/data pada temporary recordset menggunakan code sebagai berikut:
With rsTemp
.AddNew
!kode = Text1.Text
!nama = Text2.Text
.Update
End With
Proses menambahkan record ada di event Command1_Click, dimana setelah menambahkan record melalui input textbox maka kita perlu menambahkan code untuk membersihkan textbox-textbox tersebut.
Kita buat dalam sub tersendiri.
Sub Clear_Control()
Text1.Text = ""
Text2.Text = ""
End Sub
Jadi code yang ada di event command1_click yaitu:
Private Sub Command1_Click()
With rsTemp
.AddNew
!kode = Text1.Text
!nama = Text2.Text
.Update
End With
'mengapus kontrol input setelah penambahan data
Clear_Control
End Sub
Setelah selesai dengan UI dan code, kita coba run program yang baru saja kita buat.
Data yang ditambahkan akan ditampilkan di grid.
Kode selengkapnya:
Option Explicit
Dim rsTemp As ADODB.Recordset
Sub Data_Temp()
Set rsTemp = New ADODB.Recordset
rsTemp.Fields.Append "kode", adVarChar, 10, adFldIsNullable
rsTemp.Fields.Append "nama", adVarChar, 50, adFldIsNullable
rsTemp.Open
Set DataGrid1.DataSource = rsTemp
End Sub
Sub Clear_Control()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Form_Load()
'Setting UI Controls
Label1.Caption = "Kode"
Label2.Caption = "Nama"
Text1.Text = ""
Text2.Text = ""
Command1.Caption = "Add"
'panggil setting data temporary
Data_Temp
End Sub
Private Sub Command1_Click()
With rsTemp
.AddNew
!kode = Text1.Text
!nama = Text2.Text
.Update
End With
'mengapus kontrol input setelah penambahan data
Clear_Control
End Sub
Click here if you like this article.
7 Comments
Gmn caranya menghindari input ganda?
varBookMark = rsTemp.Bookmark
rsTemp.MoveFirst
rsTemp.Find "kode= 'XXX' "
If (rsTemp.BOF = False) OR (rsTemp.EOF = False) Then
MsgBox "Data Sudah Ada!"
rsTemp.Bookmark = varBookMark
Else
'kode untuk add simpan disini
End If
apa kah ini sama dengan data cursor ( kalau di program foxpro) ??
saya pernah menggunakan foxpro
contoh select sql data
select * from ABD where nm = 'ini' into cursor datatemp readwrite
kurang lebih..
apa di atas itu vb sama ?
klo kosong biasa nya emang ga ada bookmark nya jadi error.
handle nya pake IF clause
If rsTemp.RecordCount > 0 Then varBookMark = rsTemp.Bookmark
.....
If rsTemp.RecordCount > 0 Then rsTemp.Bookmark = varBookMark
klo code VB kmu pakai option explicit, jangan lupa deklarasikan varBookMark sebelumnya
Dim varBookMark
Makasih tutorial nya bagus banget.tutorial ini saya cari2,karena saya lihat di website2 lain ga bahas ini. Cenderung Menggunakan database untuk tampungan sementara transaksi dengan Datagrid