Minggu, 26 September 2010

Membuat Program Penjualan Visual Basic 8 : Membuat Form Laporan

Membuat Program Penjualan Visual Basic 8 : Membuat Form Laporan
Dengan adanya laporan kita dapat mengetahui seluruh data apa saja yang masuk ke dalam database program penjualan ini. Ada banyak cara untuk membuat sebuah laporan. Dan cara yang saya pakai saat ini adalah dengan menggunakan software tambahan yang bernama Crystal Report. Bagi anda yang tidak punya Crystal Report, anda dapat membaca tutorial yang lain yang judulnya Membuat Laporan Dengan Data Report. Dan bagi anda yang punya Crystal Report, anda dapat melihat cara membuat laporannya pada Tutorial Membuat Laporan Dengan Crystal Report. Pada Tutorial yang ini saya hanya membahas pembuatan form laporan beserta listing programnya saja.

8. Membuat FORM LAPORAN
- Buat form baru lagi lalu isikan dengan isi dan properties dibawah ini:
NAME
CAPTION/TEXT
KETERANGAN
Flaporan
Laporan
Form
Label1
Tanggal
Label
Label2
Tanggal Awal
Label
Label3
Tanggal Akhir
Label
Label4
Bulan
Label
Label5
Tahun
Label
Label7
Tahun
Label
Label8
Tekan Preview
Label
Cmdexit
&exit
Command Button
Cmdpreview
&preview
Command Button
Frame1
Harian
Frame
Frame2
Mingguan
Frame
Frame3
Bulanan
Frame
Frame4
Tahunan
Frame
Data1
-
Data
CR
-
Crystal Report
Combo1
-
Combo
Combo2
-
Combo
Combo3
-
Combo
Combo4
-
Combo
Combo5
-
Combo
Combo6
Keseluruhan
Combo
Combo7
-
Combo

Adapun Listing Program dari Form Login ini adalah:


Private Sub CMDEXIT_Click()
Unload Me
End Sub

Private Sub Combo6_Click()
If Combo6.Text = "HARIAN" Then
Frame1.Visible = True
Frame2.Visible = False
Frame3.Visible = False
Frame4.Visible = False
Label8.Visible = False
Combo1.Text = ""
Else
If Combo6.Text = "MINGGUAN" Then
Frame2.Visible = True
Frame1.Visible = False
Frame3.Visible = False
Frame4.Visible = False
Label8.Visible = False
Combo2.Text = ""
Else
If Combo6.Text = "BULANAN" Then
Frame3.Visible = True
Frame2.Visible = False
Frame1.Visible = False
Frame4.Visible = False
Label8.Visible = False
Combo3.Text = ""
Else
If Combo6.Text = "TAHUNAN" Then
Frame4.Visible = True
Frame2.Visible = False
Frame1.Visible = False
Frame3.Visible = False
Label8.Visible = False
Combo7.Text = ""
Else
If Combo6.Text = "KESELURUHAN" Then
Label8.Visible = True
Frame4.Visible = False
Frame2.Visible = False
Frame1.Visible = False
Frame3.Visible = False
End If
End If
End If
End If
End If
End Sub

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "/buku.mdb"
Data1.RecordSource = "select * from Table_transaksi"
Data1.RecordSource = "Select Distinct Tgl_faktur From table_transaksi order By 1"
Data1.Refresh
Do Until Data1.Recordset.EOF
    Combo1.AddItem Data1.Recordset!Tgl_faktur
    Combo2.AddItem Format(Data1.Recordset!Tgl_faktur, "YYYY ,MM, DD")
    Combo3.AddItem Format(Data1.Recordset!Tgl_faktur, "YYYY ,MM, DD")
    Data1.Recordset.MoveNext
Loop

For i = 1 To 12
    Combo4.AddItem i
Next i
For i = 1 To 20
    Combo5.AddItem 2000 + i
Next i
For i = 1 To 20
    Combo7.AddItem 2000 + i
Next i
End Sub

KETERANGAN 1:
-Combo1 diisi dengan semua field Tanggal faktur yang ada di database.
-Combo2 juga diisi dengan semua field Tanggal faktur yang ada di database tapi dengan memakai format Tahun, Bulan, Hari contoh: 2009/03/20
-Combo3 juga diisi dengan semua field Tanggal faktur yang ada di database dan dengan memakai format seperti pada combo2.
-Combo4 diisi dengan angka dari 1 sampai 12
-Combo5 diisi dengan angka 2001 sampai 2020
-Combo7 diisi dengan angka 2001 sampai 2020
Private Sub CMDPREVIEW_Click()
On Error Resume Next
If Frame1.Visible = True Then
    cr.SelectionFormula = "Totext({table_transaksi.Tgl_faktur})=’" & Combo1 & "’"
    cr.ReportFileName = App.Path & "\Transaksi.rpt"
    cr.WindowState = crptMaximized
    cr.RetrieveDataFiles
    cr.Action = 1
Else
If Frame2.Visible = True Then
    cr.SelectionFormula = "{table_transaksi.Tgl_faktur} in date (" & Combo2.Text & ") to date (" & Combo3.Text & ")"
    cr.ReportFileName = App.Path & "\Transaksi.rpt"
    cr.WindowState = crptMaximized
    cr.RetrieveDataFiles
    cr.Action = 1
Else
If Frame3.Visible = True Then
Data1.RecordSource = "select * from table_transaksi where month(Tgl_faktur)=’" & Val(Combo4) & "’ and year(Tgl_faktur)=’" & (Combo5) & "’"
    cr.SelectionFormula = "Month({table_transaksi.Tgl_faktur})=" & Val(Combo4.Text) & " and Year({table_transaksi.Tgl_faktur})=" & Val(Combo5.Text)
    cr.ReportFileName = App.Path & "\Transaksi.rpt"
    cr.WindowState = crptMaximized
    cr.RetrieveDataFiles
    cr.Action = 1
Else
If Frame4.Visible = True Then
    Data1.RecordSource = "select * from table_transaksi where year(Tgl_faktur)=’" & (Combo7) & "’"
    cr.SelectionFormula = "Year({table_transaksi.Tgl_faktur})=" & Val(Combo7.Text)
    cr.ReportFileName = App.Path & "\Transaksi.rpt"
    cr.WindowState = crptMaximized
    cr.RetrieveDataFiles
    cr.Action = 1
Else
    cr.ReportFileName = App.Path & "\Transaksi.rpt"
    cr.WindowState = crptMaximized
    cr.RetrieveDataFiles
    cr.Action = 1
End If
End If
End If
End If
End Sub

KETERANGAN 2 :
-Selection Formula disini berfungsi untuk menyeleksi suatu data tertentu saja.
-Report File Name adalah nama dari Report/laporan yang kita buat dengan Crystal Report.
-Window State berguna untuk pengaturan besarnya layar laporan. Jika Crpt maximezed berarti layar laporan diperbesar sampai maximal.
-Retrieve Data Files dipakai agar apabila data yang ada di program penjualan berubah, maka data yang ada di laporan juga ikut berubah.
-Action disini adalah perintahnya.

KETERANGAN 3 :
-Frame1 mengambil data dari Table Transaksi yang Tanggal Faktur nya sama dengan yang dipilih di Combo1. Tapi sebelumnya Type data Tanggal Faktur dirubah menjadi Text (aslinya adalah Date/Time).
-Frame2 mengambil data dari Table Transaksi yang Tanggal Faktur nya adalah antara Tanggal yang dipilih di Combo2 dan Combo3.
– Frame3 mengambil data dari Table Transaksi yang Bulan faktur nya sama dengan yang dipilih di Combo4 dan Tahun faktur nya sama dengan yang dipilih di Combo5.
-Frame4 mengambil data dari Table Transaksi yang Tahun Faktur nya sama dengan yang dipilih di Combo7.
-Jika Tidak ada frame yang muncul berarti tidak memakai rumus Selection Formula, sehingga data akan ditampilkan semuanya dari awal hingga akhir.

- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”Flaporan” dan menyimpannya dengan nama ”Laporan.frm”.
- Sekali lagi saya ingatkan agar anda membaca juga cara Membuat Laporan Dengan Data Report dan cara Membuat Laporan Dengan Crystal Report.
Akhirnya selesai sudahlah semua tutorial belajar membuat program penjualan buku dengan menggunakan microsoft visual basic ini. Mudah mudahan bisa menjadi ilmu yang bermanfaat di dunia dan akhirat. Mohon maaf kalau seandainya pengetahuan yang saya berikan hanya sedikit karena saya juga masih belajar. Hanya Allah lah yang maha luas ilmunya. Dan saya mengharapkan komentar anda semua untuk membuat saya dan blog ini menjadi semakin maju. Atas perhatiannya saya ucapkan banyak terima kasih.
Wassalamualaikum !!!



vb-laporan

Membuat Program Penjualan Visual Basic 6 : Membuat Menu Utama

Membuat Program Penjualan Visual Basic 6 : Membuat Menu Utama
Menu Utama digunakan sebagai pusat dari semua form yang telah kita buat. Melalui form inilah kita mengakses semua form yang ada. Dengan Form menu utama ini anda tinggal menekan nama form yang dicari, maka form yang kita pilih akan segera muncul. Pada form menu utama ini anda boleh menghiasnya sesuka anda. Buatlah seindah mungkin agar user menjadi tetap tertarik untuk memakain program ini.

