pemrogramanvisual ii

44
Modul Praktikum Visual Basic Advance Bina Sarana Informatika Disusun Oleh: Mulia Rahmayu, S.Kom Sandra Dewi Saraswati, S.Kom

Upload: agassfa

Post on 13-Dec-2014

103 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: PemrogramanVisual II

Modul Praktikum Visual Basic Advance

Bina Sarana Informatika

Disusun Oleh:

Mulia Rahmayu, S.Kom Sandra Dewi Saraswati, S.Kom

Page 2: PemrogramanVisual II

Page 2 of 44

PERTEMUAN 1 Penjelasan tugas,penentuan kelompok, penilaian tuga s

Pertemuan ini menjelaskan ke siswa untuk mengerjakan sebuah projek program, secara berkelompok (msl. 5 orang/kelompok). Pada saat mereka melakukan presentasi projek program, penilaian diambil secara individu dan kelompok. Ketentuan nilai Matakuliah vb adv : 10% dari nilai absen + 20% dari nilai tugas + 30% d ari nilai uts + 40% uas Kriteria penilaian projek program Penlaian secara kelompok:

� Penilaian database = 10% (Pembuatan Database, Tabel, Index) � Penilaian form, coding dan report = 60% (Pembuatan form, Penggunaan

Objek dan Properties, Koneksi Database, Sintaks Program Dan Prosedur, Logika program)

� Penilaian testing, presentasi = 30% (Eksekusi Program, Kesesuaian Tampilan, Cara Presentasi)

Penilaian secara individu (0-100): Nilai individu diketahui pada saat tanya jawab , ketika kelompok mereka melakukan presentasi.

Nilai rata-rata per individu=(total nilai kelompok + nilai individu) / 2. Nilai projek program per individu = 20% x Nilai rat a-rata per individu Contoh: Database: 10% x 100=10 Form. Coding, report = 60% x 100 = 60 Testing, Presentasi = 30% x 100 = 30 TOTAL NILAI KELOMPOK = 100 NILAI INDIVIDU = 100 Nilai rata-rata per individu=(100+100)/2 =100 Nilai projek program per individu/siswa = 20% x 100 = 20 .

Page 3: PemrogramanVisual II

Page 3 of 44

Dengan detail penilaian kelompok seperti di bawah ini:

Minggu

Kemampuan yang diharapkan

Bahan Kajian Bentuk Pengajaran

Kriteria Penilaian

Bobot

1

Penjelasan tugas,penentuan

kelompok, penilaian tugas (90% )+ absen(10%)

Kesepakatan perkuliahan, diskusi, penjelasan tugas

Ceramah dan diskusi

2

Pembuatan

database di mysql via GUI

1. Konsep dasar database

2. Merancang database & table

3. Pengenalan perintah sql

Praktek dan diskusi

Pemahaman database,

perintah-perintah sql 10%

3-4

Merancang coding koneksi di modul, form menu utama

dan login

Membuat coding koneksi, form menu utama dan login

Praktek dan diskusi,

Pemahaman koneksi, mampu membuat form dan codingnya

10%

5-6

Membuat form barang dan form data user beserta coding

1. Membuat form 2. Koneksi form dengan

database 3. Modifikasi dengan

perintah sql

Praktek dan diskusi

Pemahaman koneksi, mampu membuat form dan codingnya

10%

7

Membuat struk pembayaran di crystal report

Mendisain laporan Praktek dan diskusi

Mampu menggunakan

tools-tools crystal report

5%

8-9

Membuat Form Transaksi Penjualan

Membuat form transaksi penjualan sampai menampilkan struk pembayaran

Praktek dan diskusi

Mampu membuat form dan

codingnya

15%

10 Membuat form ganti

password user Membuat form dan coding Praktek dan

diskusi Kreatifitas

menambah utility program

11 - 13

Membuat laporan penjualan harian,

mingguan, bulanan

Mendisain laporan harian, mingguan dan bulanan

Praktek dan diskusi

Kreatifitas mendesign

laporan

10%

14

Membuat Form Laporan

Membuat form laporan yang dapat menampilkan laporan harian, mingguan, bulanan

Praktek dan diskusi

Mampu membuat form dan

codingnya

10%

15

Review Review bisa juga dilakukan di setiap akhir per pertemuan

Page 4: PemrogramanVisual II

Page 4 of 44

16 - 28

Presentasi projek program berkelompok

1. Cara presentasi yang baik

2. Evaluasi pembuatan program

presentasi Penilaian Individu dan Kelompok

30%

Contoh projek program: Pembayaran, Simpan-pinjam, Pembelian, Penggajian, Peminjaman – pengembalian, Penerimaan karyawan, Absensi pegawai, Persedian barang, kunjungan pasien, perpustakaan.

Page 5: PemrogramanVisual II

Page 5 of 44

PERTEMUAN 2 DATABASE MYSQL

Membuat database di mysql Dalam pembuatan basis data pada MySQL software yang digunakan adalah : • apache2triad dll. • mysql-connector-odbc-5.1.10-win32 (untuk mengkoneksikan database dengan

software pemrograman).

Software pemrograman yang dipakai untuk pembelajara n ini adalah Visual Basic 6.0 Normalisasi bentuk ke 3 Nama databasenya: penjualan Buatlah Tabel-tabel dibawah ini Nama tabel: Barang

Field name Data type Field size Keterangan Kodebarang Varchar 7 Primary Key Namabarang Varchar 20 Satuan Varchar 10 Stok Int Hargasatuan Double Langsung Isi datanya: Nama tabel:DetailTransaksi

