Input data via grid
Sudah lama enggak posting tentang Visual Basic 6 jadi kangen juga :D.
Kali ini kita akan membahas bagaimana mudahnya melakukan input data langsung di grid menggunakan komponen VSFlexGrid.
VSFlexGrid sudah menyediakan beberapa method dan event yang mempermudah kita untuk melakukan hal ini, kita lihat screenshotnya.
Berikut beberapa fitur yang akan kita bahas :
1. Validasi
Pada sample program di atas kita akan menambahkan beberapa validasi input seperti konversi ke huruf besar untuk kolom NAMA BARANG dan validasi input angka untuk kolom STOK dan HARGA JUAL. Kedua fitur ini membutuhkan fungsi berikut :
Private Function convertToUpper(ByVal keyAscii As Integer) As Integer convertToUpper = Asc(UCase$(Chr$(keyAscii))) End Function Private Function numericOnly(ByVal keyAscii As Integer) As Integer Dim strValid As String On Error GoTo errHandle strValid = "0123456789." If InStr(strValid, Chr(keyAscii)) = 0 And Not (keyAscii = vbKeyBack) Then numericOnly = 0 Else numericOnly = keyAscii End If Exit Function errHandle: numericOnly = 0 End Function
Selanjutnya fungsi diatas tinggal dipanggil di event KeyPressEdit dari komponen VSFlexGrid.
Private Sub Grid1_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, keyAscii As Integer) If keyAscii = vbKeyReturn Then Call nextFocus End If Select Case Col Case 0 ' kode barang Case 1 ' nama barang keyAscii = convertToUpper(keyAscii) Case 2, 3 ' stok dan harga keyAscii = numericOnly(keyAscii) End Select End Sub
2. Focus dan Lostfocus backcolor
Sesuai nama fiturnya cell grid akan berubah warna ketika cursor mouse aktif pada cell.
Private Sub Grid1_StartEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean) If Col = 3 Then ' harga jual Grid1.TextMatrix(Row, Col) = Replace(Grid1.TextMatrix(Row, Col), ",", "") End If Grid1.CellBackColor = &HC0FFFF ' warna kuning End Sub Private Sub Grid1_AfterEdit(ByVal Row As Long, ByVal Col As Long) If Col = 3 Then ' harga jual If IsNumeric(Grid1.TextMatrix(Row, Col)) Then Grid1.TextMatrix(Row, Col) = FormatNumber(Grid1.TextMatrix(Row, Col), 0) End If End If Grid1.CellBackColor = vbDefault End Sub
Terakhir agar mode edit cellnya aktif pada saat cursor mouse aktif tinggal panggil method EditCell di event Click dan EnterCell
Private Sub Grid1_Click() Grid1.EditCell End Sub Private Sub Grid1_EnterCell() Grid1.EditCell End Sub
Selamat MENCOBA 🙂
om kalau coding untuk total gimana om, misalkan dari kolom “harga jual”, ada label atau textbox dibawah vsflexgrd yang isinya total/jumlah dari kolom “harga jual”, mohon pencerahanya
Tambahkan fungsi berikut :
Kemudian tinggal panggil dievent AfterEdit
salam kenal, mo nanya neh gimana caranya klo kita mo konversi tanggal dari inputan pada datagrid — misalnya 01012012 ke format 01-01-2012 — trims
Datagrid ya? Udah lupa ey 😀
misi om, mau nanya lagi nih… kalo cara ngambil data dari tabel lain trus di kasih ke tabel yg baru gimana ya??
Coba sql ini om :
Field yg ada di tabel_a harus sama dengan jumlah field yg muncul pada pernyataan SELECT
gini om, contohnya kaya yg di smart library itu. antara tabel master buku sama tabel peminjaman, gitu lho om… yg di peminjaman kan cuma tercantum kode bukunya aja.. nha itu apakah sama? pake select kya yg di atas itu juga?? maaf banyak nanya om, tp mkasih atas bimbingannya…
Wah akhirnya om admin posting juga tentang ini, thaks om admin …. 🙂
om gimana ne mau validasi kolom ya, misalkan kolom kode barang ya gak bisa diedit tp untuk kolom yang laen ya bisa, ,,
Validasinya ditambahkan di event KeyPressEdit, select kolom 0 (kode barang) trus set nilai keyAscii = 0
OK om thaks ya … 🙂
om kalau inputnya tombol tertentu gimana om listingnya, misalkan hanya bisa di input huruf A dan B saja. mksi
Tinggal copy om fungsi numericOnly diatas misal diganti menjadi letterOnly trus variabel strValidnya diisi “AB”, selanjutnya tinggal panggil seperti memanggil fungsi numericOnly
Klo untuk menyimpan ke databasenya gmana tuh om??
Memmm g mana ya ? 😀
om kalau nginput KODE BARANG -nya menggunakan alat seperti disupermarket (barcode scanner) itu , codingnya gimana om, mohon pencerahnaya.
Klo skrg kan barcode readernya rata2x udah pake usb semua om, jadi tinggal colokin aja dan enggak perlu kode2x khusus utk baca hasil barcodenya.
Intinya barcode reader itu hanya sebagai pengganti input keyboard.
makasi om, tambah referensi takutnya saya lupa hehehe
http://www.foxpromania.com/2011/03/cara-membuat-aplikasi-dengan.html
Sama2x om
Mau nanya om, saya kan bikin aplikasi absensi barcode … pas nginput kode barcode yang pertama maunya ke isi di kolom masuk trus input ke dua ke isi di kolom keluar…. tu bikinnya gmn ya om…. pusing ni, padahal klo itu dah jadi siap demo skripsi ni om… mohon pencerahannya…
Maksudnya kolom apa nih om ? Kolom di flexgridnya atw kolom/field di database ?
om admin ada contohnya gak sourcode sederhana untuk operasi record ya (tambah,simpan,edit,hapus,cari) pake VSFlexGrid dan convert dari VSFlexGrid ke Excell tapi yang sederahan aja om, soal ya liat sourcode Aplikasi Smart libry school itu ribet bgt pake class, hehehe kurang paham ,,,,,
Yah yg namanya belajar itu memang butuh proses om 😀
Om kalo mau mengunci baris2 dibawahnya kalu baris diatas belum terisi bagaimana om?
Oke dg asumsi semua kolom di atasnya harus terisi, coba tambahkan fungsi berikut :
Dilanjutkan dengan merevisi event Grid1_KeyPressEdit
let me try, trims om
Top Markotop .codenya . .
makasih infonya kang. kalo mau gabungin colum gimana ya..? matur nuwon
Seperti ini maksudnya ? Klo iya coba kode berikut :
makasih contoh codenya.
bisa gak kita nambahin nomor baris di grid ini? caranya gimana om?
Silahkan dicoba dulu 😀
supaya editing text lebih mudah, saya coba untuk binding textbox ke kolom 1 kok gak bisa ya?
cara untuk mengikatkan textbox ke suatu kolom bgimana ya om?
Kayaxnya cukup seperti ini :
Untuk baris bisa didapatkan dari perintah VSFlexGrid1.Row
om cara ngambil data yang ada di Vs Gird ke Active Report2 gimana yak
tolong dbantu yak
Untuk membaca nilai yg ada di Vs Grid, gunakan perintah berikut :
Trus tinggal gabungkan dengan postingan sy yg disini.
ompimpa kalo di kolom tabel barang pengen kita tambahin button buat lookup bs gak ya ?? kaya model xtableedit gt. tengkyu 🙂
Coba testing seperti ini dulu :
Pada kode di atas, ComboBox akan tampil di kolom ke tiga.
Om mf nih sblmny klo oot y,, Gini om, mo minta pendapat.. Menurut om, komponen grid ap yg paling usable dpake d VB6 buat nampilin db? Jd kondisiny, grid ini hrs refresh tiap 2 menit om. Dan dgn kondisi itu ak pengenny posisi horizontal scrollbar si grid ini bisa update ke posisi sesuai pos terakhir si user menggeser HScrollbar.. U/ posisi VScrollbar ma lebar kolom grid ud bs ditanggulangi om, tggl yg HScrollbar ini om. Afwan bgt om, ak ud gugling 3 hr ttg ini tp blm ad pencerahan. Saat ini ak seringny pake True DBGrid bawaan AP*X om. Ad saran?
Sy biasanya tetap make VSFlexGrid om, untuk HScrollbar mungkin bisa om coba menggunakan fungsi api berikut :
Untuk cara penggunaannya gampang :
Om, maaf lahir batin ya,, Betewe ud ak cb code-ny, tp blm bs ik om.. Abs refresh, HScrollbar gridny slalu kmbl k awl, ga k posisi terakhir ak klik. Ak cb2 lg deh om.. Thx y om,,
Sama2x om
Pemanggilan kodenya harus urut om, panggil perintah refresh dulu baru fungsi SendMessagenya
Reblogged this on Just Code Shared.
Tanya suhu
Gmn cara otomatis serial.Reg vsflex8l.ocx nya?
bagaimana jika kita mengentri data pada jumlah stok beli … terus ketika uda input dan tekan enter maka posisi cursor pindah pada baris dibawahnya di kolom stok beli juga….
terima kasih atas ilmunya pak
terus ini lagi pak… kalau mau simpan data dari vsflexgrid ke database seperti format tabel diatas ada… kode barang, nama barang, stok dan harga jual diatas… bagaimana caranya pak….
terima kasih atas ilmunya pak…
Call nextFocus kode barisnya tidak ada pak…..
mau nanya donk..
klo mau hitung = harga * jumlah (barang) = total
abis total langsung ke pembayaran dan uang kembali,
dan harganya ada di dbgrid itu gmna ya codingnya?? tpi tanpa ada command hitung
Harus jelas dulu kondisi dimana proses input data barangnya selesai baru bisa fokus ke pembayaran dan uang kembali.
Halo, mas admin, mo tanya donk, bgmn caranya menampilkan waktu yg sdg berjalan di listview ato via grid? Misalnya kaya aplikasi billing kan ada waktu si client yg sedang jalan di listviewnya si server. Saya pake VB6. Mohon bantuannya, trims.
Dicoba dulu om sample program berikut, mana tau bisa ngasih pencerahan.
Gambar desain
Demo
Komponen yg dibutuhkan :
1. ListView
2. Command yang dijadikan array dengan cara mengatur properties index (0, 1, 2, dan 3)
3. Timer yang dijadikan array dengan mengset nilai properties indexnya menjadi 0
Wah berhasil, tengkyu banget mas, u are the best
Oke, senang bisa membantu 🙂
Mas bro numpang tanya, sy pake vb6 component VSFlexGrid sy cek kok gak ada ya, mohon pencerahannya.
Komponen VSFlexGrid itu memang bukan komponen standar vb 6 jadi harus di register secara manual.
Di contoh program di atas, sudah sy ikutsertakan komponen VSFlexGridnya.
Mas Admin, mau tanya lagi nih..
Misalnya ada 2 tabel, 1 tabel refdesk(iddesk, deskripsi) berisi 50 record, 2 tabel transaksi(iddesk,jumlah,bsu) berisi 5 record, yang ingin saya tanyakan adalah:
bagaimana caranya menampilkan SEMUA record pd tabel refdesk disebelah kiri dan dikanannya berisi data yang ada sesuai yg ada di tabel transaksi.
CONTOH
ID DESK | DESKRIPSI | JUMLAH | BESAR UANG |
001 PENSIL 40 50,000 –> data dari tabel transaksi
002 BUKU 0 0 –> tidak ada di tabel transaksi
003 PENA 10 100,000
004 PENGGARIS 0 0
005 XXX 0 0
… … … …
050 ZZZ 0 0
Saya sudah coba menggunakan INNER JOIN tetapi yang tampil hanya data yang ada di kedua tabel ada saja yang tampil.
Mohon bantuannya mas Admin, terima kasih.
Ya jelas om, soalnya klo pake INNER JOIN yang ditampilkan hanya data yang saling berpasangan di kedua tabel, trus solusinya ya pake LEFT/RIGHT JOIN, contoh :
Mas Admin,
Kenapa jika query saya tambahkan kondisi untuk tabel transaksi, hasil yang di tampilkan pada grid hanya 5 record saja padahal yang saya inginkan, seluruh isi tabel refdesk tetap muncul dan isi tabel transaksi mengisi baris yang sama sesuai iddesknyang bertalian,…mohon bantuannya, terima kasih mas Admin.
Loh kan udah saya jawaba om di atas, pake LEFT/RIGHT JOIN jangan pake INNER Join.
maaf, maksud sy pake perintah LEFT/RIGHT JOIN itu mas Admin 😀 maaf lupa menjelaskan.
sy sudah coba pake LEFT/RIGHT JOIN tanpa kriteria, SEMUA data yang ada di tabel refdesk dan data yang ada di tabel transaksi MUNCUL seperti yang di harapkan, TETAPI jika saya tambahkan kriteria …where transaksi.tgljual=’2013-02-20′ yang ditampilkan hanya transaksi pada tanggal itu saja (ada 5 record).
yang ingin saya tanyakan bagaimana supaya semua data yang ada pada tabel refdesk tetap muncul semua di sebelah kiri, sedangkan data yang ada di tabel transaksi mengisi di baris yang sama sesuai iddesknya…mudah2han dan yambung ya mas Admin….(Y)
Klo ditambahkan klausa WHERE hasilnya memang seperti itu, solusi yg bisa dicoba sih menggunakan subquery.
Mas mimin mau tanya donk, klo diataskan input datanya di grid, klo input datanya di listview gmn min?? trus cara add data dari listview ke database(mysql) gmn ya??
Coba kesini om
1. ListView in-line editing (VB.NET)
2. VB6 Listview Select and edit row with Text box sample
3. ListView edit (VB 6)
Mas.. mohon pencerahanya,, untuk VsFlexGrid pada kolom tertentu menggunakan ColComboList.. tp saya pengenya ambil data dari Database barang… gimana ya.. code-nya..? yang saya bisa seperti ini.. ( Grid1.ColComboList(1) = “Part1|Part2|Part3|Part4” ) Terimakasih
Coba kesini om.
oya mw tanya kalo mau menghitung jumlah isi pada colom/field datagrid tp berupa text bukan angka gmn caranya semisal mau merekap absen gtu
mau nanya ni mas , klo saya ingin menjumlahkan isi pada colom harga itu gmn ya dan hasilnya saya taruh ke textbox total
Mas admin mau nanya nih…
maaf saya baru belajar vb 6, untuk nampilin VSFlexGrid nya di components gimana caranya ?
maaf saya baru mau belajar
Assalamualaikum, Om Admin
Saya cari2 kode untuk buat program seperti kasir alfa, jadi input data barang di gridnya langsung…, tapi tanpa terikat ke tabel apapun,
Akhirnya ketemu Blognya Om Admin, bisa untuk referensi.
Mhn maaf sebelumnya Om Admin, kalo dari pembahasan di atas procedure/function nextFocus kok blm ada ya, apa bisa dishare di sini
Thx sebelumnya
Salam
Iya om, kode lengkapnya bisa dilihat langsung di sample programnya.
om, maaf klo oot. tapi masih sekitar grid. yang ingin sy tanya :
pada grid ada kolom sbb :
kode_barang, nama_barang, satuan, harga.
ketika ane masukin kode_barang pada kolom kode_barang, maka kolom yang lain harus terisi sesuai nama barang dan harganya yang ada pada database sesuai kode_barang-nya. jadi yang di entry hanya kode_barang saja. seperti klo kita di supermarket. mohon pencerahannya.
terimakasih seblumnya…
om mau tanya..
bisa ggak ya cara memasukan textboxt ke dalam listview di vb.net,
misalkan sya punya textbox1 mau di masukan ke listview pada kolom 4 baris 3 misalkan…
itu bisa /tidak ya om …???
mohon bantuannya…
Bisa om, udah banyak yg membahas masalah ini, om bisa coba link2x berikut :
1. http://www.codeproject.com/Articles/316204/ListView-in-line-editing
2. http://www.csharphelp.com/2006/10/c-editable-listview/
3. http://www.codeproject.com/Articles/23961/LeerGridView-an-Editable-ListView
4. http://www.codeproject.com/Articles/11623/Limit-text-entered-into-a-listview-edit-control
5. http://sourcegrid.codeplex.com/
6. http://objectlistview.sourceforge.net/cs/index.html
Link 5 dan 6 sudah jadi library, jadi om tinggal pake.
om mau tanya kalau mengisi kolom dengan data yg sma gimana ya? contoh jika ad tabel nama.nomor_id,tanggal jika nama dan nomor_id udah terisi sementara tanggal mash kosong dan akan di isi dengan datapicker gimana ya???? kalau edit satu persatu kan bisa dengan memanggil data ke textbox tp jika data yang dipanggil lebih dari satu dan kolom tanggal akan di isi secara bersama gimana om?
Pake perulangan kali ya ?
Pertanyaan om enggak jelas 😀
makasih om artikelnya mantab….
ada yang mau saya tanya nih… kalo mau input untuk jam masuk dan jam keluar seperti menggunakan maskedbox gimana ya…
mohon pencerahannya….