6. Membuat FORM MENU UTAMA
- Buatlah sebuah form baru
– Tekanlah Icon MENU EDITOR yang ada pada bagian atas toolbar. Atau bisa juga klick kanan pada Form lalu pilih MENU EDITOR.
– Pada layar Menu Editor anda disuruh memasukan Caption dan Name form yang ingin kita tuju bila user menekannya (maksudnya sub menu).
– Untuk tutorial ini terdapat beberapa sub menu yang akan kita buat :
1. FILE di dalamnya terdapat 3 bagian yaitu: File buku, Pelanggan, dan User.
2. TRANSAKSI di dalamnya terdapat Input Transaksi dan Cari Transaksi.
3. LAPORAN (akan memanggil form laporan yang akan kita buat pada tutorial lain).
4. EXIT terbagi menjadi 2 yaitu: Log Off dan Close All.
- Tekan tombol Next untuk memasukan sub menu yang selanjutnya
– Tekan tombol Insert untuk menyisipkan sub menu diantara sub menu yang lain
– Tekan tombol Delete untuk menghapus sebuah sub menu
- Tekan tombol panah Kanan untuk memasukan sub menu ke dalam sub menu yang lain
– Tekan tombol panah Kiri untuk mengeluarkan sub menu dari sub menu yang lain
– Tekan tombol panah Atas untuk meletakan sub menu di atas sub menu yang lain
– Tekan tombol panah Bawah untuk meletakan sub menu di bawah sub menu yang lain
- Adapun yang harus anda masukan di dalam Menu Editor tersebut adalah:
CAPTION
NAME
POSISI
File
File
Sub Menu Utama
Buku
Filebuku
Di dalam sub menu File
Pelanggan
Filepelanggan
Di dalam sub menu File
User
Fileuser
Di dalam sub menu File
Transaksi
Transaksi
Sub Menu Utama
Input Transaksi
Penjualan
Di dalam sub menu Transaksi
Cari Transaksi
Browse
Di dalam sub menu Transaksi
Laporan
Laporan
Sub Menu Utama
Exit
Exit
Sub Menu Utama
Log Off
Logoff
Di dalam sub menu Exit
Close All
Closeall
Di dalam sub menu Exit
- Jika semua sudah dimasukan silahkan tekan tombol Oke.
- Adapun Listing Program dari Form Menu Utama ini adalah:

Private Sub BROWSE_Click()
FBrowse.Show
End Sub
Private Sub CLOSEALL_Click()
End
End Sub

Private Sub FILEBUKU_Click()
Buku.Show
End Sub

Private Sub FILEPELANGGAN_Click()
Pelanggan.Show
End Sub

Private Sub FILEUSER_Click()
If txttype.Text = "ADMINISTRATOR" Then
User.Show
Else
MsgBox "ANDA TIDAK DAPAT MENGAKSES, HANYA ADMINISTRATOR YANG BISA MENGAKSES !!!", vbOKOnly, "PERINGATAN"
End If
End Sub
Private Sub Laporan_Click()
fLaporan.Show
End Sub
Private Sub LOGOFF_Click()
Unload Me
Login.Show
End Sub
Private Sub PENJUALAN_Click()
fTransaksi.Show
End Sub

- Jangan lupa untuk mengganti NAME dari form ini di properties menjadi ”menuutama” dan menyimpannya dengan nama ”menu.frm”.
- Cukup sekian untuk belajar kali ini. Jika ada pertanyaan silahkan kirimkan di kolom komentar dan Insya Allah kalau saya mengerti akan saya jawab langsung. Thanx !



vb-menu

Membuat Program Penjualan Visual Basic 5 : Membuat Form Pencarian Transaksi

Form pencarian transaksi ini digunakan untuk mengetahui dan mencari semua data transaksi yang telah masuk ke database. Untuk pencarian pada form ini terbagi menjadi 3 pilihan yaitu pencarian berdasarkan nomor faktur, kode buku, atau kode pelanggan. Jika anda tidak memakai form ini juga tidak apa apa karena sebenarnya data transaksi juga bisa dilihat melalui laporan transaksi yang akan kita bahas pada tutorial yang lain. Baiklah sekarang kita mulai saja belajar ini.

5. Membuat FORM PENCARIAN TRANSAKSI
- Buat form baru lagi lalu isikan dengan isi dan properties dibawah ini:
NAME CAPTION/TEXT KETERANGAN TAMBAHAN
Combo1 - Combo box
Txtfind - Textbox
Cmdfind &find Command button
Cmdexit &exit Command button
Data1 - Data
Data2 - Data
Data3 - Data
Data4 - Data
Dbgrid1 - Dbgrid
Dbgrid2 - Dbgrid
Dbgrid3 - Dbgrid
Dbgrid4 - Dbgrid
Fbrowse Form Pencarian Transaksi Form
Cmdprint &print Command Button Jika punya Crystal Report
CR - Crystal Report Jika punya Crystal Report
CR2 &print Crystal Report Jika punya Crystal Report
CR3 - Crystal Report Jika punya Crystal Report
Adapun Listing Program dari Form Pencarian Transaksi ini adalah:
Private Sub Form_Load()
Data1.DatabaseName = App.Path & “/buku.mdb”
Data1.RecordSource = “select * from Table_transaksi”
Data1.Refresh
DBGrid1.Refresh
Data2.DatabaseName = App.Path & “/buku.mdb”
Data2.RecordSource = “select * from Table_detail”
Data2.Refresh
DBGrid2.Refresh
Data3.DatabaseName = App.Path & “/buku.mdb”
Data3.RecordSource = “select * from Table_transaksi”
Data3.Refresh
DBGrid3.Refresh
Data4.DatabaseName = App.Path & “/buku.mdb”
Data4.RecordSource = “select * from Table_detail”
Data4.Refresh
DBGrid4.Refresh
End Sub

Private Sub Combo1_Click()
TXTFIND.Text = “”
TXTFIND.SetFocus
If Combo1.Text = “NOMOR FAKTUR” Then
DBGrid1.Visible = True
Data1.Visible = True
DBGrid2.Visible = True
Data2.Visible = True
DBGrid3.Visible = False
DBGrid4.Visible = False
Data3.Visible = False
Data4.Visible = False
Else
If Combo1.Text = “KODE PELANGGAN” Then
DBGrid3.Visible = True
Data3.Visible = True
DBGrid4.Visible = False
Data4.Visible = False
DBGrid1.Visible = False
DBGrid2.Visible = False
Data1.Visible = False
Data2.Visible = False
Else
If Combo1.Text = “KODE BUKU” Then
DBGrid4.Visible = True
Data4.Visible = True
DBGrid3.Visible = False
Data3.Visible = False
DBGrid1.Visible = False
DBGrid2.Visible = False
Data1.Visible = False
Data2.Visible = False
End If
End If
End If
End Sub

Private Sub TXTFIND_Change()
If TXTFIND.Text = “” Then
Data1.RecordSource = “select*from Table_transaksi”
Data1.Refresh
DBGrid1.Refresh
Data2.RecordSource = “select*from Table_detail”
Data2.Refresh
DBGrid2.Refresh
Data3.RecordSource = “select*from Table_transaksi”
Data3.Refresh
DBGrid3.Refresh
Data4.RecordSource = “select*from Table_detail”
Data4.Refresh
DBGrid4.Refresh
End If
End Sub

Private Sub CMDFIND_Click()
If Combo1.Text = “” Or TXTFIND.Text = “” Then
MsgBox “masih ada DATA YANG HARUS DIISI”
Else
If Combo1.Text = “NOMOR FAKTUR” Then
Data1.RecordSource = “SELECT*FROM Table_transaksi WHERE No_faktur=’” & TXTFIND.Text & “‘”
DBGrid1.Refresh
Data1.Refresh
Data2.RecordSource = “SELECT*FROM Table_detail WHERE No_faktur=’” & TXTFIND.Text & “‘”
DBGrid2.Refresh
Data2.Refresh
If Data1.Recordset.EOF And Data2.Recordset.EOF Then
MsgBox “DATA TIDAK ADA !”
TXTFIND.SetFocus
TXTFIND.Text = “”
End If
Else
If Combo1.Text = “KODE PELANGGAN” Then
Data3.RecordSource = “SELECT*FROM Table_transaksi WHERE Kode_pelanggan=’” & TXTFIND.Text & “‘”
DBGrid3.Refresh
Data3.Refresh
If Data3.Recordset.EOF Then
MsgBox “DATA TIDAK ADA !”
TXTFIND.SetFocus
TXTFIND.Text = “”
End If
Else
If Combo1.Text = “KODE BUKU” Then
Data4.RecordSource = “SELECT*FROM Table_detail WHERE Kode_buku=’” & TXTFIND.Text & “‘”
DBGrid4.Refresh
Data4.Refresh
If Data4.Recordset.EOF Then
MsgBox “DATA TIDAK ADA !”
TXTFIND.SetFocus
TXTFIND.Text = “”
End If
End If
End If
End If
End If
End Sub

Private Sub CMDEXIT_Click()
Unload Me
End Sub

Private Sub CMDPRINT_Click()
‘If Combo1.Text = “” Or TXTFIND.Text = “” Then
‘MsgBox “MASIH ADA DATA YANG HARUS DIISI”
‘End If
‘If Combo1.Text = “NOMOR FAKTUR” Then
‘CR.ReportFileName = App.Path & “\TRANSAKSI2.rpt”
‘CR.SelectionFormula = “({Table_detail.No_faktur}=’” & TXTFIND.Text & “‘)”
‘CR.WindowState = crptMaximized
‘CR.RetrieveDataFiles
‘CR.Action = 1
‘Else
‘If Combo1.Text = “KODE PELANGGAN” Then
‘cr2.ReportFileName = App.Path & “\TRANSAKSI2.rpt”
‘cr2.SelectionFormula = “({Table_Transaksi.Kode_pelanggan}=’” & TXTFIND.Text & “‘)”
‘cr2.WindowState = crptMaximized
‘cr2.RetrieveDataFiles
‘cr2.Action = 1
‘Else
‘If Combo1.Text = “KODE BUKU” Then
‘cr2.ReportFileName = App.Path & “\TRANSAKSI2.rpt”
‘cr2.SelectionFormula = “({Table_detail.Kode_buku}=’” & TXTFIND.Text & “‘)”
‘cr2.WindowState = crptMaximized
‘cr2.RetrieveDataFiles
‘cr2.Action = 1
‘End If
‘End If
‘End If
End Sub