Field name Data type Field size Keterangan Notransaksi Varchar 10 Foreign Key Jumlahbeli Int Subtotal Double Kodebarang Varchar 7 Foreign Key

Kodebarang* Namabarang Satuan Stok hargasatuan

Jumlahjual Subtotal Notransaksi** Kodebarang**

Notransaksi * Tgljual totalbayar kodeuser**

Kodeuser* Namauser password level

Barang Detailtransaksi Transaksi

Login

Page 6: PemrogramanVisual II

Page 6 of 44

Nama tabel:Transaksi Field name Data type Field size Keterangan

Notransaksi Varchar 10 Primary Key Tgljual Date Totalbayar Double Kodeuser Varchar 3 Foreign Key Nama tabel:Login

Field name Data type Field size Keterangan Kodeuser Varchar 3 Primary Key Namauser Varchar 25 Password Varchar 8 Akseslevel Varchar 1 Isi datanya:

Page 7: PemrogramanVisual II

Page 7 of 44

PERTEMUAN 3,4 MERANCANG CODING KONEKSI, FORM MENU UTAMA DAN LOGIN

Aktifkan Microsoft Visual Basic 6.0 – Pilih STANDART EXE Tambahkan terlebih dahulu Reference ADO Library ke dalam project anda: Klik menu project – reference – arahkan scrollnya ke bawah cari Microsoft ActiveX Data Objects 2.5 Library(bisa juga 2.6/2.7/2.8) – ceklist – ok Ketika membuka code, jika terdapat tampilan option explicit artinya setiap variabel yang dibuat harus di deklarasikan. Contoh: dim k as string

Page 8: PemrogramanVisual II

Page 8 of 44

Untuk menghilangkannya pilih menu tools – options – hilangkan ceklist di require variable declaration kemudian exit, tidak usah disimpan. Lalu buka kembali vb yang baru. Lihat tampilan code maka option explicit sudah tidak ada. Selanjutnya membuat coding koneksi di dalam modul. Klik menu project – add module – open – Ketikan script berikut pada modul untuk membuka koneksi database. MODUL1 'MENDEFINISIKAN OBJEK Public KON As New ADODB.Connection Public rsbrg As ADODB.Recordset Public rsuser As ADODB.Recordset Public rsdetail As ADODB.Recordset Public rstrans As ADODB.Recordset Public rstemp As ADODB.Recordset Sub koneksi() 'MEMBUKA OBJEK Set KON = New ADODB.Connection Set rsbrg = New ADODB.Recordset Set rsuser = New ADODB.Recordset Set rsdetail = New ADODB.Recordset Set rstrans = New ADODB.Recordset Set rstemp = New ADODB.Recordset KON.ConnectionString = "driver={mysql odbc 5.1 driver};server=localhost;uid=root;pwd=password;db=penjualan;" KON.Open End Sub

Page 9: PemrogramanVisual II

Page 9 of 44

A. MEMBUAT FORM MENU UTAMA (name: menu) Pilih menu TOOLS – menu editor

untuk objek statusbar, Tambahkan komponen ini:

CAPTION - NAME FILE – MNFILE BARANG – MNBARANG DATA USER – MNUSER TRANSAKSI – MNTRANSAKSI LAPORAN – MNLAPORAN UTILITY – MNUTILITY GANTI PASSWORD – MNGP LOGOUT – MNLOGOUT

Output menu utama

StatusBar (name: STBAR) Klikkanan – properties Tab panel - Insert panel 2 x

Page 10: PemrogramanVisual II

Page 10 of 44

Listing menu utama: Private Sub MNBARANG_Click() menu.Hide barang.Show 'ke form barang End Sub Private Sub MNGP_Click() menu.Hide G_USER.Show 'ke form ganti password user End Sub Private Sub MNLAPORAN_Click() menu.Hide Form3.Show 'ke form laporan End Sub Private Sub mnlogout_Click() Me.Visible = False login.Show 'ke form login End Sub Private Sub MNTRANSAKSI_Click() menu.Hide Form1.Show 'ke form transaksi End Sub Private Sub MNUSER_Click() menu.Hide DATAUSER.Show 'ke form datauser End Sub

Output login

Page 11: PemrogramanVisual II

Page 11 of 44

B. FORM LOGIN (name : login) Listing form login: Dim a, b As Byte Private Sub CMDBERSIH_Click() txtuser = "" txtpassword = "" txtuser.Enabled = True txtpassword.Enabled = False txtuser.SetFocus End Sub Private Sub CMDTUTUP_Click() End End Sub Private Sub Form_Activate() txtuser.Enabled = True txtpassword.Enabled = False txtuser.SetFocus txtuser.MaxLength = 3 txtpassword.PasswordChar = "*" txtlevel.Visible = False End Sub Private Sub txtpassword_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then Call koneksi 'petik,kutip harus rapat rsuser.Open "Select * from login where Password='" & txtpassword & "'", KON If rsuser.EOF Then b = b + 1 If 1 - b = 0 Then MsgBox "Kesempatan ke " & b & " Salah" txtpassword = "" 'kutipnya rapat jgn ada spasi txtpassword.SetFocus ElseIf 2 - b = 0 Then MsgBox "Kesempatan ke " & b & " Salah" txtpassword = "" txtpassword.SetFocus ElseIf 3 - b = 0 Then MsgBox "Kesempatan ke " & b & " Salah" Unload Me End If

Page 12: PemrogramanVisual II

Page 12 of 44

