pemrogramanvisual ii
TRANSCRIPT
Modul Praktikum Visual Basic Advance
Bina Sarana Informatika
Disusun Oleh:
Mulia Rahmayu, S.Kom Sandra Dewi Saraswati, S.Kom
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 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 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 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 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 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 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 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 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 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 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 of 44
txtuser.Enabled = False txtpassword.Enabled = True txtpassword.SetFocus End If End If End Sub
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 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 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 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 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 of 44
End Sub B. Form Data User
Untuk form data user caranya sama dengan Data Barang. Silahkan kerjakan sendiri
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 of 44
7. 8. 9.
Pilih option user atau system
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.