PERHATIAN: CMDPRINT hanya dipakai jika anda mempunyai software pembuat laporan yang bernama CRYSTAL REPORT. Jika tidak punya, silahkan hapus rumusnya. Tapi jika anda punya, gunakan listing program tersebut dan hilangkan tanda petik di depan rumusnya. Untuk keterangan lebih lanjut baca Tutorial Membuat Laporan dengan Crystal Report.
Pada listing program kali ini saya kira tidak ada yang perlu dijelaskan karena semuanya sudah saya jelaskan pada tutorial tutorial yang sebelumnya. Sebenarnya anda bisa saja membuat form ini lebih sederhana dari yang saya buat. Karena pada form ini saya memakai banyak Data Control dan Dbgrid sehingga kelihatan ruwet.
Adapun cara memakai Fomr Pencarian Transaksi ini adalah :
1. Pilihlah pada combo box yang ada apakah anda ingin mencari data transaksi berdasarkan Nomor faktur atau Kode buku atau kode pelanggan.
2. Jika kriteria pencarian sudah dipilih, selanjutkan masukan kode data yang dicari.
3. Tekan tombol Find untuk memunculkan data tersebut.
4. Data akan ditampilkan dan anda bisa melihat perbedaan dari kriteria pencarian yang telah anda pilih:
Jika memilih Kode buku maka muncul data transaksi berdasarkan buku.
Jika memilih Kode Pelanggan maka muncul data transaksi berdasarkan pelanggan.
Jika memilih Nomor Faktur maka yang muncul adalah data transaksi berdasarkan nomor faktur yang terdiri dari 2 bagian yaitu Data Transaksi itu sendiri dan Data Detail dari Transaksi tersebut.
5. Tekan tombol Exit untuk keluar dari form ini.
- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”Fbrowse” dan menyimpannya dengan nama ”browse.frm”.
Untuk tutorial berikutnya kita akan membuat Form Menu Utama jadi, jangan sampai ketinggalan untuk membacar tutorial saya yang berikutnya. Mudah mudahan bermanfaat bagi yang sudah jago atau bagi yang masih belajar seperti saya. Amin !

vb-browse

Membuat Program Penjualan Visual Basic 4 : Membuat Form Transaksi

Membuat Program Penjualan Visual Basic 4 : Membuat Form Transaksi
Selamat datang kembali di tutorial belajar VB. Pada kali ini kita akan belajar yang lebih sulit lagi yaitu membuat form transaksi yang merupakan inti dari program ini dibuat. Kalau yang namanya penjualan sudah pasti ada transaksi yang terjadi disitu. Pada tutorial yang ke 1 dulu kita sudah membuat sebanyak 7 Table dan yang akan kita bahas disini adalah semua table tersebut yang dijadikan satu di dalam form transaksi ini. Sudah siap? Bismillahirrohmanirrohim !

4. Membuat FORM TRANSAKSI
- Buat form baru lagi lalu isikan dengan isi dan properties dibawah ini:
NAME
CAPTION/TEXT
KETERANGAN
TAMBAHAN
Label1 No Faktur Label

Label2 Kode Pelanggan Label

Label3 Nama Pelanggan Label

Label4 Nomor Hp/Telpon Label

Label5 Alamat Label

Label6 ID User Label

Label7 Kode Buku Label

Label8 Nama Buku Label

Label9 Stok Buku Label

Label10 Harga Buku Label

Label11 Biaya Pengiriman Label

Label12 Jumlah beli Label

Label13 Total Harga Label

Label14 Total Bayar Label

Label15 Uang bayar Label

Label16 Uang Kembali Label

Label17 Masukan Kode Buku Label

Label18 Masukan Kode Pelanggan Label

txtnofak
-
Textbox

txtkdpel
-
Textbox

txtnmpel
-
Textbox

txttelpon
-
Textbox

txtalamat
-
Textbox

txtkasir
-
Textbox

txtkdbuku
-
Textbox

txtnmbuku
-
Textbox

txtstok
-
Textbox

txtharga
-
Textbox

txtkirim
-
Textbox

txtjumbel
-
Textbox

txttohar
-
Textbox

txttobay
-
Textbox

txtubar
-
Textbox

txtukem
-
Textbox

txtfindb
-
Textbox

txtfindp
-
Textbox

txtjam
-
Textbox

txttgl
-
Textbox

cmdfindp Find Pelanggan Command Button

cmdfindb Find Barang Command Button

Cmdadd &add Command Button

Cmdclear &clear Command Button

Cmdsave &save Command Button

Cmdexit &exit Command Button

Cmdlagi lagi Command Button

Cmdselesai selesai Command Button

Optdalam Dalam kota Command Button

Optluar Luar kota Command Button

Opttidak Tidak dikirim Command Button

Timer1
-
Timer Interval : 10
Dbgrid1
-
Dbgrid Data source: data6
Dbgrid2
-
Dbgrid Data source: data2
Dbgrid3
-
Dbgrid Data source: data1
Data1
Data

Data2
Data

Data3
Data

Data4

Data

Data5

Data

Data6

Data

Data7

Data

FTransaksi Transaksi Form

Frame1 Biaya Pengiriman Buku Frame

Frame2 Buku Frame Visible: False
Frame3 Pelanggan Frame Visible: False
Frame4
-
Frame

Frame5
-
Frame

CR
-
Crystal Report Jika Punya CR
Adapun Listing Program dari Form Transaksi Ini Adalah :
Private Sub Form_Activate()
Call nonaktif
Call kosong
TXTKASIR.Text = Menuutama.txtuser.Text
End Sub

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "/buku.mdb"
Data1.RecordSource = "select * from Table_buku order by Kode_buku"
Data2.DatabaseName = App.Path & "/buku.mdb"
Data2.RecordSource = "select * from Table_pelanggan"
Data3.DatabaseName = App.Path & "/buku.mdb"
Data3.RecordSource = "select * from Table_transaksi"
Data4.DatabaseName = App.Path & "/buku.mdb"
Data4.RecordSource = "select * from Table_detail"
Data5.DatabaseName = App.Path & "/buku.mdb"
Data5.RecordSource = "select * from Table_user"
Data6.DatabaseName = App.Path & "/buku.mdb"
Data6.RecordSource = "select * from Table_bantu"
Data7.DatabaseName = App.Path & "/buku.mdb"
Data7.RecordSource = "select * from Table_bayar"
End Sub

Private Sub CMDADD_Click()
Call Auto
Call aktif
CMDFINDP.Enabled = True
CMDADD.Enabled = False
CMDEXIT.Enabled = False
End Sub

Private Sub CMDCLEAR_Click()
Call kosong
Call hapus_grid
Call nonaktif
CMDADD.Enabled = True
CMDEXIT.Enabled = True
End Sub

Private Sub CMDEXIT_Click()
Unload Me
Menuutama.Show
End Sub

Sub aktif()
CMDCLEAR.Enabled = True
CMDSAVE.Enabled = False
End Sub

Sub nonaktif()
CMDFINDB.Enabled = False
CMDFINDP.Enabled = False
TXTKASIR.Enabled = False
TXTNOFAK.Enabled = False
TXTKDPEL.Enabled = False
TXTNMPEL.Enabled = False
TXTTELPON.Enabled = False
TXTALAMAT.Enabled = False
TXTKDBUKU.Enabled = False
TXTNMBUKU.Enabled = False
TXTSTOK.Enabled = False
TXTHARGA.Enabled = False
TXTJUMBEL.Enabled = False
TXTTOHAR.Enabled = False
TXTTOBAY.Enabled = False
TXTUBAR.Enabled = False
TXTUKEM.Enabled = False
TXTKIRIM.Enabled = False
OPTDALAM.Enabled = False
OPTLUAR.Enabled = False
OPTTIDAK.Enabled = False
CMDCLEAR.Enabled = False
CMDSAVE.Enabled = False
CMDLAGI.Enabled = False
CMDSELESAI.Enabled = False
End Sub

Sub kosong()
TXTNOFAK.Text = ""
TXTKDPEL.Text = ""
TXTNMPEL.Text = ""
TXTALAMAT.Text = ""
TXTTELPON.Text = ""
TXTKDBUKU.Text = ""
TXTNMBUKU.Text = ""
TXTSTOK.Text = ""
TXTHARGA.Text = ""
TXTJUMBEL.Text = ""
TXTTOHAR.Text = ""
TXTUBAR.Text = ""
TXTUKEM.Text = ""
TXTTOBAY.Text = ""
TXTKIRIM.Text = ""
OPTDALAM.Value = False
OPTLUAR.Value = False
OPTTIDAK.Value = False
End Sub

Private Sub CMDFINDB_Click()
Frame2.Visible = True
TXTFINDB.SetFocus
End Sub

Private Sub CMDFINDP_Click()
Frame3.Visible = True
TXTFINDP.SetFocus
End Sub
VISIBLE digunakan sebagai pilihan apakah suatu objek akan ditampilkan atau disembunyikan.
Jika VISIBLE = TRUE maka objek akan ditampilkan.
Jika VISIBLE = FALSE maka objek akan disembunyikan.
Private Sub TXTFINDB_Change()
Data1.RecordSource = "SELECT*FROM Table_buku WHERE Kode_buku LIKE’*" & TXTFINDB.Text & "*’"
DBGrid3.Refresh
Data1.Refresh
    If Data1.Recordset.EOF Then
    MsgBox "DATA TIDAK ADA !"
    End If
End Sub
Private Sub TXTFINDB_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
TXTKDBUKU.Text = Data1.Recordset!Kode_buku
TXTNMBUKU.Text = Data1.Recordset!Judul_buku
TXTSTOK.Text = Data1.Recordset!Stok_buku
TXTHARGA.Text = Data1.Recordset!Harga_buku
Frame2.Visible = False
TXTJUMBEL.Enabled = True
TXTJUMBEL.SetFocus
TXTFINDB.Text = ""
CMDFINDB.Enabled = False
End If
End Sub

Private Sub TXTFINDP_Change()
Data2.RecordSource = "SELECT*FROM Table_pelanggan WHERE Kode_pelanggan LIKE’*" & TXTFINDP.Text & "*’"
DBGrid2.Refresh
Data2.Refresh
    If Data2.Recordset.EOF Then
    MsgBox "DATA TIDAK ADA !"
    End If
End Sub