Else txtlevel = rsuser!akseslevel txtlevel.Enabled = False Me.Visible = False menu.Show menu.WindowState = 2 'supaya tampil max menu.stbar.Panels(1) = login.txtuser If txtlevel = 1 Then menu.MNUSER.Enabled = True menu.stbar.Panels(2) = "ADMIN" ElseIf txtlevel = 2 Then menu.MNUSER.Enabled = False menu.stbar.Panels(2) = "USER" End If End If End If End Sub Private Sub txtuser_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then Call koneksi rsuser.Open "Select kodeuser from login where kodeuser ='" & txtuser & "'", KON If rsuser.EOF Then a = a + 1 If 1 - a = 0 Then 'chr(13) = kalimat setelahnya otomatis ke bawah MsgBox "Kesempatan ke " & a & " Salah" & Chr(13) & _ "Nama '" & txtuser & "' tidak dikenal" txtuser = "" 'KUTIP HARUS RAPAT txtuser.SetFocus ElseIf 2 - a = 0 Then MsgBox "Kesempatan ke " & a & " Salah" & Chr(13) & _ "Nama '" & txtuser & "' tidak dikenal" txtuser = "" txtuser.SetFocus ElseIf 3 - a = 0 Then MsgBox "Kesempatan ke " & a & " Salah" & Chr(13) & _ "Nama '" & txtuser & "' tidak dikenal" & Chr(13) & _ "Kesempatan habis, Ulangi dari awal" Unload Me End If Else

Page 13: PemrogramanVisual II

Page 13 of 44

txtuser.Enabled = False txtpassword.Enabled = True txtpassword.SetFocus End If End If End Sub

Page 14: PemrogramanVisual II

Page 14 of 44

PERTEMUAN 5,6 MEMBUAT FORM BARANG DAN DATA USER

A. Form Barang Outputnya setelah di tekan INPUT dan mengisi data baru:

Keterangan Name pada properties: Cmdinput : INPUT Cmdtutup : TUTUP Tkode : KD BARANG Tnama : NAMA BARANG Cmbsat : SATUAN Tstok : STOK Tharga : HARGA Grid : MSHFLEXGRID

Page 15: PemrogramanVisual II

Page 15 of 44

Logika jalannya program:

1. Pertama run semua textbox dan combo nonaktif, data barang tampil di grid. INPUT DAN TUTUP aktif.

2. Tekan INPUT semua textbox, combo aktif. INPUT berubah jadi SIMPAN, TUTUP berubah jadi BATAL. Kursor muncul di kd barang.

3. Ketikan kd barang. Jika sudah ada tampil nama,satuan,stok,harga. Kd barang nonaktif. SIMPAN berubah jadi UPDATE. Lakukan perubahan data barang untuk menyimpan tekan UPDATE, tekan BATAL untuk membatalkan perubahan data barang kembali ke kondisi no. 1

4. Ketikan kd barang. Jika tidak ada tampil pesan kode barang tidak ada. Kursor pindah ke nama barang. Isikan data barang baru, tekan SIMPAN untuk menyimpan, tekan BATAL untuk membatalkan dan kondisi kembali ke no.1

5. Tekan TUTUP keluar dari program kembali ke menu utama. LISTING: Sub isicsat() csat.AddItem "unit" csat.AddItem "pcs" End Sub Sub NONAKTIF() Dim kontrol As Control For Each kontrol In Me.Controls If TypeOf kontrol Is TextBox Then kontrol.Enabled = False Next csat.Enabled = False End Sub Sub aktif() Dim kontrol As Control For Each kontrol In Me.Controls If TypeOf kontrol Is TextBox Then kontrol.Enabled = True Next csat.Enabled = True End Sub Sub bersih() For Each kontrol In Me.Controls If TypeOf kontrol Is TextBox Then kontrol.Text = "" Next csat = "" End Sub

Page 16: PemrogramanVisual II

Page 16 of 44

Sub tampilgrid() 'buka tabel barang dulu Call koneksi rsbrg.Open "select * from barang", KON 'atur grid utk tabel brg Set grid.DataSource = rsbrg grid.ColWidth(0) = 0 grid.ColWidth(1) = 1000 grid.ColWidth(2) = 1500 grid.ColWidth(3) = 500 grid.ColWidth(4) = 500 grid.ColWidth(5) = 1000 End Sub Sub simpanbrg() simpan = "insert into barang values('" & tkode & "','" & tnama & "','" & csat & "','" & tstok & "','" & tharga & "')" ‘ngetiknya kesamping KON.Execute simpan End Sub Sub updatebrg() Update = "update barang set namabarang='" & tnama & "',satuan='" & csat & "',stok='" & tstok & "',hargasatuan='" & tharga & "' where kodebarang='" & tkode & "'" KON.Execute Update End Sub Private Sub bin_Click() If bin.Caption = "INPUT" Then bin.Caption = "SIMPAN" bt.Caption = "BATAL" Call aktif tkode.SetFocus ElseIf bin.Caption = "SIMPAN" Then Call simpanbrg Call tampilgrid bin.Caption = "INPUT" bt.Caption = "TUTUP" Call bersih Call NONAKTIF ElseIf bin.Caption = "UPDATE" Then Call updatebrg Call tampilgrid Call bersih Call NONAKTIF bin.Caption = "INPUT" bt.Caption = "TUTUP"

Page 17: PemrogramanVisual II

Page 17 of 44

