MODUL PRAKTIKUM PEMROGRAMAN VISUAL I Disusun oleh : ATEP RUHIAT, M.KOM
MODUL PEMROGRAMAN VISUAL STUDI KASUS : APLIKASI PENJUALAN 1. Membuat Database (dbpenjualan) dan Tabel. (MySQL) 1) Aktifkan Xampp Control Panel, lalu klik tombol Start pada fitur Apache dan MySql seperti tampilan dibawah ini. 2) Lalu buka browser yang tersedia misalkan Mozila Firefox atau Google Crome. Lalu ketikkan pada alamatnya http://localhost/xampp/ 3) Lalu pada fitur Tools pilih phpmyadmin. 1
2. Maka akan muncul tampilan dibawah ini. 3. Membuat User DSN. 1) Install terlebih dahulu mysql-connector-odbc-5.1.13-win32 atau versi lainnya. 2) Buka Control Panel Administrative Tools ODBC Data Source. 2
3) Untuk membuat DSN pilih User DSN Add cari MySQL ODBC 5.1 Driver atau versi lainnya lalu Finish. Kemudian masukkan settingan seperti gambar dibawah ini. Data Source : untuk nama DSNnya. (bebas) Description : untuk memberikan keterangan bila diperlukan. TCP/IP Server : nama server pada computer (untuk server local digunakan localhost) User : nama pengguna akses (untuk pengguna server local digunakan root) Password : password pengguna akses (untuk password pengguna server local dikosongkan) Database : pilih database yang akan digunakan (untuk kasus ini nama databasenya yaitu dbpenjualan) 4) Klik tombol Test untuk mencek koneksi. 3
5) Klik tombol Ok. 4. Desain Form dan Kode Program 1) Form Barang a) Desain Nama Komponen Form1 Label1 Label2 Label3 Label4 Label5 1 2 3 4 5 Properties Nilai F_BARANG :: INPUT DATA BARANG :: KODE BARANG NAMA BARANG STOK BARANG HARGA BELI HARGA JUAL TXTKODE TXTNAMA TXTSTOK TXTHBELI TXTHJUAL 4
Command1 Command2 Command3 Command4 Adodc1 DataGrid1 ConnectionString RecordSource Visible Data Source HeadLines CMDSIMPAN SIMPAN CMDUBAH UBAH CMDHAPUS HAPUS CMDKELUAR KELUAR ADOBARANG ADOBARANG DSN=koneksi SELECT * FROM barang False ADOBARANG 2 b) Kode Program Private Sub Form_Load() Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2 TXTKODE. = "" TXTNAMA. = "" TXTSTOK. = "" TXTHBELI. = "" TXTHJUAL. = "" CMDSIMPAN.Enabled = True CMDUBAH.Enabled = False CMDHAPUS.Enabled = False CMDKELUAR. = "KELUAR" 5
Private Sub TXTKODE_Change() ADOBARANG.Recordset.Find "kode_barang='" & TXTKODE. _ & "'",, adsearchforward, 1 With ADOBARANG.Recordset If Not.EOF Then TXTNAMA. =!nama_barang TXTSTOK. =!stok_barang TXTHBELI. =!harga_beli TXTHJUAL. =!harga_jual CMDSIMPAN.Enabled = False CMDUBAH.Enabled = True CMDHAPUS.Enabled = True CMDKELUAR. = "BATAL" TXTNAMA. = "" TXTSTOK. = "" TXTHBELI. = "" TXTHJUAL. = "" CMDSIMPAN.Enabled = True CMDUBAH.Enabled = False CMDHAPUS.Enabled = False CMDKELUAR. = "KELUAR" Private Sub CMDUBAH_Click() If TXTKODE. = "" Or _ TXTNAMA. = "" Or _ TXTSTOK. = "" Or _ TXTHBELI. = "" Or _ TXTHJUAL. = "" Then MsgBox "Data masih ada yang kosong!", vbinformation + vbokonly, "Peringatan" With ADOBARANG.Recordset!kode_barang = TXTKODE.!nama_barang = TXTNAMA.!stok_barang = TXTSTOK.!harga_beli = TXTHBELI.!harga_jual = TXTHJUAL..Update Form_Load 6
Private Sub CMDHAPUS_Click() If TXTKODE. = "" Then MsgBox "Data belum dipilih!", vbinformation + vbokonly, "Peringatan" hapus = MsgBox("Anda yakin akan menghapus data ini?", vbquestion + vbyesno, "Konfirmasi") If hapus = vbyes Then With ADOBARANG.Recordset.Delete Form_Load Exit Sub Private Sub CMDKELUAR_Click() If CMDKELUAR. = "KELUAR" Then Unload Me Form_Load 2) Form Karyawan a) Desain Nama Komponen Form1 Label1 Label2 Label3 Label4 Label5 Label6 Label7 1 2 Properties Nilai F_KARYAWAN :: INPUT DATA KARYAWAN :: ID KARYAWAN NAMA KARYAWAN JABATAN PASSWORD KONFIRMASI PERTANYAAN JAWABAN TXTID TXTNAMA 7
Combo1 3 4 5 6 Command1 Command2 Command3 Command4 Adodc1 DataGrid1 List PasswordChar PasswordChar ConnectionString RecordSource Visible Data Source HeadLines CMBJABATAN PEMILIK KASIR TXTPASSWORD * TXTKONFIRMASI * TXTPERTANYAAN TXTJAWABAN CMDSIMPAN SIMPAN CMDUBAH UBAH CMDHAPUS HAPUS CMDKELUAR KELUAR ADOKARYAWAN ADOKARYAWAN DSN=koneksi SELECT * FROM karyawan False ADOKARYAWAN 2 b) Kode Program Private Sub Form_Load() 8
Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2 TXTID. = "" TXTNAMA. = "" CMBJABATAN. = "" TXTPASSWORD. = "" TXTKONFIRMASI. = "" TXTPERTANYAAN. = "" TXTJAWABAN. = "" DataGrid1.Columns(3).Visible = False DataGrid1.Columns(5).Visible = False CMDSIMPAN.Enabled = True CMDUBAH.Enabled = False CMDHAPUS.Enabled = False CMDKELUAR. = "KELUAR" Private Sub CMDSIMPAN_Click() If TXTID. = "" Or _ TXTNAMA. = "" Or _ CMBJABATAN. = "" Or _ TXTPASSWORD. = "" Or _ TXTKONFIRMASI. = "" Or _ TXTPERTANYAAN. = "" Or _ TXTJAWABAN. = "" Then MsgBox "Data masih ada yang kosong!", vbinformation + vbokonly, "Peringatan" If TXTKONFIRMASI. <> TXTPASSWORD. Then MsgBox "Konfirmasi password tidak sama!", vbinformation + vbokonly, "Peringatan" TXTKONFIRMASI. = "" TXTKONFIRMASI.SetFocus With ADOKARYAWAN.Recordset.AddNew!id_karyawan = TXTID.!nama_karyawan = TXTNAMA.!jabatan = CMBJABATAN.!Password = TXTPASSWORD.!pertanyaan = TXTPERTANYAAN.!jawaban = TXTJAWABAN..Update Form_Load 9
Private Sub TXTID_Change() ADOKARYAWAN.Recordset.Find "id_karyawan='" & TXTID. & "'",, adsearchforward, 1 With ADOKARYAWAN.Recordset If Not.EOF Then konfirmasi = InputBox("Masukkan Password Anda :", "Password") If konfirmasi =!Password Then TXTNAMA. =!nama_karyawan CMBJABATAN. =!jabatan TXTPASSWORD. =!Password TXTKONFIRMASI. =!Password TXTPERTANYAAN. =!pertanyaan TXTJAWABAN. =!jawaban CMDSIMPAN.Enabled = False CMDUBAH.Enabled = True CMDHAPUS.Enabled = True CMDKELUAR. = "BATAL" MsgBox "Mohon maaf konfirmasi password yang anda masukkan tidak tepat!", vbcritical + vbokonly, "Peringatan" Form_Load TXTNAMA. = "" CMBJABATAN. = "" TXTPASSWORD. = "" TXTKONFIRMASI. = "" TXTPERTANYAAN. = "" TXTJAWABAN. = "" CMDSIMPAN.Enabled = True CMDUBAH.Enabled = False CMDHAPUS.Enabled = False CMDKELUAR. = "KELUAR" Private Sub CMDUBAH_Click() If TXTID. = "" Or _ TXTNAMA. = "" Or _ CMBJABATAN. = "" Or _ TXTPASSWORD. = "" Or _ 10
TXTKONFIRMASI. = "" Or _ TXTPERTANYAAN. = "" Or _ TXTJAWABAN. = "" Then MsgBox "Data masih ada yang kosong!", vbinformation + vbokonly, "Peringatan" If TXTKONFIRMASI. <> TXTPASSWORD. Then MsgBox "Konfirmasi password tidak sama!", vbinformation + vbokonly, "Peringatan" TXTKONFIRMASI. = "" TXTKONFIRMASI.SetFocus With ADOKARYAWAN.Recordset!id_karyawan = TXTID.!nama_karyawan = TXTNAMA.!jabatan = CMBJABATAN.!Password = TXTPASSWORD.!pertanyaan = TXTPERTANYAAN.!jawaban = TXTJAWABAN..Update Form_Load Private Sub CMDHAPUS_Click() If TXTID. = "" Then MsgBox "Data belum dipilih!", vbinformation + vbokonly, "Peringatan" hapus = MsgBox("Anda yakin akan menghapus data ini?", vbquestion + vbyesno, "Konfirmasi") If hapus = vbyes Then With ADOKARYAWAN.Recordset.Delete Form_Load Exit Sub Private Sub CMDKELUAR_Click() If CMDKELUAR. = "KELUAR" Then Unload Me 11
Form_Load 3) Form Penjualan a) Desain Nama Komponen Form1 Label1 Label2 Label3 Label4 Label5 Label6 Label7 Label8 Label9 1 DTPicker1 2 3 4 5 6 7 8 9 Adodc1 Adodc2 Adodc3 Properties ConnectionString RecordSource Visible ConnectionString RecordSource Visible Nilai F_PENJUALAN :: TRANSAKSI PENJUALAN :: NOTA JUAL TANGGAL KARYAWAN BARANG JUMLAH JUAL TOTAL JUAL SUBTOTAL BAYAR KEMBALIAN TXTNOTA TXTTANGGAL TXTNAMAKARYAWAN TXTNAMABARANG TXTHARGAJUAL TXTJUMLAH TXTTOTAL TXTSUBTOTAL TXTBAYAR TXTKEMBALIAN ADOKARYAWAN ADOKARYAWAN DSN=koneksi SELECT * FROM karyawan False ADOBARANG ADOBARANG DSN=koneksi SELECT * FROM barang False ADOPENJUALAN 12
Adodc4 DataCombo1 DataCombo2 MSFlexGrid1 Command1 Command2 Command3 ConnectionString RecordSource Visible ConnectionString RecordSource Visible RowSource ListField RowSource ListField Cols ADOPENJUALAN DSN=koneksi SELECT * FROM penjualan False ADODETAIL ADODETAIL DSN=koneksi SELECT * FROM detail_penjualan False TXTID ADOKARYAWAN id_karyawan TXTKODE ADOBARANG kode_barang MSFGRID 5 CMDMASUKKAN MASUKKAN CMDSIMPAN SIMPAN CMDKELUAR KELUAR b) Kode Program Dim nota, NotaBaru As String Dim i, baris, total, stok As Integer Sub BuatNota() ADOPENJUALAN.RecordSource = "SELECT * FROM penjualan ORDER BY nota_jual" ADOPENJUALAN.Refresh 13
With ADOPENJUALAN.Recordset If.BOF Then NotaBaru = "NJ.00001" Exit Sub.MoveLast nota =!nota_jual nota = Val(Right(nota, 5)) nota = nota + 1 NotaBaru = "NJ." + Format(nota, "00000") Sub AturGrid() With MSFGRID.Col = 0.Row = 0. = "KODE BARANG".CellFontBold = True.ColWidth(0) = 1500.CellAlignment = flexaligncentercenter.col = 1.Row = 0. = "NAMA BARANG".CellFontBold = True.ColWidth(1) = 4000.CellAlignment = flexaligncentercenter.col = 2.Row = 0. = "HARGA JUAL".CellFontBold = True.ColWidth(2) = 1500.CellAlignment = flexaligncentercenter.col = 3.Row = 0. = "JUMLAH".CellFontBold = True.ColWidth(3) = 1000.CellAlignment = flexaligncentercenter 14
.Col = 4.Row = 0. = "TOTAL JUAL".CellFontBold = True.ColWidth(4) = 1500.CellAlignment = flexaligncentercenter Private Sub Form_Load() Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2 ADOPENJUALAN.Refresh ADODETAIL.Refresh TXTNOTA.Locked = True TXTTANGGAL.Value = CDate(Date) TXTID. = "" TXTNAMAKARYAWAN. = "" TXTKODE. = "" TXTNAMABARANG. = "" TXTHARGAJUAL. = "" TXTJUMLAH. = "" TXTTOTAL. = 0 TXTSUBTOTAL. = 0 TXTBAYAR. = 0 TXTKEMBALIAN. = 0 MSFGRID.Rows = 2 MSFGRID.Clear Call BuatNota Call AturGrid TXTNOTA. = NotaBaru baris = 1 Private Sub TXTID_Click(Area As Integer) ADOKARYAWAN.Recordset.Find "id_karyawan='" & TXTID. & "'",, adsearchforward, 1 With ADOKARYAWAN.Recordset If Not.EOF Then TXTNAMAKARYAWAN. =!nama_karyawan TXTNAMAKARYAWAN. = "" 15
Private Sub TXTKODE_Change() TXTJUMLAH.SetFocus Private Sub TXTKODE_Click(Area As Integer) ADOBARANG.Recordset.Find "kode_barang='" & TXTKODE. & "'",, adsearchforward, 1 With ADOBARANG.Recordset If Not.EOF Then TXTNAMABARANG. =!nama_barang TXTHARGAJUAL. =!harga_jual stok =!stok_barang TXTNAMABARANG. = "" TXTHARGAJUAL. = "" Private Sub TXTJUMLAH_Change() On Error Resume Next TXTTOTAL. = Val(TXTHARGAJUAL.) * Val(TXTJUMLAH.) Private Sub CMDMASUKKAN_Click() On Error Resume Next If TXTID. = "" Or _ TXTKODE. = "" Or TXTJUMLAH. = "" Then MsgBox "Data masih ada yang kosong",, "Informasi" If TXTJUMLAH. > stok Then MsgBox "Jumlah Jual melebihi stok",, "Informasi" TXTJUMLAH. = "" TXTJUMLAH.SetFocus With MSFGRID.Rows = baris + 1.Matrix(baris, 0) = TXTKODE..Matrix(baris, 1) = TXTNAMABARANG..Matrix(baris, 2) = TXTHARGAJUAL..Matrix(baris, 3) = TXTJUMLAH..Matrix(baris, 4) = TXTTOTAL. TXTSUBTOTAL. = Val(TXTSUBTOTAL.) + Val(TXTTOTAL.) 16
TXTKODE. = "" TXTNAMABARANG. = "" TXTHARGAJUAL. = "" TXTJUMLAH. = "" TXTTOTAL. = "" baris = baris + 1 Private Sub TXTBAYAR_Change() On Error Resume Next TXTKEMBALIAN. = Val(TXTBAYAR.) - Val(TXTSUBTOTAL.) Private Sub CMDSIMPAN_Click() If TXTID. = "" Then MsgBox "Data masih ada yang kosong",, "Informasi" If baris = 1 Then MsgBox "Data barang belum dimasukkan",, "Informasi" If Val(TXTBAYAR.) < Val(TXTSUBTOTAL.) Then MsgBox "Pembayaran masih kurang",, "Informasi" TXTBAYAR.SetFocus Konfirmasi = MsgBox("Apakah anda sudah yakin dengan data yang akan disimpan?", vbinformation + vbyesno, "Konfirmasi") If Konfirmasi = vbyes Then With ADOPENJUALAN.Recordset.AddNew!nota_jual = TXTNOTA.!tanggal_jual = TXTTANGGAL.Value!id_karyawan = TXTID..Update For i = 1 To baris - 1 With ADODETAIL.Recordset.AddNew!nota_jual = TXTNOTA.!kode_barang = MSFGRID.Matrix(i, 0)!harga_jual = MSFGRID.Matrix(i, 2)!jumlah_jual = MSFGRID.Matrix(i, 3)!total_jual = MSFGRID.Matrix(i, 4).Update With F_BARANG.ADOBARANG.Recordset 17
.Find "kode_barang='" & MSFGRID.Matrix(i, 0) & "'",, adsearchforward, 1!stok_barang =!stok_barang Val(MSFGRID.Matrix(i, 3)).Update Next i Form_Load Exit Sub Private Sub CMDKELUAR_Click() Unload Me 18
4) Form Menu a) Desain Nama Komponen Form1 Label1 Label2 Command1 Command2 Command3 Command4 Command5 Properties Align Font AutoSize Align Nilai F_MENU :: MENU APLIKASI PENJUALAN :: MENU UTAMA APLIKASI PENJUALAN 2 Center Font Style : Bold Size : 18 L_KARYAWAN True 1 Right NAMA KARYAWAN CMDKARYAWAN KELOLA KARYAWAN CMDBARANG KELOLA BARANG CMDPENJUALAN TRANSAKSI PENJUALAN CMDINFORMASI SUMBER INFORMASI CMDKELUAR KELUAR b) Kode Program Private Sub Form_Load() Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2 Private Sub CMDKARYAWAN_Click() 19
F_KARYAWAN.Show 1 Private Sub CMDBARANG_Click() F_BARANG.Show 1 Private Sub CMDPENJUALAN_Click() F_PENJUALAN.Show 1 Private Sub CMDINFORMASI_Click() F_SUMBER_INFORMASI.Show 1 Private Sub CMDKELUAR_Click() End 5) Form Login a) Desain Nama Komponen Form1 Label1 Label2 Label3 1 1 Command1 Command2 Adodc1 Properties PasswordChar ConnectionString RecordSource Visible Nilai F_LOGIN :: LOGIN :: ID KARYAWAN PASSWORD L_LUPA LUPA PASSWORD? TXTID TXTPASSWORD * CMDMASUK MASUK CMDKELUAR KELUAR ADOLOGIN ADOLOGIN DSN=koneksi SELECT * FROM karyawan False 20
b) Kode Program Private Sub Form_Load() Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2 ADOLOGIN.Refresh Private Sub CMDMASUK_Click() ADOLOGIN.RecordSource = "SELECT * FROM karyawan WHERE ID_KARYAWAN='" & TXTID. & "' AND PASSWORD='" & TXTPASSWORD. & "'" ADOLOGIN.Refresh With ADOLOGIN.Recordset If Not.EOF Then If TXTID. =!id_karyawan And TXTPASSWORD. =!password Then F_MENU.L_KARYAWAN. =!NAMA_KARYAWAN Unload Me F_MENU.Show MsgBox "Mohon maaf data yang anda masukkan tidak tepat", vbcritical + vbokonly, "Peringatan" TXTID. = "" TXTPASSWORD. = "" TXTID.SetFocus Private Sub L_LUPA_Click() Dim password, pertanyaan, jawaban As String id_karyawan = InputBox("Masukkan ID KARYAWAN Anda", "Input ID KARYAWAN") If id_karyawan <> "" Then ADOLOGIN.RecordSource = "SELECT * FROM karyawan WHERE ID_KARYAWAN='" & id_karyawan & "'" 21
ADOLOGIN.Refresh With ADOLOGIN.Recordset If Not.EOF Then password =!password pertanyaan =!pertanyaan jawaban =!jawaban MsgBox "ID KARYAWAN tidak ditemukan", vbcritical + vbokonly, "Peringatan" Exit Sub jwb = InputBox(pertanyaan, "Pertanyaan") If jwb <> "" Then If jwb = jawaban Then KS = MsgBox(password, vbokonly, "Password Anda") KS = MsgBox("Maaf, jawaban yang Anda masukkan tidak tepat", vbokonly + vbexclamation, "Peringatan") Exit Sub Private Sub CMDKELUAR_Click() Unload Me 5. Membuat Report Daftar report/informasi yang akan dibuat yaitu Daftar Karyawan, Daftar Barang, Laporan Penjualan, Laporan Penjualan Per Tanggal, dan Laporan Penjualan Per Peride. a. Daftar Barang 1) Buka Crystal Report. Pilih Using the Report Expert OK. 22
2) Pada langkah pertama yaitu Data, klik Database pilih ODBC koneksi dbpenjualan.barang lalu Add. 3) Lalu Next, langkah selanjutnya yaitu Fields. Pindahkan field yang akan ditampilkan pada report. 4) Lalu Next, pada tahapan Group pilih kode_barang. 5) Lalu Next, pada tahapan Total, pilih stok_barang. 23
6) Untuk langkah Top N, Chart, dan Select dilewat saja karena tidak akan menggunakan fasilitas itu. Pada tahapan Style pilih jenis report yang diinginkan lalu jangan lupa masukkan judul reportnya. 7) Lalu Finish, dan hasilnya seperti dibawah ini 24
8) Untuk hasil terbaik report tersebut dapat dimodifikasi dengan mengklik pilihan Design, misalkan jadi seperti dibawah ini. 9) Lalu simpan satu folder dengan project yang telah dibuat dan untuk penamaan report sesuaikan dengan reportnya namun tidak boleh ada spasi nya. b. Daftar Karyawan Caranya pertahatikan gambar berikut : 25
26
c. Laporan Penjualan Caranya perhatikan gambar berikut : 27
28
29
30
6. Membuat Form Sumber Informasi 1) Memanggil komponen CrytalReport a) Klilk kanan mouse pada toolbox, pilih Component. b) Checklis Crystal Report Control, lalu OK. 31
c) Akan muncul pada Toolbox 2) Desain Nama Komponen Form1 Option1 Option2 Option3 Option4 Option5 DTPicker1 DTPicker2 DTPicker3 Command1 WindowState WindowState WindowState WindowState WindowState Command2 CrystalReport1 CrystalReport2 CrystalReport3 CrystalReport4 CrystalReport5 Properties Nilai F_SUMBER_INFORMASI :: SUMBER INFORMASI :: Op1 DAFTAR KARYAWAN Op2 DAFTAR BARANG Op3 LAPORAN PENJUALAN Op4 LAPORAN PENJUALAN PER TANGGAL Op5 LAPORAN PENJUALAN PER PERIODE DTP1 DTP2 DTP3 CMDCETAK CETAK CMDKELUAR KELUAR CR1 2- crptmaximized CR2 2- crptmaximized CR3 2- crptmaximized CR4 2- crptmaximized CR5 2- crptmaximized 32
3) Kode Program Private Sub Form_Load() Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 2 DTP1.Value = CDate(Date) DTP2.Value = CDate(Date) DTP3.Value = CDate(Date) Private Sub CMDCETAK_Click() If Op1.Value = True Then With CR1.ReportFile = App.Path & "\DAFTAR_KARYAWAN.RPT".RetrieveDataFiles.Action = 1 If Op2.Value = True Then With CR2.ReportFile = App.Path & "\DAFTAR_BARANG.RPT".RetrieveDataFiles.Action = 1 If Op3.Value = True Then With CR3.ReportFile = App.Path & "\LAPORAN_PENJUALAN.RPT".RetrieveDataFiles.Action = 1 If Op4.Value = True Then With CR4.ReportFile = App.Path & "\LAPORAN_PENJUALAN.RPT".ReplaceSelectionFormula "{penjualan.tanggal_jual} = date(" _ 33
" _ & Year(DTP1.Value) & "," & Month(DTP1.Value) & ", & Day(DTP1.Value) & ") ".RetrieveDataFiles.Action = 1 With CR5.ReportFile = App.Path & "\LAPORAN_PENJUALAN.RPT".ReplaceSelectionFormula "{penjualan.tanggal_jual} >= date(" _ & Year(DTP2.Value) & "," & Month(DTP2.Value) & ", " _ & Day(DTP2.Value) & ") AND {penjualan.tanggal_jual} <= date(" _ & Year(DTP3.Value) & "," & Month(DTP3.Value) & ", " _ & Day(DTP3.Value) & ") ".RetrieveDataFiles.Action = 1 Private Sub CMDKELUAR_Click() Unload Me 34