Private Sub TXTFINDP_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
TXTKDPEL.Text = Data2.Recordset!Kode_pelanggan
TXTNMPEL.Text = Data2.Recordset!Nama_Pelanggan
TXTTELPON.Text = Data2.Recordset!Telp_pelanggan
TXTALAMAT.Text = Data2.Recordset!Almt_pelanggan
Frame3.Visible = False
CMDFINDB.Enabled = True
CMDFINDP.Enabled = False
TXTFINDP.Text = ""
End If
End Sub

Private Sub CMDLAGI_Click()
CMDFINDB.Enabled = True
CMDSELESAI.Enabled = False
CMDLAGI.Enabled = False
TXTJUMBEL.Text = ""
End Sub

Private Sub CMDSELESAI_Click()
OPTDALAM.Enabled = True
OPTLUAR.Enabled = True
OPTTIDAK.Enabled = True
    If Data6.Recordset.RecordCount = 0 Then
    Data6.Recordset.AddNew
    Data6.Recordset!Nofak = TXTNOFAK.Text
    Data6.Recordset!Kode_buku = TXTKDBUKU.Text
    Data6.Recordset!Jumlah_beli = TXTJUMBEL.Text
    Data6.Recordset!Total_harga = Val(TXTTOHAR.Text)
    Data6.Recordset.Update
    Data6.Refresh
    DBGrid1.Refresh
    TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTTOHAR.Text)
   End If
CMDLAGI.Enabled = False
CMDSELESAI.Enabled = False
TXTJUMBEL.Enabled = False
End Sub
Maksud dari If Data6.Recordset.RecordCount = 0 Then  dst… yang ada pada CmdSelesai ini adalah jika isi dari field data6 (Table_bantu) masih kosong maka terjadi penyimpanan data dan isi data txttobay adalah txttobay yang lama ditambah dengan txttohar.

Private Sub OPTDALAM_Click()
If OPTDALAM.Value = True Then
TXTKIRIM.Text = 5000
TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTKIRIM.Text)
TXTUBAR.Enabled = True
TXTUBAR.SetFocus
OPTLUAR.Enabled = False
OPTTIDAK.Enabled = False
TXTUBAR.SetFocus
End If
End Sub
Private Sub OPTLUAR_Click()
If OPTLUAR.Value = True Then
TXTKIRIM.Text = 10000
TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTKIRIM.Text)
TXTUBAR.Enabled = True
TXTUBAR.SetFocus
OPTDALAM.Enabled = False
OPTTIDAK.Enabled = False
TXTUBAR.SetFocus
End If
End Sub

Private Sub OPTTIDAK_Click()
If OPTTIDAK.Value = True Then
TXTKIRIM.Text = 0
TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTKIRIM.Text)
TXTUBAR.Enabled = True
TXTUBAR.SetFocus
OPTLUAR.Enabled = False
OPTDALAM.Enabled = False
TXTUBAR.SetFocus
End If
End Sub

Maksud dari VALUE pada Option Button adalah:
Jika VALUE = TRUE berarti Option Button tersebut dipilih.
Jika VALUE = FALSE berarti Option Button tersebut tidak dipilih.
Keterangan dari data biaya pengirimannya adalah:
Jika yang dipilih adalah OptDalam (dalam kota) maka biaya kirimnya adalah 5000
Jika yang dipilih adalah OptLuar(luar kota) maka biaya kirimnya adalah 10000
Jika yang dipilih adalah OptTidak (tidak dikirim) maka biaya kirimnya adalah 0
Total bayar berisi penjumlahan dari Total bayar yang lama ditambah  biaya kirim tersebut.

Private Sub TXTJUMBEL_Change()
TXTTOHAR.Text = Val(TXTJUMBEL.Text) * Val(TXTHARGA.Text)
End Sub
Private Sub TXTJUMBEL_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If Val(TXTJUMBEL.Text) > Val(TXTSTOK.Text) Then
MsgBox "stok terbatas"
Else
     Data6.Recordset.AddNew
    Data6.Recordset!No_faktur = TXTNOFAK.Text
    Data6.Recordset!Kode_buku = TXTKDBUKU.Text
Data6.Recordset!Jumlah_beli = Val(TXTJUMBEL.Text)
    Data6.Recordset!Total_harga = Val(TXTTOHAR.Text)
    Data6.Recordset.Update
    Data6.Refresh
    DBGrid1.Refresh
TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTTOHAR.Text)
TXTJUMBEL.Text = ""
TXTTOHAR.Text = ""
CMDFINDB.Enabled = False
CMDLAGI.Enabled = True
CMDSELESAI.Enabled = True
TXTKDBUKU.Text = ""
TXTNMBUKU.Text = ""
TXTSTOK.Text = ""
TXTHARGA.Text = ""
TXTJUMBEL.Enabled = False
End If
End If
End Sub
Perhatikan bahwa TxtJumbel (jumlah beli) disitu ada 2 bagian yaitu CHANGE dan KEYPRESS.
CHANGE: Pada txtjumbel ketika ditulis suatu data maka secara langsung akan terjadi perkalian antara txtjumbel dan txtharga dan hasilnya akan ditaruh di txttohar (total harga).
KEYPRESS: Pada txtjumbel ketika ditekan Enter maka akan terjadi perhitungan data stok, Jika angka yang dimasukan pada txtjumbel lebih besar daripada angka yang ada di txtstok maka akan muncul pesan bahwa Stok terbatas. Tapi jika lebih kecil maka akan terjadi proses penyimpanan data.

Private Sub TXTUBAR_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If Val(TXTUBAR.Text) < Val(TXTTOBAY.Text) Then
MsgBox "uang bayar kurang"
Else
TXTUKEM.Text = Val(TXTUBAR.Text) – Val(TXTTOBAY.Text)
CMDSAVE.Enabled = True
CMDSAVE.SetFocus
End If
End If
End Sub
Pada txtubar apabila ditekan Enter maka akan terjadi perhitungan data sebagai berikut:
Jika angka yang dimasukan pada txtubar (uang bayar)  lebih kecil dari angka yang ada di txttobay (total bayar) maka akan muncul pesan bahwa uang bayar kurang.
Tapi jika lebih besar maka terjadi pengurangan antara txtubar dikurangi dengan txttobay yang hasilnya diletakkan pada txtukem (uang kembali).

Private Sub Timer1_Timer()
TXTTGL.Text = Date
TXTJAM.Text = Time
End Sub
Listing ini digunakan untuk memunculkan tanggal dan waktu terjadinya transaksi (hari itu juga)
Txttgl berisi Tanggal terjadinya transaksi.
txtjam berisi Jam terjadinya transaksi.
Diperlukan Tool TIMER dan jangan lupa untuk merubah INTERVAL nya pada properties.

Sub hapus_grid()
    If Data6.Recordset.RecordCount <= 0 Then
        Exit Sub
    End If
        Data6.Recordset.MoveFirst
        Do While Not Data6.Recordset.EOF
        Data6.Recordset.Delete
        Data6.Recordset.MoveNext
    Loop
End Sub

Sub hapus_bayar()
If Data7.Recordset.RecordCount <= 0 Then
        Exit Sub
    End If
        Data7.Recordset.MoveFirst
        Do While Not Data7.Recordset.EOF
        Data7.Recordset.Delete
        Data7.Recordset.MoveNext
    Loop
End Sub

Private Sub CMDSAVE_Click()
‘TABLE DETAIL DAN TABLE BANTU
While Not Data6.Recordset.EOF
    Data4.Recordset.AddNew
                 Data4.Recordset!No_faktur = Data6.Recordset!No_faktur
                Data4.Recordset!Kode_buku = Data6.Recordset!Kode_buku
                Data4.Recordset!Jumlah_beli = Data6.Recordset!Jumlah_beli
                Data4.Recordset!Total_harga = Data6.Recordset!Total_harga
‘ PENGURANGAN STOK
                 Data1.Recordset.MoveFirst
                Data1.Recordset.FindFirst "Kode_buku= ‘" & Data6.Recordset!Kode_buku & "’"
                                 If Not Data1.Recordset.NoMatch Then
                                 Data1.Recordset.Edit
                                 Data1.Recordset!Stok_buku = Val(Data1.Recordset!Stok_buku) – Val(Data6.Recordset!Jumlah_beli)
                                Data1.Recordset.Update
                                Data1.Refresh
                                End If
     Data4.Recordset.Update
    Data6.Recordset.MoveNext
    N = N + 1
Wend  
    Data4.Refresh
    Data6.Refresh
    ‘TABLE TRANSAKSI
    Data3.Recordset.AddNew
    Data3.Recordset!No_faktur = TXTNOFAK.Text
    Data3.Recordset!Tgl_faktur = TXTTGL.Text
    Data3.Recordset!Kode_pelanggan = TXTKDPEL.Text
    Data3.Recordset!Total_bayar = TXTTOBAY.Text
    Data3.Recordset!Id_user = TXTKASIR.Text
    Data3.Recordset!Biaya_kirim = TXTKIRIM.Text
    Data3.Recordset.Update
    Data3.Refresh
    ‘TABLE BAYAR
    Data7.Recordset.AddNew
    Data7.Recordset!No_faktur = TXTNOFAK.Text
    Data7.Recordset!Uang_bayar = TXTUBAR.Text
    Data7.Recordset!Uang_kembali = TXTUKEM.Text
    Data7.Recordset.Update
    Data7.Refresh

‘MENCETAK FAKTUR
‘CR.ReportFileName = App.Path & "\Faktur.rpt"
‘CR.SelectionFormula = "({Table_detail.No_faktur}=’" & TXTNOFAK.Text & "’)"
‘CR.WindowState = crptMaximized
‘CR.RetrieveDataFiles
‘CR.Action = 1