End If End Sub Private Sub bt_Click() If bt.Caption = "TUTUP" Then Unload Me menu.Show ElseIf bt.Caption = "BATAL" Then Call bersih Call NONAKTIF bt.Caption = "TUTUP" bin.Caption = "INPUT" End If End Sub Private Sub Form_Activate() Call bersih Call NONAKTIF Call isicsat Call tampilgrid End Sub Private Sub Form_Load() Call koneksi End Sub Private Sub grid_KeyPress(KeyAscii As Integer) 'agar bisa hapus per record didalam grid. 'caranya klik kode di grid yang akan dihapus tekan backspace a = grid.Row kode = grid.TextMatrix(a, 1) Call koneksi rsbrg.Open "select * from barang ", KON With rsbrg If KeyAscii = 8 Then If Not (.BOF And .EOF) Then h = MsgBox("Bener mau dihapus ?", vbQuestion + vbYesNo, "--TaNYa--") If h = vbYes Then hapus = "delete from barang where kodebarang='" & kode & "'" KON.Execute (hapus) End If End If End If End With

Page 18: PemrogramanVisual II

Page 18 of 44

Call tampilgrid grid.Refresh End Sub Private Sub tharga_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then bin.SetFocus End If End Sub Private Sub tkode_KeyPress(KeyAscii As Integer) Call koneksi KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then rsbrg.Open "SELECT * FROM barang WHERE Kodebarang='" & tkode & "'", KON With rsbrg If .BOF And .EOF Then psn = MsgBox("KD " + tkode + " TDK ADA", vbInformation, "KONF") tnama = "" tsat = "" tstok = "" tharga = "" tnama.SetFocus Else tkode.Enabled = False tnama = .Fields("Namabarang") csat = .Fields("SATUAN") tstok = .Fields("stok") tharga = .Fields("hargaSATUAN") bin.Caption = "UPDATE" End If End With End If End Sub Private Sub tnama_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then csat.SetFocus End If End Sub Private Sub tstok_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then tharga.SetFocus End If

Page 19: PemrogramanVisual II

Page 19 of 44

End Sub B. Form Data User

Untuk form data user caranya sama dengan Data Barang. Silahkan kerjakan sendiri

Page 20: PemrogramanVisual II

Page 20 of 44

PERTEMUAN 7,8,9 MEMBUAT STRUK PEMBAYARAN DAN FORM TRANSAKSI PENJUAL AN

A. Struk Pembayaran Untuk menggunakan crystal report, penulis sebelumnya menginstal terlebih dahulu, yang penulis gunakan crystal report versi 8.5. Buka Crystal Report melalui langkah-langkah dibawah ini: 1. Klik Start 2. Pilih All Programs 3. Klik Crystal Reports

4. Pilih Using as a blank report 5. Lalu Klik Ok Maka akan tampil Data Explorer seperti gambar dibawah ini,

6. Pilih ODBC – Create New Data Source – Add

Page 21: PemrogramanVisual II

Page 21 of 44

7. 8. 9.

Pilih option user atau system

Page 22: PemrogramanVisual II

Page 22 of 44

10. 11. Double klik/ Add semua tabel yang ada di folder tutorial lalu close

Sesuaikan dgn nama database masing-masing

Page 23: PemrogramanVisual II

Page 23 of 44

12. Bila belum ada garis relasinya cek tabel-tabel di databasenya, biasanya ada yg beda type/sizenya. Misal kodebarang yg di barang beda dgn di detailtransaksi. Tanda panah di mistar berguna untuk memudahkan pengaturan penempatan objek field,garis dll. Caranya cukup di klik di mistar saja Menampilkan field explorer: MENU INSERT – FIELD OBJ ECT

Page 24: PemrogramanVisual II

Page 24 of 44

Field Tabel

Tgljual → transaksi

Kodeuser → transaksi

Kodebarang → barang

Namabarang → barang

hargasatuan → barang

jumlahbeli → detailtransaksi

subtotal → detailtransaksi Pindahkan group#1 Name ke posisi page header atur seperti di bawah ini. Untuk garis ada di menu insert – line. Bantu dengan panah di mistar utk penempatan. Toolbar utk membuat label. Save dengan nama: cetak

Grand total: Menu Insert – Grandtotal Pilih subtotal dari detailtransaksi

No transaksi : Menu insert – group Pilih notransaksi dari tabel transaksi

Page 25: PemrogramanVisual II

Page 25 of 44

B. Form Transaksi Penjualan Komponen di form transaksi: INPUT, SIMPAN, BATAL, TUTUP, LIST BRG objeknya command button Timer, textbox, label, listbox, gridnya pakai MSHFLEXGRID

Kendala yang mungkin terjadi ketika crystal report di preview/run: � Myodbc error.... solusinya: 1. Buka regedit ( Start – Run – Regedit – Enter ) 2. Cari : HKEY_CURRENT_USER\Software\Seagate Software\Crystal Reports\DatabaseOptions\ODBC 3. Buat key baru : Klik kanan pada ODBC, pilih New, Key 4. Beri Nama : outerjoin 5. Di Dalam Key OuterJoin, buat New String Value 6. Beri nama : SQL2outerjoin 7. Klik kanan pada String Value SQL2outerjoin, pilih Modify 8. Isikan : libmyodbc3 (untuk myodbc versi 3) atau libmyodbc5 (untuk myodbc versi 5) � Setelah di PRIVIEW kosong tidak ada isi datanya. Solusinya: Cek tabel-tabelnya di database tipedata, size, isi data mungkin tidak sama. Contoh; Antara kode barang di tabel barang dengan tabel detail mungkin tidak sama type, size atau isi datanya di tabel yang satu ada di tabel lain yang berkaitan tidak ada.

