Baca Juga
Sebelum melangkah lebih jauh, terlebih dahulu siapkan sebuah database dengan minimal ada sebuah table yang didalamnya terdapat field- field sebagai berikut : Kode, Nama, Harga, Kuantitas, Total
Atau dapat dibuat sesuai dengan kebutuhan Anda, intinya ada field- field yang akan kita kalikan /jumlahkan /kurangkan dan atau operasi- operasi bilangan lainnya.Kemudian setelah database sudah siap, langkah selanjutnya adalah koneksi database dengan program, agar lebih simple akan kita gunakan ADODC untuk koneksinya, untuk langkah- langkah koneksinya dapat Anda simak pada artikel sebelumnya disini.
Tambahkan sebuah datagrid, kemudian set properti "datasource = Adodc1". Biarkan datagrid sesuai defaultnya, pastikan properti AllowUpdate bernilai True.
Tambahkan 2 buah textbox, 2 buah label dan 1 buah command. Atur properti masing-masing sesuai kebutuhan Anda. Kemudian Tuliskan kode simpan dibawah ini dalam jendela coding Anda :
Private Sub Command1_Click()
With Adodc1.Recordset
.AddNew
.Fields(0) = Text1.Text
.Fields(1) = Text2.Text
.Fields(2) = 0
.Fields(3) = 0
.Fields(4) = 0
.Update
End With
MsgBox "data telah ditambahkan"
Adodc1.Refresh
setdatagrid
End Sub
With Adodc1.Recordset
.AddNew
.Fields(0) = Text1.Text
.Fields(1) = Text2.Text
.Fields(2) = 0
.Fields(3) = 0
.Fields(4) = 0
.Update
End With
MsgBox "data telah ditambahkan"
Adodc1.Refresh
setdatagrid
End Sub
Untuk menghidari perubahan nilai dari field-field yang tidak ingin nilainya bisa diubah secara manual maka perlu adanya penguncian pada field-field tersebut. Tambahkan sebuah code berikut ke dalam jendela coding Anda.
Sub setdatagrid()
With DataGrid1
.Columns(0).Locked = True
.Columns(1).Locked = True
.Columns(4).Locked = True
.Refresh
End With
End Sub
With DataGrid1
.Columns(0).Locked = True
.Columns(1).Locked = True
.Columns(4).Locked = True
.Refresh
End With
End Sub
Inti dari edit-ing data grid adalah pada code dibawah ini. yaitu pada event afterColEdit
Private Sub DataGrid1_AfterColEdit(ByVal ColIndex As Integer)
DataGrid1.Columns(4).Text = DataGrid1.Columns(2).Text * DataGrid1.Columns(3).Text
Adodc1.Recordset.Update
End Sub
DataGrid1.Columns(4).Text = DataGrid1.Columns(2).Text * DataGrid1.Columns(3).Text
Adodc1.Recordset.Update
End Sub
Untuk mengoperasikannya cukup dengan menekan tombol enter setelah melakukan perubahan suatu field dalam sebuah record.
Yang perlu diperhatikan adalah setiap record haruslah ada field bernilai unik atau berbeda dari record yang lain (bisa dengan cara menggunkan primary key). Hal tersebut untuk menghindarkan error karena program tidak dapat melakukan update data lebih dari satu record, biasanya akan diikuti pesan error berikut :
atau pesan "debug" seperti ini :
dan ini :
Pencegahan error seperti diatas seharusnya dilakukan sejak proses penyimpanan dari awal, yang biasanya disebut dengan validasi. Ganti kode penyimpanan sebelumnya dengan code dibawah ini :
Private Sub Command1_Click()
If Not Text1.Text = "" Or Text2.Text = "" Then
With Adodc1.Recordset
.MoveFirst
.Find "kode='" & Text1.Text & "'", , adSearchForward
If Not .EOF Then
MsgBox "Data sudah Ada"
Else
.AddNew
.Fields(0) = Text1.Text
.Fields(1) = Text2.Text
.Fields(2) = 0
.Fields(3) = 0
.Fields(4) = 0
.Update
MsgBox "data telah ditambahkan"
End If
End With
Adodc1.Refresh
setdatagrid
End If
End Sub
If Not Text1.Text = "" Or Text2.Text = "" Then
With Adodc1.Recordset
.MoveFirst
.Find "kode='" & Text1.Text & "'", , adSearchForward
If Not .EOF Then
MsgBox "Data sudah Ada"
Else
.AddNew
.Fields(0) = Text1.Text
.Fields(1) = Text2.Text
.Fields(2) = 0
.Fields(3) = 0
.Fields(4) = 0
.Update
MsgBox "data telah ditambahkan"
End If
End With
Adodc1.Refresh
setdatagrid
End If
End Sub
Demikian. Selamat mencoba. Semoga bermanfaat.
7 Tanggapan
salam kenal...mas cara pakek button di datagrid gmna yak!
wah kebetulan saya baru saja posting tentang data edit grid. silakan baca pada link ini :
http://www.vbjadul.com/2009/11/data-edit-grid-versi-1.html
dalam artikel tersebut terdapat code cara penggunaan button dalam datagrid.
lam kenal mas, mau tanya untuk struktur formula bagaimana jika kita sudah terlanjur menginput suatu data dan akan di edit kembali tanpa harus mengedit pada primary key(unik)nya mohon pencerahannya.
makasih mas atas kunjunganny. maaf, saya g paham maksud pertanyaan mas. mgkin sy akan posting yg berkaitan dgn masalah input, update/ edit, dan delete. thanks
@admin
Gua bantu jawab pertanyaan dari
gelzrockman,,,
Klo mau nge edit tanpa mengganti primary key, ckup saat kta menekan tombol edit. Maka textbox dari primarykey enabled nya ckup di setting k false aj, shingga data nya gak bsa dganti,,,
Nih cntoh nya :
private sub cmd_edit_click( )
txt_primarykey.enabled = false
Baru = false
Cmd_edit.enabled = false
Cmd_ok.enabled = true
End sub
private sub cmd_databaru_click( )
txt_primarykey.enabled = true
Baru = true
Cmd_databaru.enabled = false
Cmd_ok.enabled = true
End sub
private sub cmd_ok_click( )
If baru = true then
Adodc.recordset.addnew
Adodc.recordset!primarykey = txt_primarykey
Adodc.update
End if
If baru = false then
Adodc.recordset.edit
Adodc.recordset!primarykey = txt_primarykey
Adodc.update
End if
End sub
ad baik nya jga, klo mke datagrid, properties pada datagrid allow update di buat jdi false, itu spaya datagrid nya cma brguna untuk di liat, bkan utk d update,,,
N klo mke textbox yg dhubung kan ke adodc, ad baik nya textbox nya pd prperties enabled nya d buat false pd form load, krena klo dibiarkan bgtu aj, apabila text nya diisi mka akan ter edit bgtu aj,,,,
Smoga bsa mmbantu,,,
akhi... ana pake coding diatas, tapi jika database belum ada isinya pasti debug
dan yg disorot adalah .movefirst
tapi klu database ada isinya walupun cuma 1.. coding diatas berjalan baik.
gimana solusi codingannya supaya jika database masih kosong ngga debug.
Private Sub Command1_Click()
If Not Text1.Text = "" Or Text2.Text = "" Then
With Adodc1.Recordset
.MoveFirst ------> tersorot warna kuning
.Find "kode='" & Text1.Text & "'", , adSearchForward
If Not .EOF Then
MsgBox "Data sudah Ada"
coba yang ini, tambahkan codeini sebelum yang disorot kuning ,
if .bof then exit sub