VB6: Temporary Recordset


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.


Post a Comment

7 Comments

Wahyu JD said…
Artikelnya menarik mba.
Gmn caranya menghindari input ganda?
rani said…
bisa pakai find, untuk field yang mau dibuat unique misal nya kode

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
Wahyu JD said…
Error mba yg ada bookmark nya
NEwbie said…
Boleh tanya ?
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 ?
rani said…
@wahyu: error nya kayak gimana? rsTemp nya udah ada data nya blom?
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


rani said…
@newbie: wah maaf saya ga pernah pake foxpro jadi ga bisa bandinginya
Wahyu JD said…
Solved mba
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