LBAYAR

MSHFLEXGRID

TXTUSER TXTNOTRANS

TXTTGL

Keterangan Name Pada Properties: List1 : LIST1 Kode barang : TXTKDBRG Nama barang : TXTNMBRG Satuan : TXTSATUAN Harga : TXTHARGA Jumlah Jual : TXTJMHJUAL Subtotal : TXTSUBTOTAL GRID Uang Bayar : TXTBAYAR Kembalian : TXTKEMBALIAN Input : cmdinput Simpan : cmdsimpan Batal : cmdbatal Tutup : Cmdtutup ListBrg : Cmdlistbrg

Component Crystal Report Control. Dikasih name: CR

Timer

Button list barang

Page 26: PemrogramanVisual II

Page 26 of 44

Outputnya: Logika Jalannya program: 1. Pertama run tombol aktif: INPUT sama TUTUP selain itu nonaktif, tgl otomatis

muncul. 2. Tekan INPUT notrans muncul otomatis dan tombol SIMPAN, BATAL aktif.

Sedangkan INPUT, TUTUP nonaktif. 3. Kode barang bisa langsung di input di txtkdbrg lalu enter nama barang, satuan

harga tampil 4. Atau di klik tombol list brg, tampil list barangnya klik salah satu barang maka kode

barang, nama barang,satuan, harga tampil. 5. Kursor langsung muncul di jumlah jual, input jumlah jual lalu enter muncul kotak

pesan

Page 27: PemrogramanVisual II

Page 27 of 44

6. Pilih yes ulangi no. 3 atau 4, pilih no input uang bayar. 7. Jika uang bayar kurang muncul pesan 8. Selain itu muncul kembalian langsung TEKAN TOMBOL SIMPAN atau BATAL. 9. Jika SIMPAN tampil struk pembayaran. BATAL kembali semula. 10. Di dalam grid bisa juga membatalkan salah satu barang yang di beli, caranya: klik

di dalam grid, pake panah atas bawah utk memilih barangnya lalu tekan backspace.

11. TEKAN TUTUP keluar dari program transaksi.

LISTINGNYA: Dim ambilstok As Boolean Sub cetak() Call koneksi cr.SelectionFormula = "{TRANSAKSi.notransaksi}='" & TXTNOTRANS & "'" cr.ReportFileName = App.Path & "\cetak.rpt" cr.WindowState = crptMaximized cr.RetrieveDataFiles cr.Action = 1 End Sub Sub isilist() 'masukin data barang ke list rsbrg.Open "select * from barang", KON List1.Clear Do While Not rsbrg.EOF List1.AddItem rsbrg!kodebarang & Space(3) & rsbrg!namabarang & Space(3) & rsbrg!stok rsbrg.MoveNext Loop End Sub Sub SEMULA() Call bersih Call NONAKTIF CMDSIMPAN.Enabled = False CMDINPUT.Enabled = True CMDTUTUP.Enabled = True CMDBATAL.Enabled = False cmdlistbrg.Enabled = False

Page 28: PemrogramanVisual II

Page 28 of 44

List1.Visible = False End Sub Sub NONAKTIF() Dim kontrol As Control For Each kontrol In Me.Controls If TypeOf kontrol Is TextBox Then kontrol.Enabled = False Next List1.Enabled = False End Sub Sub aktif() Dim kontrol As Control For Each kontrol In Me.Controls If TypeOf kontrol Is TextBox Then kontrol.Enabled = True Next List1.Enabled = True TXTTGL.Enabled = False TXTUSER.Enabled = False End Sub Sub bersih() Dim kontrol As Control LBAYAR.Caption = "Bayar" Call hapusTEMP For Each kontrol In Me.Controls If TypeOf kontrol Is TextBox Then kontrol.Text = "" Next TXTUSER = menu.stbar.Panels(1).Text End Sub Sub tampilgrid() Call koneksi 'buka tabel barang rstemp.Open "select * from TEMP", KON 'atur grid utk tabel TEMP Set grid.DataSource = rstemp grid.ColWidth(0) = 50 grid.ColWidth(1) = 1000 grid.ColWidth(2) = 1300 grid.ColWidth(3) = 1300 grid.ColWidth(4) = 1300 grid.ColWidth(5) = 1000 grid.ColWidth(6) = 1000 grid.TextMatrix(0, 1) = "Kode Barang"

Page 29: PemrogramanVisual II

Page 29 of 44

grid.TextMatrix(0, 2) = "Nama Barang" grid.TextMatrix(0, 3) = "Satuan" grid.TextMatrix(0, 4) = "HARGA " grid.TextMatrix(0, 5) = "Jumlah Jual" grid.TextMatrix(0, 6) = "Subtotal" End Sub Sub bikinTEMP() ' bikin tabel TEMP bikin = "create table TEMP(kodebarang varchar(7),nmbrg varchar(25),sat varchar(10),hrg double,qty int, subttl double)" KON.Execute (bikin) tampilgrid End Sub Sub hapusTEMP() hapus = "drop table if exists TEMP" KON.Execute (hapus) End Sub Sub simpanTEMP() simpan = "insert into TEMP() values('" & TXTKDBRG & "','" & TXTNMBRG & "','" & TXTSATUAN & "','" & TXTHARGA & "','" & TXTJMHJUAL & "','" & TXTSUBTOTAL & "')" KON.Execute (simpan) End Sub Sub nomor() TXTTGL = Format(Date, "DD/MM/YYYY") Dim cari As String 'buka tabel transaksi Call koneksi rstrans.Open "SELECT * FROM TRANSAKSI ORDER BY NOTRANSAKSI DESC LIMIT 1;", KON With rstrans If .EOF Then TXTNOTRANS = Format(Date, "yymm") + "001" ElseIf Left(rstrans!notransaksi, 4) <> Format(Date, "yymm") Then TXTNOTRANS = Format(Date, "yymm") + "001" Else NO = .Fields("notransaksi") + 1 TXTNOTRANS = Format(Date, "yymm") + Right("000" + NO, 3) End If End With End Sub