CMDADD.Enabled = True
CMDSAVE.Enabled = False
Call kosong
Call nonaktif
Call hapus_grid
Call hapus_bayar
CMDEXIT.Enabled = True
End Sub
Dalam Tombol Save ini terjadi Penyimpanan data pada beberapa Table yaitu: Table Detail (diambil dari Table Bantu), Table Transaksi (diambil dari form), dan Table Bayar (diambil dari form).
Isi dari Table Detail didapat dari isi dari Table Bantu. Sedangkan isi Table Bantu itu sendiri didapat dari data yang dimasukan pada form transaksi ini.
Pada Penyimpanan data ke dalam Table Detail terjadi perintah perulangan yaitu WHILE WEND karena data Table Bantu yang akan disimpan ke dalam Table Detail berjumlah banyak sehingga berulang ulang memasukannya.
Contoh dari perulangan itu adalah apabila ada pelanggan yang membeli buku banyak yang berbeda beda pastinya semua itu hanya dicatat dalam 1 faktur atau 1 struk saja. Makanya disini terjadi pengulangan. Karena tidak mungkin setiap 1 pelanggan yang membeli buku yang banyak harus menggunakan banyak faktur juga.
Didalam penyimpanan Table Detail diatas juga terjadi PENGURANGAN STOK.
Maksud Listing Programnya adalah:
FINDFIRST dipakai untuk mencari kode_buku yang ada pada data1 (Table_buku) yang sama dengan kode_buku yang ada pada data6 (Table_bantu).
Dan jika data tersebut ditemukan maka stok_buku yang ada di data1 (Table_buku) akan dikurangi oleh Jumlah_beli yang ada di data6 (Table_bantu).
Dan setelah data tersebut di Save, maka terjadi perintah untuk memanggil Sub Hapus_Grid dan Sub Hapus_bayar.
Dengan adanya  Sub Hapus_Grid  tersebut, maka semua data yang ada di data6 (table_bantu) akan dikosongkan karena sudah disimpan pada data4 (table_detail).
Dan dengan adanya  Sub Hapus_Bayar  tersebut, maka semua data yang ada di data7 (table_bayar) juga akan dikosongkan karena sudah dipakai dan ditampilkan di dalam Faktur.

MENCETAK FAKTUR hanya dipakai jika anda mempunyai software pembuat laporan yang bernama CRYSTAL REPORT. Jika tidak punya, silahkan hapus rumusnya. Tapi jika anda punya, gunakan listing program tersebut dan hilangkan  tanda petik di depan rumusnya. Untuk keterangan lebih lanjut baca Tutorial Membuat Laporan dengan Crystal Report.

Private Sub Auto()
Data3.RecordSource = "select * from Table_Transaksi Where No_faktur In(Select Max(No_faktur)From Table_Transaksi)Order By No_faktur Desc"
Data3.Refresh
    Dim Urutan As String * 10
    Dim Hitung As Long
    With Data3.Recordset
        If .EOF Then
            Urutan = Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2) + "0001"
            No_faktur = Urutan
        Else
            If Left(!No_faktur, 6) <> Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2) Then
                Urutan = Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2) + "0001"
            Else
                Hitung = (!No_faktur) + 1
                Urutan = (Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2)) + Right("0000" & Hitung, 4)
            End If
        End If
        TXTNOFAK.Text = Urutan
    End With
End Sub
Sub AUTO ini digunakan untuk memunculkan nomor faktur secara otomatis.
Jumlah karakter dari nomor faktur ini adalah 10 digit angka yang terdiri dari: 2 angka pertama untuk Tahun faktur, 2 angka berikutnya untuk Bulan faktur, 2 angka berikutnya untuk Tanggal faktur dan 4 angka terakhir digunakan untuk Nomor faktur.
Contoh: jika ada Nomor Faktur yang bertuliskan 0806250099 maka
Tahun faktur tersebut adalah 08 (2008)
Bulan faktur tersebut adalah 06 (Juni)
Tanggal faktur tersebut adalah 25
Nomor faktur tersebut adalah 0099
PERHATIAN: untuk memakai nomor faktur otomatis ini, settingan waktu komputer anda harus berformat ”dd/mm/yy”  (2 digit angka hari/bulan/tahun). Contoh: 30/12/09.
Jika belum dirubah, maka rubahlah format tanggal tersebut dari CONTROL PANEL lalu pilihlah REGIONAL AND LANGUAGE OPTIONS lalu tekan tombol CUSTOMIZE dan pilih DATE lalu rubahlah SHORT DATE FORMAT menjadi dd/mm/yy jika sudah tekan Oke.

CARA MEMAKAI FORM TRANSAKSI INI:
1. Klik Add, untuk memasukan data transaksi yang baru
2. Klik tombol find yang ada disamping kode pelanggan lalu masukan kode pelanggan pada kotak pencarian data kemudian tekan enter.
3. Klik tombol find yang ada disamping kode buku lalu masukan kode buku pada kotak pencarian data kemudian tekan enter.
4. Masukan jumlah beli, lalu tekan enter.
5. Klik tombol Lagi untuk membeli buku yang lainnya lagi.
6. Klik tombol Selesai bila semua buku yang diinginkan sudah selesai dimasukkan.
7. Pilih cara pengiriman buku yang telah disediakan.
8. Masukan uang bayar pada tempat yang disediakan.
9. Klik Save, untuk menyimpan data atau Klik Clear, untuk mengosongkan dan membatalkan data yang akan disimpan.
10. Klik Exit untuk keluar.
- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”Ftransaksi” dan menyimpannya dengan nama ”Transaksi.frm”.

Demikianlah pembahasan tentang program transaksi yang memang sangat panjang dan lebar. Tapi jika anda mengerti maka terasa tidak terlalu sulit untuk membuatnya. Selamat menikmati tutorial selanjutnya !


vb-transaksi

Membuat Program Penjualan Visual Basic 3 : Membuat Form Pelanggan dan User

Membuat Program Penjualan Visual Basic 3 : Membuat Form Pelanggan dan User
Di tutorial ini kita masih belajar membuat form seperti yang kita buat pada tutorial yang ke 2. Dan form yang akan kita buat adalah form pelanggan dan form user. Inti dari rumusnya sebagian besar sama hanya ada beberapa saja yang mesti dirubah. Tapi jika ada beberapa rumus atau logika yang tidak anda mengerti di tutorial yang ke 3 ini silahkan baca kembali tutorial yang ke 2 karena listing programnya hampir sama dan saya tidak akan menulis keterangan listing program tersebut kembali pada tutorial yang kali ini karena sudah saya jelaskan di tutorial yang ke 2.

2. Membuat FORM PELANGGAN
- Buat form baru lagi lalu isikan dengan isi dan properties dibawah ini:
NAME
CAPTION/TEXT
KETERANGAN
TAMBAHAN
Label1
Kode pelanggan
Label


Label2
Nama pelanggan
Label


Label3
Nomor Hp/telpon
Label


Label4
Alamat
Label


Txtkdpel
-
Textbox


Txtnmpel
-
Textbox


Txttelp
-
Textbox


Txtalamat
-
Textbox


Cmdadd
&add
Command Button


Cmdclear
&clear
Command Button


Cmdsave
&save
Command Button


Cmdedit
&edit
Command Button


Cmddelete
&delete
Command Button


Cmdexit
&exit
Command Button


Cmdfind
&find
Command Button


Data1
-
Data


Dbgrid1
-
Dbgrid
Data source : data1
Pelanggan
Data Pelanggan
Form


Cmdprint
&print
Command Button
Jika punya Crystal Report
CR
-
Crystal Report
Jika punya Crystal Report
Adapun Listing Program dari Form Pelanggan ini: (keterangannya baca di Tutorial 2)
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "/BUKU.mdb"
Data1.RecordSource = "Table_Pelanggan"
End Sub
Private Sub Form_Activate()
Call nonaktif
TXTKDPEL.Enabled = False
CMDCLEAR.Enabled = False
CMDSAVE.Enabled = False
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
End Sub

Sub aktif()
TXTNMPEL.Enabled = True
TXTALAMAT.Enabled = True
TXTTELP.Enabled = True
End Sub

Sub nonaktif()
TXTNMPEL.Enabled = False
TXTALAMAT.Enabled = False
TXTTELP.Enabled = False
End Sub

Sub tampil()
On Error Resume Next
With Data1.Recordset
    TXTKDPEL.Text = !Kode_pelanggan
    TXTNMPEL.Text = !Nama_Pelanggan
    TXTALAMAT.Text = !Almt_pelanggan
    TXTTELP.Text = !Telp_pelanggan
End With
End Sub

Private Sub CMDFIND_Click()
Dim Kode_pelanggan As String
Kode_pelanggan = InputBox("masukan kode!", "Cari Data")
If Kode_pelanggan = Empty Then Exit Sub
If Kode_pelanggan <> "" Then
Data1.Recordset.Index = "Kode_pelanggan"
Data1.Recordset.Seek "=", Kode_pelanggan
If Not Data1.Recordset.NoMatch Then
Call tampil
Call aktif
TXTKDPEL.Enabled = False
TXTNMPEL.Enabled = False
TXTALAMAT.Enabled = False
TXTTELP.Enabled = False
CMDSAVE.Enabled = False
CMDADD.Enabled = False
CMDDELETE.Enabled = True
CMDEDIT.Enabled = True
CMDFIND.Enabled = False
Else
MsgBox "Data Tidak ada"
End If
End If
End Sub

KETERANGAN: Untuk Pencarian Data pada Tutorial 3 ini berbeda dengan Tutorial 2. Kalau pada Tutorial 2 saya menggunakan textbox maka kali ini saya menggunakan command button.
Tipe data Kode pelanggan disini dideklarasikan sebagagai STRING.
INPUT BOX adalah sebuah form kecil yang digunakan untuk memasukan data yang ingin dicari.
Maksud logika pencariannya adalah:
Jika Kode Pelanggan yang dimasukan ke dalam Input Box itu kosong (empty) maka akan keluar dari sub program ini.
Tapi Jika Kode Pelanggan yang dimasukan ke dalam Input Box itu tidak kosong (ada isinya) maka akan dilakukan proses pencarian data dari kode pelanggan yang sama dengan yang dimasukan ke Input box tadi.
Dan jika data yang dicari “BUKAN TIDAK ADA” (maksudnya ada) maka data akan ditampilkan.
Tapi jika data yang dicari SELAIN ITU (maksudnya tidak ada) maka akan muncul pesan.
JANGAN BINGUNG YA? HEHEHE ! BAHASANYA DIBOLAK BALIK .

