Program Penjualan 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”.
Selesai Juga Dech Tutorialnya....
Terimakasih Atas Kunjungannya....
Semoga Ilmu Yang Sedikit Ini Bermanfaat....
Jangan Lupa Like Post Ini Ya.... Terimakasih....



0 komentar:

Posting Komentar