Page 30: PemrogramanVisual II

Page 30 of 44

Sub simpantransaksijual() TXTTGL = Format(Date, "YYYY/MM/DD") simpan = "INSERT INTO transaksi() VALUES('" & TXTNOTRANS & "','" & TXTTGL & "','" & Val(LBAYAR) & "','" & TXTUSER & "')" KON.Execute (simpan) End Sub Sub simpandetailjual() For a = 1 To (grid.Rows - 1) fak = TXTNOTRANS kdbrg = grid.TextMatrix(a, 1) 'kdbrg berada di kolom 1 jmhjual = grid.TextMatrix(a, 5) 'jmhjual berada di kolom 5 subttl = grid.TextMatrix(a, 6) 'subtotal berada di kolom 6 'variabel fak,kdbrg,jmhjual,subttl utk data masukan ke tabel detailjual simpan = "insert into detailTRANSAKSI()values('" & fak & "','" & Val(jmhjual) & "','" & Val(subttl) & "','" & kdbrg & "')" KON.Execute (simpan) Next a End Sub Sub ubahstok() Call koneksi If ambilstok = True Then kurang = "update barang set stok=stok - '" & Val(TXTJMHJUAL) & "' where kodebarang='" & TXTKDBRG & "'" Set rsbrg = KON.Execute(kurang) ElseIf ambilstok = False Then tambah = "update barang set stok=stok + '" & Val(TXTJMHJUAL) & "' where kodebarang='" & TXTKDBRG & "'" Set rsbrg = KON.Execute(tambah) End If End Sub Private Sub cmdlistbrg_Click() List1.Visible = True End Sub Private Sub CMDBATAL_Click() Call SEMULA Call hapusTEMP End Sub Private Sub CMDINPUT_Click() Call aktif TXTNOTRANS.Enabled = False CMDINPUT.Enabled = False

Page 31: PemrogramanVisual II

Page 31 of 44

CMDTUTUP.Enabled = False CMDSIMPAN.Enabled = True CMDBATAL.Enabled = True cmdlistbrg.Enabled = True Call hapusTEMP Call bikinTEMP Call nomor TXTKDBRG.SetFocus End Sub Private Sub CMDSIMPAN_Click() Call simpantransaksijual Call simpandetailjual x = MsgBox("cetak?", vbYesNo, "cetak") If x = vbYes Then Call cetak y = "delete from temp" KON.Execute (y) Call tampilgrid Call SEMULA Else Call SEMULA End If End Sub Private Sub CMDTUTUP_Click() Call hapusTEMP Unload Me menu.Show End Sub Private Sub Form_Activate() TXTNOTRANS.Enabled = False Call SEMULA TXTUSER = menu.stbar.Panels(1).Text End Sub Private Sub Form_Load() Call koneksi ambilstok = True 'agar memilih mengurangi stok,lihat sub ubahstok Call isilist End Sub Private Sub grid_KeyPress(KeyAscii As Integer) 'agar bisa hapus per record didalam grid. caranya klik di grid lalu pake panah 'atas bawah utk pilih record yg akan dihapus lalu tekan backspace

Page 32: PemrogramanVisual II

Page 32 of 44

a = grid.Row kodegrid = grid.TextMatrix(a, 1) Call koneksi rstemp.Open "select * from TEMP", KON With rstemp If KeyAscii = 8 Then If Not (.BOF And .EOF) Then h = MsgBox("Bener mau dihapus ?", vbQuestion + vbYesNo, "--TaNYa--") If h = vbYes Then hapus = "delete from TEMP where kodebarang='" & kodegrid & "'" Set rstemp = KON.Execute(hapus) ambilstok = False Call ubahstok Call isilist Me.List1.Refresh grid.Refresh TXTKDBRG.Text = "" TXTNMBRG.Text = "" TXTSATUAN.Text = "" TXTHARGA.Text = "" TXTJMHJUAL.Text = "" TXTSUBTOTAL.Text = "" ttl = Val(LBAYAR.Caption) x = Val(grid.TextMatrix(a, 6)) ttl = ttl - x LBAYAR.Caption = ttl End If End If End If End With Call tampilgrid grid.Refresh End Sub Private Sub list1_Click() brg = "select * from barang where kodebarang='" & Left(List1, 7) & "'" Set rsbrg = KON.Execute(brg) TXTKDBRG = rsbrg!kodebarang TXTNMBRG = rsbrg!namabarang TXTSATUAN = rsbrg!SATUAN TXTHARGA = rsbrg!HARGASATUAN TXTJMHJUAL.SetFocus List1.Visible = False End Sub

Page 33: PemrogramanVisual II

Page 33 of 44