Sub kosong()
TXTNMPEL.Text = ""
TXTALAMAT.Text = ""
TXTTELP.Text = ""
End Sub

Private Sub CMDADD_Click()
Call aktif
Call kosong
CMDADD.Enabled = False
CMDCLEAR.Enabled = True
CMDSAVE.Enabled = True
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
CMDFIND.Enabled = False
TXTNMPEL.SetFocus
End Sub

Private Sub CMDCLEAR_Click()
TXTKDPEL.Text = ""
Call kosong
Call nonaktif
CMDADD.Enabled = True
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDFIND.Enabled = True
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
End Sub

Private Sub CMDSAVE_Click()
With Data1.Recordset
.AddNew
!Kode_pelanggan = TXTKDPEL.Text
!Nama_Pelanggan = TXTNMPEL.Text
!Almt_pelanggan = TXTALAMAT.Text
!Telp_pelanggan = TXTTELP.Text
.Update
End With
Data1.Refresh
MsgBox "data telah disimpan"
Call nonaktif
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDADD.Enabled = True
CMDFIND.Enabled = True
TXTKDPEL.Text = ""
Call kosong
End Sub

Private Sub CMDEDIT_Click()
If CMDEDIT.Caption = "&EDIT" Then
Call aktif
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDADD.Enabled = False
CMDDELETE.Enabled = False
CMDEDIT.Caption = "&UPDATE"
Else
With Data1.Recordset
.Edit
!Kode_pelanggan = TXTKDPEL.Text
!Nama_Pelanggan = TXTNMPEL.Text
!Almt_pelanggan = TXTALAMAT.Text
!Telp_pelanggan = TXTTELP.Text
.Update
 End With
Call kosong
CMDEDIT.Caption = "&EDIT"
CMDADD.Enabled = True
CMDDELETE.Enabled = False
CMDFIND.Enabled = True
CMDEDIT.Enabled = False
Call nonaktif
TXTKDPEL.Text = ""
End If
End Sub

Private Sub CMDDELETE_Click()
CMDEDIT.Enabled = False
CMDCLEAR.Enabled = False
CMDDELETE.Enabled = False
a = MsgBox("YAKIN ANDA MAU MENGAHAPUS DATA INI ?", vbQuestion + vbYesNo, "KONFIRMASI")
    If a = vbYes Then
    Data1.Recordset.Delete
    Call kosong
    TXTKDPEL.Text = ""
    MsgBox "DATA TELAH BERHASIL DIHAPUS", vbOKOnly, "INFO"
    CMDADD.Enabled = True
    CMDFIND.Enabled = True
    Data1.Refresh
    DBGrid1.Refresh
Else
CMDDELETE.Enabled = False
CMDADD.Enabled = True
CMDFIND.Enabled = True
Call kosong
TXTKDPEL.Text = ""
    End If
End Sub

Private Sub CMDEXIT_Click()
Unload me
End Sub

Private Sub CMDPRINT_Click()
‘CR.ReportFileName = App.Path & "\PELANGGAN.rpt"
‘CR.WindowState = crptMaximized
‘CR.RetrieveDataFiles
‘CR.Action = 1
End Sub

PERHATIAN: CMDPRINT hanya dipakai jika anda mempunyai software pembuat laporan yang bernama CRYSTAL REPORT. Jika tidak punya, silahkan hapus rumusnya. Tapi jika anda punya, gunakan listing program tersebut dan hilangkan  tanda petik di depan rumusnya. Untuk keterangan lebih lanjut baca Tutorial Membuat Laporan dengan Crystal Report.

- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”Pelanggan” dan menyimpannya dengan nama ”Pelanggan.frm”.

3. Membuat FORM USER
- Buat form baru lagi lalu isikan dengan isi dan properties dibawah ini:
NAME
CAPTION/TEXT
KETERANGAN
TAMBAHAN
Label1
ID user
Label


Label2
Nama user
Label


Label3
Alamat
Label


Label4
Telpon
Label


Label5
Type
Label


Label6
Password
Label


TxtId
-
Textbox


Txtnama
-
Textbox


Txtalamat
-
Textbox


Txttelpon
-
Textbox


Cbotype
-
Combo box


Txtpass
-
Textbox


Txtfind
-
Textbox


Cmdadd
&add
Command Button


Cmdclear
&clear
Command Button


Cmdsave
&save
Command Button


Cmdedit
&edit
Command Button


Cmddelete
&delete
Command Button


Cmdexit
&exit
Command Button


Cmdfind
&find
Command Button


Data1
-
Data


Dbgrid1
-
Dbgrid
Data source : data1
User
Data User
Form


Cmdprint
&print
Command Button
Jika punya Crystal Report
CR
-
Crystal Report
Jika punya Crystal Report

Adapun Listing Program dari Form User ini: (keterangannya baca di Tutorial 2)
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "/BUKU.mdb"
Data1.RecordSource = "Table_user"
Cbotype.add item “ADMINISTRATOR”
Cbotype.add item “LIMITED”
End Sub

Private Sub Form_Activate()
CBOTYPE.Enabled = False
Call nonaktif
TXTID.Enabled = False
CMDCLEAR.Enabled = False
CMDSAVE.Enabled = False
CMDDELETE.Enabled = False
CMDEDIT.Enabled = False
End Sub

Sub aktif()
TXTNAMA.Enabled = True
TXTPASS.Enabled = True
TXTALAMAT.Enabled = True
TXTTELPON.Enabled = True
End Sub

Sub nonaktif()
TXTNAMA.Enabled = False
TXTPASS.Enabled = False
TXTALAMAT.Enabled = False
TXTTELPON.Enabled = False
End Sub
Sub kosong()
TXTNMPEL.Text = ""
TXTALAMAT.Text = ""
TXTTELP.Text = ""
End Sub

Sub tampil()
On Error Resume Next
With Data1.Recordset
    TXTKDPEL.Text = !Kode_pelanggan
    TXTNMPEL.Text = !Nama_Pelanggan
    TXTALAMAT.Text = !Almt_pelanggan
    TXTTELP.Text = !Telp_pelanggan
End With
End Sub

Private Sub TXTFIND_Change()
If TXTFIND.Text = "" Then
Data1.RecordSource = "SELECT*FROM Table_user"
Data1.Refresh
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
CMDFIND.Enabled = True
TXTFIND.Enabled = True
CMDADD.Enabled = True
End If
End Sub

Private Sub CMDFIND_Click()
If TXTFIND.Text = "" Then
MsgBox "masukan data dulu"
TXTFIND.SetFocus
Else
Data1.RecordSource = "SELECT*FROM Table_user WHERE Id_user=’" & TXTFIND.Text & "’"
Data1.Refresh
Call tampil
CMDFIND.Enabled = False
CMDADD.Enabled = False
CMDEDIT.Enabled = True
CMDDELETE.Enabled = True
If Data1.Recordset.EOF Then
MsgBox "DATA TIDAK ADA !!!", vbOKOnly, "INFO"
TXTFIND.Text = ""
TXTFIND.SetFocus
Call kosong
TXTID.Text = ""
End If
End If
End Sub
 
KETERANGAN: Lagi lagi di Form User ini saya memakai kode pencarian yang berbeda dari Form Pelanggan dan Form Buku. Jika di Form Buku saya hanya menggunakan textbox lalu di Form Pelanggan saya hanya menggunakan command button, maka pada Form User ini saya menggunakan kedua duanya baik textbox dan command button.
Maksud dari logika program pencariannya agak mirip dengan yang ada di Form Buku tetapi kalau memasukan data yang dicari pada Form User ini harus benar benar sama persis dengan yang ada di database. Arti listing programnya yaitu: Pilih semua data dari Table User yang ada di database yang ID User nya sama persis dengan yang ada di txtfind.
Private Sub CMDADD_Click()
Call aktif
Call kosong
CBOTYPE.Enabled = True
TXTNAMA.SetFocus
CMDADD.Enabled = False
CMDCLEAR.Enabled = True
CMDSAVE.Enabled = True
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
CMDFIND.Enabled = False
End Sub

Private Sub CMDCLEAR_Click()
TXTID.Text = ""
Call kosong
Call nonaktif
CMDADD.Enabled = True
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
CBOTYPE.Enabled = False
CMDFIND.Enabled = True
End Sub

Private Sub CMDSAVE_Click()
With Data1.Recordset
.AddNew
!Id_user = TXTID.Text
!Nama_user = TXTNAMA.Text
!Almt_user = TXTALAMAT.Text
!Telp_user = TXTTELPON.Text
!Pass_user = TXTPASS.Text
!Type_user = CBOTYPE.Text
.Update
End With
Data1.Refresh
MsgBox "data telah disimpan"
Call nonaktif
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDADD.Enabled = True
CBOTYPE.Enabled = False
CMDFIND.Enabled = True
Call kosong
TXTID.Text = ""
End Sub

Private Sub CMDEDIT_Click()
If CMDEDIT.Caption = "&EDIT" Then
Call aktif
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDDELETE.Enabled = False
CMDEDIT.Caption = "&UPDATE"
CBOTYPE.Enabled = True
Else
CBOTYPE.Enabled = False
With Data1.Recordset
.Edit
!Id_user = TXTID.Text
!Nama_user = TXTNAMA.Text
!Almt_user = TXTALAMAT.Text
!Telp_user = TXTTELPON.Text
!Pass_user = TXTPASS.Text
!Type_user = CBOTYPE.Text
.Update
End With
If TXTID.Text = Menuutama.txtuser.Text Then
Menuutama.txtuser.Text = Data1.Recordset!Id_user
Menuutama.Label2.Caption = Data1.Recordset!Nama_user
End If
Call kosong
TXTFIND.Text = ""
TXTID.Text = ""
CMDEDIT.Caption = "&EDIT"
CMDDELETE.Enabled = False
CMDADD.Enabled = True
CMDEDIT.Enabled = False
CMDFIND.Enabled = True
Call nonaktif
End If
End Sub