Private Sub Timer1_Timer() TXTTGL = Format(Date, "DD/MM/YYYY") End Sub Private Sub TXTBAYAR_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If Val(LBAYAR) > Val(TXTBAYAR) Then MsgBox "uang bayar kurang" TXTBAYAR.SetFocus TXTKEMBALIAN.Enabled = False Else TXTKEMBALIAN.Enabled = True TXTKEMBALIAN = Val(TXTBAYAR) - Val(LBAYAR) CMDSIMPAN.SetFocus End If End If End Sub Private Sub TXTJMHJUAL_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call koneksi rsbrg.Open "select * from barang where kodebarang='" & TXTKDBRG & "'", KON If Val(TXTJMHJUAL) > rsbrg!stok Then MsgBox "stok kurang" TXTJMHJUAL.SetFocus Exit Sub Else TXTSUBTOTAL = Val(TXTJMHJUAL) * Val(TXTHARGA) ambilstok = True Call ubahstok Call simpanTEMP Call tampilgrid Call isilist ttl = 0 For a = 1 To (grid.Rows - 1) x = Val(grid.TextMatrix(a, 6)) ttl = ttl + x Next a LBAYAR.Caption = ttl t = MsgBox("Mau tambah pembelian lagi?", vbQuestion + vbYesNo, "Konfirmasi") If t = vbYes Then TXTKDBRG = "" TXTKDBRG.SetFocus TXTNMBRG = ""

Page 34: PemrogramanVisual II

Page 34 of 44

TXTSATUAN = "" TXTHARGA = "" TXTJMHJUAL = "" TXTSUBTOTAL = "" Else Me.Refresh grid.Refresh TXTBAYAR.SetFocus End If End If End If End Sub Private Sub TXTKDBRG_KeyPress(KeyAscii As Integer) Call koneksi KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then rsbrg.Open "SELECT * FROM barang WHERE Kodebarang='" & TXTKDBRG & "'", KON With rsbrg If .BOF And .EOF Then psn = MsgBox("KD" + TXTKDBRG + "TDK ADA", vbInformation, "KONF") TXTKDBRG = "" TXTKDBRG.SetFocus Else TXTNMBRG = .Fields("Namabarang") TXTSATUAN = .Fields("SATUAN") TXTHARGA = .Fields("hargaSATUAN") TXTJMHJUAL.Enabled = True TXTJMHJUAL.SetFocus End If End With End If End Sub

Page 35: PemrogramanVisual II

Page 35 of 44

PERTEMUAN 10 MEMBUAT FORM GANTI PASSWORD USER

Logika jalannya program: 1. Pertama run yang aktif hanya password lama. Kode user akan otomatis terisi

sesuai dengan login. 2. Kursor muncul di password lama. Ketikan password lama lalu enter jika tidak ada,

muncul pesan (password ..... tidak ada). Jika ada, kursor pindah ke password baru.

3. Ketikan password baru, enter. Ketikan konfirmasi password baru lalu enter. Jika isi password baru dan konfirmasi password tidak sama, muncul pesan: (konfirmasi dan password baru berbeda). Jika sama, muncul pesan:(password telah diupdate).

4. Tekan TUTUP untuk keluar kembali ke menu utama. Untuk membatalkan tekan TUTUP aja deh.

Listingnya: Private Sub BTUTUP_Click() Unload Me menu.Show End Sub Private Sub Form_Activate() For Each k In Me.Controls If TypeOf k Is TextBox Then k.Enabled = False End If Next TKDUSER = menu.stbar.Panels(1).Text TLAMA.Enabled = True

Name: Tkduser : kode user Tlama : passwd lama Tbaru : passwd baru Tkonf : konfirmasi passwd Btutup : TUTUP

Outputnya:

Page 36: PemrogramanVisual II

Page 36 of 44

TLAMA.SetFocus TLAMA.PasswordChar = " * " TBARU.PasswordChar = " * " TKONF.PasswordChar = " * " End Sub Private Sub TBARU_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TKONF.Enabled = True TKONF.SetFocus End If End Sub Private Sub TKONF_KeyPress(KeyAscii As Integer) Call koneksi If KeyAscii = 13 Then If TKONF <> TBARU Then MsgBox "konfirmasi dan password baru berbeda" Else rsuser.Open "update LOGIN set password=' " & TKONF & " ' WHERE kodeuser=' " & TKDUSER & " ' ", KON MsgBox "password telah diupdate" Form_Activate TLAMA = " " End If End If End Sub Private Sub TLAMA_KeyPress(KeyAscii As Integer) Call koneksi If KeyAscii = 13 Then rsuser.Open "SELECT * FROM LOGIN WHERE password=' " & TLAMA & " ' ", KON If rsuser.EOF Then MsgBox "password " + TLAMA + " tidak ada" TLAMA.SetFocus Else TBARU.Enabled = True TBARU.SetFocus End If End If End Sub

Page 37: PemrogramanVisual II

Page 37 of 44

PERTEMUAN 11,12,13 MEMBUAT LAPORAN PENJUALAN HARIAN, MINGGUAN, BULANAN

A. Laporan penjualan harian Di pertemuan 7 pembuatan struk pembayaran, sudah membuat koneksi odbc dengan nama tutorial. Berikutnya akan kita gunakan kembali ODBC: tutorial . Buka crystal report, pilih as a blank report, di data explorer klik Add/double klik tabel barang, detailtransaksi, login, transaksi

Page 38: PemrogramanVisual II

Page 38 of 44

Buat design laporan harian seperti di bawah ini hampir sama dengan struk pembayaran (save as saja dari cetak.rpt ): Field Tabel

Tgljual → transaksi

Kodeuser → transaksi

Kodebarang → barang

Namabarang → barang

hargasatuan → barang

jumlahbeli → detailtransaksi

subtotal → detailtransaksi Bedanya dengan struk pembayaran di posisi group #1Name notransaksi