Private Sub CMDDELETE_Click()
a = MsgBox("YAKIN ANDA MAU MENGAHAPUS DATA INI ?", vbQuestion + vbYesNo, "KONFIRMASI")
    If a = vbYes Then
    Data1.Recordset.Delete
    Call kosong
    TXTID.Text = ""
    MsgBox "DATA TELAH BERHASIL DIHAPUS", vbOKOnly, "INFO"
    CMDADD.Enabled = True
    Data1.Refresh
    CMDDELETE.Enabled = False
    CMDEDIT.Enabled = False
    CMDFIND.Enabled = True
    TXTFIND.Text = ""
Else
CMDDELETE.Enabled = False
CMDADD.Enabled = True
Call kosong
TXTID.Text = ""
TXTFIND.Text = ""
    End If
End Sub
Private Sub CMDEXIT_Click()
Unload Me
End Sub

Private Sub CMCPRINT_Click()
CR.ReportFileName = App.Path & "\USER.rpt"
CR.WindowState = crptMaximized
CR.RetrieveDataFiles
CR.Action = 1
End Sub

PERHATIAN: CMDPRINT hanya dipakai jika anda mempunyai software pembuat laporan yang bernama CRYSTAL REPORT. Jika tidak punya, silahkan hapus rumusnya. Tapi jika anda punya, gunakan listing program tersebut dan hilangkan  tanda petik di depan rumusnya. Untuk keterangan lebih lanjut baca Tutorial Membuat Laporan dengan Crystal Report.

- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”User” dan menyimpannya dengan nama ”User.frm”.

Akhirnya selesai juga Form Pelanggan dan Form User ini. Bagaimana? Tambah mengerti atau tambah pusing? Nyantai aja bro, masih banyak yang harus kita bikin. Masih ada beberapa form lagi. Jadi, tetap ikuti tutorial dari saya. We’ll meet at 4rd Tutorial , okey? Cheeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrsssssss!!!

By: OPIX HOLMES
opix.holmes@yahoo.com
http://www.islamicunderground.com
vb-data-user

Membuat Program Penjualan Visual Basic 2 : Membuat Form Buku

Membuat Program Penjualan Visual Basic 2 : Membuat Form Buku
Pada tutorial ke 2 ini kita belajar bagaimana membuat form untuk program penjualan buku yang akan kita buat. Dan setelah itu Form form berikutnya akan menyusul.
B. MEMBUAT FORM
- Buatlah project baru dengan memilih FILE – NEW PROJECT – STANDARD EXE.
– Buatlah sebuah form baru (jika belum terbuka secara otomatis) dengan cara memilih ADD FORM – FORM.

1. Membuat FORM BUKU
– Isilah form kosong yang baru kita buat tadi dengan isi dan properties sebagai berikut:
NAME
CAPTION/TEXT
KETERANGAN
TAMBAHAN
Label1
Jenis buku
Label


Label2
Kode buku
Label


Label3
Judul buku
Label


Label4
Pengarang
Label


Label5
Penerbit
Label


Label6
Tahun terbit
Label


Label7
Harga
Label


Label8
Stok
Label


Label9
Masukan kode
Label


Cbojenis
-
Combo Box


Txtkd1
-
Textbox


Txtkode
-
Textbox


Txtjudul
-
Textbox


Txtkarang
-
Textbox


Txtterbit
-
Textbox


Txttahun
-
Textbox


Txtharga
-
Textbox


Txtstok
-
Textbox


Txtfind
-
Textbox


Cmdadd
&add
Command Button


Cmdclear
&clear
Command Button


Cmdsave
&save
Command Button


Cmdedit
&edit
Command Button


Cmddelete
&delete
Command Button


Cmdexit
&exit
Command Button


Data1
-
Data


Dbgrid1
-
Dbgrid
Data source : data1
Buku
Data Buku
Form


Cmdprint
&print
Command Button
Jika punya Crystal Report
CR
-
Crystal Report
Jika punya Crystal Report

PERHATIAN: untuk memunculkan tool DBGRID jika belum ada maka klick kanan di tempat yang kosong pada TOOLBOX pilih COMPONENTS. Pada bagian CONTROLS pilih dan beri tanda check list pada MICROSOFT DATA BOUND GRID CONTROL 5.0 (SP3).
- Simpan Form Buku yang telah kita buat dengan nama BUKU.frm
- Adapun LISTING PROGRAM dari Form buku ini adalah:

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "/buku.mdb"
Data1.RecordSource = "select * from Table_buku order by Kode_buku"
                Cbojenis.additem “AGAMA”
Cbojenis.additem “KOMPUTER”   
Cbojenis.additem “PENDIDIKAN”
Cbojenis.additem “UMUM”            
Cbojenis.additem “NOVEL”
Cbojenis.additem “KOMIK”
End Sub

APP.PATH digunakan untuk menyambungkan form ini ke database dan kelebihannya adalah apabila program yang anda buat dipindahkan ke folder atau tempat lain, anda tidak perlu susah payah untuk menyambungkan databasenya lagi.
DATABASENAME berisi database yang telah kita buat (buku.mdb).
RECORDSOURCE berisi table yang kita buat pada database tersebut (table_buku).
SELECT disini adalah salah satu perintah SQL untuk memilih suatu data.
Tanda * maksudnya adalah Semua data.
ORDER BY maksudnya data diurutkan berdasarkan field tertentu (kode_buku).
ADDITEM berguna agar ketika kita meng klick suatu combobox maka disitu akan muncul daftar tulisan yang kita tulis pada combobox tersebut (cbojenis) contohnya: Agama, komik, dll.

Sub aktif()
TXTKODE.Enabled = True
TXTJUDUL.Enabled = True
TXTKARANG.Enabled = True
TXTTERBIT.Enabled = True
TXTTAHUN.Enabled = True
TXTHARGA.Enabled = True
TXTSTOK.Enabled = True
End Sub
Sub nonaktif()
TXTJUDUL.Enabled = False
TXTKARANG.Enabled = False
TXTTERBIT.Enabled = False
TXTTAHUN.Enabled = False
TXTHARGA.Enabled = False
TXTSTOK.Enabled = False
End Sub

ENABLED digunakan untuk memilih apakah suatu objek bisa dipakai ketika form dijalankan atau tidak.
Jika ENABLED = TRUE maka object tersebut bisa dipakai.
Jika ENABLED = FALSE maka object tersebut tidak bisa dipakai.

Private Sub Form_Activate()
Call nonaktif
TXTKODE.Enabled = False
txtkd1.Enabled = False
CBOJENIS.Enabled = False
CMDCLEAR.Enabled = False
CMDSAVE.Enabled = False
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
End Sub
Isi dari ACTIVATE adalah objek objek yang dijalankan pertama kali ketika form dijalankan.
CALL digunakan untuk memanggil suatu sub tertentu dan akan mengeksekusi isi dari sub tersebut.
Untuk contoh diatas CALL NONAKTIF maksudnya dia akan memanggil Sub Nonaktif dan mengeksekusi isi dari sub tersebut (lihat isi dari sub nonaktif diatas). Jadi kita tidak perlu menulis ulang isi dari sub yang kita panggil sehingga hanya memanggil nama sub tersebut saja.
Tapi perintah CALL tidak dipakai juga tidak apa apa jadi langsung tulis aja disitu misalkan NONAKTIF.

Private Sub CBOJENIS_Click()
TXTKODE.Enabled = True
TXTKODE.Text = ""
TXTKODE.SetFocus
If CBOJENIS.Text = "AGAMA" Then
txtkd1.Text = "AG"
Else
If CBOJENIS.Text = "KOMPUTER" Then
txtkd1.Text = "KP"
Else
If CBOJENIS.Text = "PENDIDIKAN" Then
txtkd1.Text = "PD"
Else
If CBOJENIS.Text = "UMUM" Then
txtkd1.Text = "UM"
Else
If CBOJENIS.Text = "NOVEL" Then
txtkd1.Text = "NV"
Else
If CBOJENIS.Text = "KOMIK" Then
txtkd1.Text = "KM"
End If
End If
End If
End If
End If
End If
End Sub

SET FOCUS digunakan agar posisi kursor pindah ke suatu objek yang diinginkan.
Maksud dari logika IF diatas adalah:
Jika cbojenis yang ada di form = AGAMA, maka isi dari txtkd1 yang ada di form adalah AG.
Selain itu Jika cbojenis yang ada di form = KOMPUTER, maka isi dari txtkd1 yang ada di form adalah KP. Selain itu …….. dan seterusnya.
Logika IF harus diakhiri dengan END IF.

Private Sub TXTKODE_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Data1.Recordset.FindFirst "Kode_buku=’" & (txtkd1.Text & TXTKODE.Text) & "’" & ""
If Not Data1.Recordset.NoMatch Then
MsgBox "Kode sudah ada !", vbOKOnly, "peringatan"
Else
Call aktif
TXTJUDUL.SetFocus
End If
End If
If Not (IsNumeric(Chr(KeyAscii)) Or KeyAscii = vbKeyBack) Then
Beep
    KeyAscii = 0
End If
End Sub

IF KEY ASCII =13 Digunakan apabila anda menggunakan suatu objek dengan cara menekan enter.
FINDFIRST digunakan untuk melakukan pencarian. Untuk contoh diatas dilakukan proses pencarian kode buku yang ada pada database yang isinya sama dengan tulisan yang ada di txtkd1 dan txtkode.
NO MATCH maksudnya apabila data yang kita cari di database tidak ditemukan.
MSGBOX adalah perintah untuk memunculkan suatu pesan.
Maksud dari logika pencarian tadi adalah jika anda memasukan kode baru dan ternyata  kode tersebut telah ada di database maka akan muncul pesan tadi. Disinilah proses pencarian data terjadi.
Sedangkan

If Not (IsNumeric(Chr(KeyAscii)) Or KeyAscii = vbKeyBack) Then
    Beep
    KeyAscii = 0
End If