Grand total: Menu Insert – Grandtotal Pilih subtotal dari detailtransaksi

No transaksi : Menu insert – group Pilih notransaksi dari tabel transaksi

Page 39: PemrogramanVisual II

Page 39 of 44

B. Laporan penjualan mingguan

Untuk mingguan, juga tinggal di save as dari laporan harian, lalu tambahkan tanggal jual dari tabel transaksi. Sedangkan untuk tanggal sekarang gunakan formula fields – new – isikan tanggal di formula name – di formula editor ketikan CurrentDate atau double klik seperti gambar di bawah ini – lalu simpan.

Lalu drag tanggal yang sudah jadi ke page header

Page 40: PemrogramanVisual II

Page 40 of 44

C. Laporan penjualan bulanan Untuk laporan bulanan tinggal di save as dari laporan MINGGUAN, lalu tambahkan @BULAN dan @tanggal. Tempatnya sama di formula editor, menggunakan 2 fungsi Month(untuk menghasilkan bulan) dan monthName(untuk output bulannya nama).

Untuk tahun fungsi year

Page 41: PemrogramanVisual II

Page 41 of 44

PERTEMUAN 14 MEMBUAT FORM LAPORAN

A. Form Laporan Listingnya: Private Sub Bkeluar_Click() Unload Me menu.Show End Sub Private Sub CBULAN_KeyPress(KeyAscii As Integer) If KeyAscii = 27 Then Unload Me End Sub 'LAP HARIAN Private Sub CHARIAN_Click() 'panggil laporan yang tanggalnya = charian CR.SelectionFormula = "Totext ({ TRANSAKSI.TglJUAL})=' " & CHARIAN & " ' "

Outputnya:

Crystal Report

Keterangan Name pada Properties : Combo1 : Charian Combo2 : Cmingguawal Combo3 : Cmingguakhir Combo4 : Cbulan Combo5 : Ctahun Crystal Report : CR

Page 42: PemrogramanVisual II

Page 42 of 44

CR.ReportFileName = App.Path & "\Lap_HARIAN.rpt" CR.WindowState = CRptMaximized CR.RetrieveDataFiles CR.Action = 1 End Sub Private Sub CHARIAN_KeyPress(KeyAscii As Integer) If CHARIAN = " " Or KeyAscii = 27 Then Unload Me End Sub 'LAP MINGGUAN Private Sub CMINGGUAKHIR_Click() 'cegah data kosong di CMINGGUAWAL dan cMINGGUAKHIR If CMINGGUAWAL = " " Then MsgBox "Tanggal awal kosong", , "Informasi" CMINGGUAWAL.SetFocus Exit Sub End If 'panggil laporan yang tanggal awalnya=CMINGGUAWAL dan tanggal akhirnya = CMINGGUAKHIR CR.SelectionFormula = "{TRANSAKSI.TglJUAL} in date (" & CMINGGUAWAL.Text & ") to date (" & CMINGGUAKHIR.Text & ")" CR.ReportFileName = App.Path & "\Lap_Mingguan.rpt" CR.WindowState = CRptMaximized CR.RetrieveDataFiles CR.Action = 1 End Sub Private Sub CMINGGUAWAL_KeyPress(KeyAscii As Integer) If KeyAscii = 27 Then Unload Me End Sub 'LAP BULANAN Private Sub CTAHUN_Click() 'buka database Call koneksi 'cari data yang tanggal dan bulannya dipilih di CBULAN dan CTAHUN rstrans.Open "select * from TRANSAKSI where month(TGLJUAL)=' " & Val(CBULAN) & " ' and year(TGLJUAL)=' " & (CTAHUN) & " ' ", KON 'jika tidak cocok, munculkan pesan If rstrans.EOF Then MsgBox "Data tidak ditemukan" Exit Sub

Page 43: PemrogramanVisual II

Page 43 of 44

CBULAN.SetFocus End If 'jika ditemukan panggil file laporan yang 'datanya bulannya=cBULAN dan tahunnya= CTAHUN CR.SelectionFormula = "Month({TRANSAKSI.TGLJUAL})=" & Val(CBULAN.Text) & " and Year({TRANSAKSI.TGLJUAL})=" & Val(CTAHUN.Text) CR.ReportFileName = App.Path & "\Lap_Bulanan.rpt" CR.WindowState = CRptMaximized CR.RetrieveDataFiles CR.Action = 1 End Sub Private Sub Form_Load() 'buka database Call koneksi 'cari tanggal pembelian rstrans.Open "Select Distinct TGLJUAL From transaksi order By 1", KON rstrans.Requery 'tampilkan tanggal dalam combo Do Until rstrans.EOF CHARIAN.AddItem rstrans!Tgljual CMINGGUAWAL.AddItem Format(rstrans!Tgljual, "YYYY ,MM, DD") CMINGGUAKHIR.AddItem Format(rstrans!Tgljual, "YYYY ,MM, DD") rstrans.MoveNext Loop 'buatlah looping untuk bulan dari 1-12 'dan tahun mulai tahun 2010 s/d 2020 For i = 1 To 12 CBULAN.AddItem i Next i For i = 10 To 20 CTAHUN.AddItem 2000 + i Next i End Sub

Page 44: PemrogramanVisual II

Page 44 of 44

B. Membuat FILE EXE Klik menu file – pilih make P.TUTORIAL.exe – kasih nama file : proj-tutorial - ok. INGATT!! Jangan lupa untuk memperesentasikan tugas membuat projek program secara berkelompok.