Digunakan agar pengguna program / user tidak dapat memasukan data ke dalam objek kecuali data itu berupa angka atau nomor.

Private Sub TXTFIND_Change()
Data1.RecordSource = "SELECT*FROM Table_buku WHERE Kode_buku LIKE’*" & TXTFIND.Text & "*’"
DBGrid1.Refresh
Data1.Refresh
CMDEDIT.Enabled = True
CMDDELETE.Enabled = True
    If Data1.Recordset.EOF Then
    MsgBox "DATA TIDAK ADA !"
    CMDEDIT.Enabled = False
    CMDDELETE.Enabled = False
    End If
If TXTFIND.Text = "" Then
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
End If
End Sub

Maksud dari logika pencarian diatas adalah melakukan pencarian data dari Table buku yang mana Field Kode Bukunya mirip seperti apa yang kita tulis pada txtfind (walaupun hanya 1 huruf saja).
EOF kepanjangan dari End Of File atau akhir dari file tapi yang dimaksud disini adalah apabila data yang kita cari tidak kita temukan.
REFRESH digunakan untuk merefresh (menyegarkan kembali) atau maksudnya adalah objek tersebut di Load atau dimuat ulang agar terlihat efek dari perubahannya.

Sub kosong()
TXTJUDUL.Text = ""
TXTKARANG.Text = ""
TXTTERBIT.Text = ""
TXTTAHUN.Text = ""
TXTHARGA.Text = ""
TXTSTOK.Text = ""
End Sub
Yang dimaksud dengan tanda "" adalah bahwa isi dari objek tersebut kosong.
Private Sub CMDADD_Click()
Call kosong
CBOJENIS.Enabled = True
CMDADD.Enabled = False
CMDCLEAR.Enabled = True
CMDSAVE.Enabled = True
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
TXTFIND.Enabled = False
End Sub

Private Sub CMDCLEAR_Click()
txtkd1.Text = ""
TXTKODE.Text = ""
CBOJENIS.Text = ""
TXTKODE.Enabled = False
CBOJENIS.Enabled = False
txtkd1.Enabled = False
Call kosong
Call nonaktif
TXTFIND.Text = ""
CMDADD.Enabled = True
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
TXTFIND.Enabled = True
End Sub

Private Sub CMDSAVE_Click()
With Data1.Recordset
.AddNew
!Kode_buku = (txtkd1.Text & TXTKODE.Text)
!Judul_buku = TXTJUDUL.Text
!Jenis_buku = CBOJENIS.Text
!Karang_buku = TXTKARANG.Text
!Terbit_buku = TXTTERBIT.Text
!Tahun_buku = TXTTAHUN.Text
!Harga_buku = Val(TXTHARGA.Text)
!Stok_buku = Val(TXTSTOK.Text)
.Update
End With
Data1.Refresh
DBGrid1.Refresh
MsgBox "data telah disimpan"
Call nonaktif
CMDADD.Enabled = True
CMDCLEAR.Enabled = False
CMDEDIT.Enabled = False
CMDDELETE.Enabled = False
TXTFIND.Enabled = True
CMDSAVE.Enabled = False
Call kosong
TXTKODE.Text = ""
txtkd1.Text = ""
CBOJENIS.Text = ""
TXTKODE.Enabled = False
CBOJENIS.Enabled = False
End Sub

Perintah WITH digunakan untuk menyingkat tulisan logika yang kita buat.
WITH harus diakhiri dengan END WITH
Contoh diatas adalah With data1.recordset
lalu setelahnya muncul tulisan .AddNew dan !Kode_buku = (txtkd1.Text & TXTKODE.Text) dst…
tulisan asli dari tulisan tersebut jika tanpa memakai With adalah:
data1.recordset.AddNew
data1.recordset!kode_buku = ……. dan seterusnya…
Rumus utama dari perintah SAVE sebenarnya adalah:
Data1.recordset.Addnew
Data1.recordset!NamaFileDiDatabase = NamaObjekYangAdaDiForm
Data1.recordset.update

Private Sub CMDEDIT_Click()
If CMDEDIT.Caption = "&EDIT" Then
Call tampil
Call aktif
CMDSAVE.Enabled = False
CMDCLEAR.Enabled = False
CMDADD.Enabled = False
CMDDELETE.Enabled = False
CMDEDIT.Caption = "&UPDATE"
TXTFIND.Enabled = False
Else
With Data1.Recordset
.Edit
!Kode_buku = (txtkd1.Text & TXTKODE.Text)
!Judul_buku = TXTJUDUL.Text
!Jenis_buku = CBOJENIS.Text
!Karang_buku = TXTKARANG.Text
!Terbit_buku = TXTTERBIT.Text
!Tahun_buku = TXTTAHUN.Text
!Harga_buku = Val(TXTHARGA.Text)
!Stok_buku = Val(TXTSTOK.Text)
.Update
End With
Call kosong
CMDEDIT.Caption = "&EDIT"
CMDADD.Enabled = True
CMDEDIT.Enabled = False
Call nonaktif
TXTFIND.Text = ""
TXTKODE.Text = ""
txtkd1.Text = ""
CBOJENIS.Text = ""
TXTFIND.Enabled = True
End If
End Sub

Maksud dari logika IF yang pertama (CAPTION) adalah Jika cmdedit bertuliskan “Edit” maka ……….dst
Jika tidak (bertuliskan ”update”) maka ………………….dst
Rumus utama dari perintah EDIT/UPDATE sebenarnya adalah:
Data1.recordset.Edit
Data1.recordset!NamaFileDiDatabase = NamaObjekYangAdaDiForm
Data1.recordset.update
Sub tampil()
On Error Resume Next
With Data1.Recordset
CBOJENIS.Text = !Jenis_buku
txtkd1.Text = Left(!Kode_buku, 2)
TXTKODE.Text = Right(!Kode_buku, 4)
TXTJUDUL.Text = !Judul_buku
TXTKARANG.Text = !Karang_buku
TXTTERBIT.Text = !Terbit_buku
TXTTAHUN.Text = !Tahun_buku
TXTHARGA.Text = !Harga_buku
TXTSTOK.Text = !Stok_buku
End With
End Sub

Dibagian tombol Edit/Update yang sebelumnya ada tulisan CALL TAMPIL fungsinya untuk memanggil Sub Tampil seperti yang diatas ini. Maksudnya ketika user menekan tombol Edit maka data yang akan di Edit/diRubah ditampilkan pada tiap textbox dan combobox yang ada di form.
ON ERROR RESUME NEXT berfungsi apabila terjadi kesalahan atau Error, maka kesalahan tersebut diabaikan dan langsung menuju ke perintah berikutnya.

Maksud dari logika diatas adalah:
CBOJENIS.Text = !Jenis_buku
Isi dari cbojenis yang ada di form adalah field jenis buku yang ada di database. dan seterusnya…
txtkd1.Text = Left(!Kode_buku, 2)
Isi dari txtkd1 yang ada di form adalah field kode buku yang ada di database diambil 2 huruf dari kiri.
contoh: jika kode adalah AG0010 maka txtkd1 isinya adalah “AG”
TXTKODE.Text = Right(!Kode_buku, 4)
Isi dari txtkode yang ada di form adalah field kode buku yang ada di database diambil 4 huruf dari kanan.
contoh: jika kode adalah AG0010 maka txtkd1 isinya adalah “0010”

Private Sub CMDDELETE_Click()
CMDADD.Enabled = False
CMDCLEAR.Enabled = False
CMDEDIT.Enabled = False
a = MsgBox("YAKIN ANDA MAU MENGAHAPUS DATA INI ?", vbQuestion + vbYesNo, "KONFIRMASI")
    If a = vbYes Then
    Data1.Recordset.Delete
    TXTKODE.Text = ""
    txtkd1.Text = ""
    CBOJENIS.Text = ""
    Call kosong
    MsgBox "DATA TELAH BERHASIL DIHAPUS", vbOKOnly, "INFO"
    TXTFIND.Text = ""
    TXTFIND.Enabled = True
    Data1.Refresh
    DBGrid1.Refresh
    CMDADD.Enabled = True
    Else
   CMDDELETE.Enabled = False
  CMDADD.Enabled = True
TXTFIND.Text = ""
TXTFIND.Enabled = True
    End If
End Sub

Maksud dari logika MSGBOX diatas adalah sebagai berikut:
Huruf  ”a” disini dinilai sama dengan Msgbox atau pesan (untuk penampungan nilai sementara).
VBQUESTION + VBYESNO digunakan untuk memunculkan tombol YES dan NO pada saat pesan tersebut muncul.
Jika pada Msgbox atau pesan dipilih tombol YES, maka program dibawahnya akan dijalankan.
VBOKONLY digunakan untuk memunculkan tombol OKE saja pada saat pesan tersebut muncul.
FORMAT MSGBOX :
Msgbox “IsiPesan”, JenisTombolPesan, ”JudulPesan”
Rumus utama dari perintah DELETE adalah Data1.Recordset.Delete

Private Sub CMDEXIT_Click()
Unload Me
End Sub

Private Sub CMDPRINT_Click()
‘CR.ReportFileName = App.Path & "\BUKU.rpt"
‘CR.WindowState = crptMaximized
‘CR.RetrieveDataFiles
‘CR.Action = 1
End Sub
PERHATIAN: CMDPRINT hanya dipakai jika anda mempunyai software pembuat laporan yang bernama CRYSTAL REPORT. Jika tidak punya, silahkan hapus rumusnya. Tapi jika anda punya, gunakan listing program tersebut dan hilangkan  tanda petik di depan rumusnya. Untuk keterangan lebih lanjut baca Tutorial Membuat Laporan dengan Crystal Report.

- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”Buku” dan menyimpannya dengan nama ”Buku.frm”.

Demikianlah Tutorial ke 2 dari membuat program penjualan ini. Jika anda masih tertarik silahkan baca tutorial saya yang selanjutnya.  Perjuangan masih sangat panjang. ALLAHU AKBAR !!!

By: OPIX HOLMES
opix.holmes@yahoo.com
http://www.islamicunderground.com
VB DATA BUKU