Upload
adam-cherbond
View
76
Download
0
Embed Size (px)
DESCRIPTION
Cara Belajar Visual Basic
Citation preview
Database adalah sekumpulan data yang terdiri atas satu atau beberapa table yang saling berhubungan satu sama lain, dimana pemakai mempunyai wewenang untuk mengakses data tersebut, baik menambah, mengganti, menghapus data-data dalam table tersebut
Page 2 of 4
Modul Praktikum Visual Basic AdvanceBina Sarana Informatika
Disusun Oleh:Syamsul Bakhri, S.Kom
Mulia Rahmayu, S.KomPERTEMUAN 1
Penjelasan tugas,penentuan kelompok, penilaian tugasPertemuan ini menjelaskan ke siswa untuk mengerjakan sebuah projek program untuk nilai tugas, secara berkelompok (msl. 5 orang/kelompok). Pada saat mereka melakukan presentasi projek program, penilaian diambil secara individu dan kelompok.
Kriteria penilaian projek programPenlaian 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.
Contoh:
Database: 10% x 100=10
Form. Coding, report = 60% x 100 = 60Testing, Presentasi = 30% x 100 = 30TOTAL NILAI KELOMPOK = 100
NILAI INDIVIDU = 100Nilai rata-rata projek program per individu=(100+100)/2 =100
.
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 Kesepakatan perkuliahan, diskusi, penjelasan tugas Ceramah dan diskusi
2 Pembuatan database di mysql via GUI 1. Konsep dasar database2. Merancang database & table
3. Pengenalan perintah sql Praktek dan diskusiPemahaman 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 coding1. Membuat form 2. Koneksi form dengan database3. Modifikasi dengan perintah sql Praktek dan diskusi Pemahaman koneksi, mampu membuat form dan codingnya10%
7 Membuat struk pembayaran di crystal reportMendisain laporan Praktek dan diskusi Mampu menggunakan tools-tools crystal report5%
8-9 Membuat Form Transaksi Penjualan Membuat form transaksi penjualan sampai menampilkan struk pembayaranPraktek dan diskusi Mampu membuat form dan codingnya 15%
10Membuat form ganti password user Membuat form dan coding Praktek dan diskusi Kreatifitas menambah utility program
11 -12 Membuat laporan penjualan harian, mingguan, bulanan Mendisain laporan harian, mingguan dan bulananPraktek dan diskusi Kreatifitas mendesign laporan 10%
13UJIAN TENGAH SEMESTER (UTS)
14 Membuat Form Laporan Membuat form laporan yang dapat menampilkan laporan harian, mingguan, bulananPraktek dan diskusiMampu membuat form dan codingnya10%
15Review Review bisa juga dilakukan di setiap akhir per pertemuan
16 27Presentasi projek program berkelompok 1. Cara presentasi yang baik2. Evaluasi pembuatan program presentasi Penilaian Individu dan Kelompok 30%
28UJIAN AKHIR SEMESTER(UAS)
Contoh projek program: Pembayaran, Simpan-pinjam, Pembelian, Penggajian, Peminjaman pengembalian, Penerimaan karyawan, Absensi pegawai, Persedian barang, kunjungan pasien, perpustakaan dan lain-lain.PERTEMUAN 2DATABASE MYSQL
Membuat database di mysql Dalam pembuatan basis data pada MySQL software yang digunakan adalah :
apache2triad dll.
mysql-connector-odbc-3.51 atau yang 5.1.10-win32 (untuk mengkoneksikan database dengan software pemrograman. Pilih saja salah satu mana yang support)Software pemrograman yang dipakai penulis untuk pembelajaran ini adalah Visual Basic 6.0 mysql connector odbcnya yang 5.1Normalisasi bentuk ke 3
Nama databasenya: penjualan_nim Buatlah Tabel-tabel dibawah iniNama tabel: Barang
Field nameData typeField sizeKeterangan
KodebarangVarchar 7Primary Key
NamabarangVarchar20
SatuanVarchar10
StokInt
HargasatuanDouble
Langsung Isi datanya:
Nama tabel:DetailTransaksi
Field nameData typeField sizeKeterangan
NotransaksiVarchar10Foreign Key
JumlahbeliInt
Subtotal Double
KodebarangVarchar7Foreign Key
Nama tabel:Transaksi
Field nameData typeField sizeKeterangan
NotransaksiVarchar10Primary Key
TgljualDate
Totalbayar Double
KodeuserVarchar3Foreign Key
Nama tabel:LoginField nameData typeField sizeKeterangan
KodeuserVarchar3Primary Key
NamauserVarchar50
PasswordVarchar6
AkseslevelVarchar4
Isi datanya:
PERTEMUAN 3,4MERANCANG CODING KONEKSI, FORM MENU UTAMA DAN LOGINAktifkan Microsoft Visual Basic 6.0 Pilih STANDART EXETambahkan terlebih dahulu Reference ADO Library ke dalam project anda:Ini berkaitan dengan listing koneksi di module, biasanya ketika diketik ...as new ADODB...., ADODB nya tidak muncul.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
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_nim;"
KON.Open
End SubA. MEMBUAT FORM MENU UTAMA (name: menu)
Pilih menu TOOLS menu editor
untuk objek statusbar, Tambahkan komponen ini:
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 SubB. FORM LOGIN (name : login)
Listing form login:
Private Sub CMDBERSIH_Click()
txtuser = " "
txtpassword = " "
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 = 27 Then End 27=esc,jika tekan esc maka keluar. 13=enterDim Kodeuser As String
Dim user As String
If KeyAscii = 13 Then
Call koneksi
rsuser.Open "Select * from login where kodeuser =' " & txtuser & " ' and Password=' " & txtpassword & " ' ", KON
If rsuser.EOF Then
b = b + 1
If 1 - b = 0 Then
MsgBox "Kesempatan ke " & b & " Salah"
txtpassword = ""
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
Else
txtlevel = rsuser!akseslevel
txtlevel.Enabled = False
Me.Visible = False
menu.Show
menu.stbar.Panels(1).Text = login.txtuser menu adl name dari form menu menu.stbar.Panels(2).Text = login.txtlevel
menu.stbar.Panels(3).Visible = False
If menu.stbar.Panels(2).Text = "user" Then
menu.MNUSER.Enabled = False
ElseIf menu.stbar.Panels(2).Text = "admin" Then
menu.MNUSER.Enabled = True
End If
End If
End If
End Sub
Private Sub txtuser_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 27 Then End 27= escIf 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 = " "
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
txtuser.Enabled = False
txtpassword.Enabled = True
txtpassword.SetFocus
End If
End If
End Sub
PERTEMUAN 5,6
MEMBUAT FORM BARANG DAN DATA USER
A. Form Barang
Outputnya setelah di tekan INPUT dan mengisi data baru:
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()
cmbsat.AddItem "UNIT"
cmbsat.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
cmbsat.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
cmbsat.Enabled = True
End Sub
Sub bersih()
For Each kontrol In Me.Controls
If TypeOf kontrol Is TextBox Then kontrol.Text = " "
Next
cmbsat = " "
End Sub
Sub tampilgrid()
'buka tabel barang dulu
Call koneksi
rsbrg.Open "select * from barang order by kodebarang", 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 & " ', " & _
" ' " & cmbsat & " ', " & _
" ' " & tstok & " ', " & _
" ' " & tharga & " ') "
Set rsbrg = KON.Execute(simpan)
End Sub
Sub updatebrg()
Update = "update barang set " & _
"namabarang=' " & tnama & " ', " & _
"satuan=' " & cmbsat & " ', " & _
"stok=' " & tstok & " ', " & _
"hargasatuan=' " & tharga & " ' where kodebarang=' " & tkode & " ' "
Set rsbrg = KON.Execute(Update)
End Sub
Private Sub cmdinput_Click()
If cmdinput.Caption = "INPUT" Then
cmdinput.Caption = "SIMPAN"
cmdtutup.Caption = "BATAL"
Call aktif
tkode.SetFocus
ElseIf cmdinput.Caption = "SIMPAN" Then
Call simpanbrg
Call tampilgrid
cmdinput.Caption = "INPUT"
cmdtutup.Caption = "TUTUP"
Call bersih
Call NONAKTIF
ElseIf cmdinput.Caption = "UPDATE" Then
Call updatebrg
Call tampilgrid
Call NONAKTIF
cmdinput.Caption = "INPUT"
cmdtutup.Caption = "TUTUP"
End If
End Sub
Private Sub cmdtutup_Click()
If cmdtutup.Caption = "TUTUP" Then
Unload Me
menu.Show
ElseIf cmdtutup.Caption = "BATAL" Then
Call bersih
Call NONAKTIF
cmdtutup.Caption = "TUTUP"
cmdinput.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 & " ' "
Set rsbrg = KON.Execute(hapus)
End If
End If
End If
End With
Call tampilgrid
grid.Refresh
End Sub
Private Sub tharga_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
cmdinput.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 = " "
cmbsat = " "
tstok = " "
tharga = " "
tnama.SetFocus
Else
tkode.Enabled = False
bhapus.Enabled = True
tnama = .Fields("Namabarang")
cmbsat = .Fields("SATUAN")
tstok = .Fields("stok")
tharga = .Fields("hargaSATUAN")
cmdinput.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
cmbsat.SetFocus
End If
End Sub
Private Sub tstok_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
tharga.SetFocus
End If
End SubB. Form Data User
PERTEMUAN 7,8,9MEMBUAT STRUK PEMBAYARAN DAN FORM TRANSAKSI PENJUALANA. Struk PembayaranUntuk 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 report5. Lalu Klik Ok
Maka akan tampil Data Explorer seperti gambar dibawah ini,
6. Pilih ODBC Create New Data Source Add7.
8.
9.
10.11. Double klik/ Add semua tabel yang ada di folder tutorial lalu close
12.Bila belum ada garis relasinya tekan link pilih smart link. Klik ok.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 OBJECT
Field
Tabel
Tgljual transaksi
Kodeusertransaksi
Kodebarangbarang
Namabarangbarang
hargasatuanbarang
jumlahbelidetailtransaksi
subtotaldetailtransaksi
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
B. Form Transaksi PenjualanKomponen di form transaksi:
INPUT, SIMPAN, BATAL, TUTUP, LIST BRG objeknya command button
Timer, textbox, label, listbox, gridnya pakai MSHFLEXGRID
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 tampil4. 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
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 = "Totext({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
Do While Not rsbrg.EOF
List.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
list.Enabled = False
List.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
List.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
List.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 order by kodebarang", KON
'atur grid utk tabel TEMP
Set grid.DataSource = rstemp
grid.ColWidth(0) = 50
grid.TextMatrix(0, 1) = "Kode Barang"
grid.ColWidth(1) = 1000
grid.TextMatrix(0, 2) = "Nama Barang"
grid.ColWidth(2) = 1300
grid.TextMatrix(0, 3) = "Satuan"
grid.ColWidth(3) = 1300
grid.TextMatrix(0, 4) = "HARGA "
grid.ColWidth(4) = 1300
grid.TextMatrix(0, 5) = "Jumlah Jual"
grid.ColWidth(5) = 1000
grid.TextMatrix(0, 6) = "Subtotal"
grid.ColWidth(6) = 1000
End SubSub bikinTEMP()
' bikin tabel TEMP
bikin = "create table TEMP(kodebarang varchar(7),nmbrg varchar(25),sat varchar(10),hrg double,qty int, subttl double)"
Set rstemp = KON.Execute(bikin)
tampilgrid
End Sub
Sub hapusTEMP()
hapus = "drop table if exists TEMP"
Set rstemp = KON.Execute(hapus)
End Sub
Sub simpanTEMP()
Dim simpan As String
simpan = "insert into TEMP() values(' " & TXTKDBRG & " ', " & _
" ' " & TXTNMBRG & " ', " & _
" ' " & TXTSATUAN & " ', " & _
" ' " & TXTHARGA & " ', " & _
" ' " & TXTJMHJUAL & " ', " & _
" ' " & TXTSUBTOTAL & " ') "
Set rstemp = KON.Execute(simpan, , adCmdText)
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"
Else
TXTNOTRANS = Val(.Fields("notransaksi")) + 1
End If
End With
End Sub
Sub simpantransaksijual()
TXTTGL = Format(Date, "YYYY/MM/DD")
simpan = "INSERT INTO transaksi() VALUES(' " & TXTNOTRANS & " ', ' " & TXTTGL & " ', ' " & Val(LBAYAR) & " ', ' " & TXTUSER & " ')"
Set rstrans = KON.Execute(simpan)
End Sub
Sub simpandetailjual()
Dim simpan, fak, kdbrg As String
Dim jmhjual As Integer
Dim subttl As Double
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 & " ') "
Set rsdetail = 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 clist_Click()
List.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
CMDTUTUP.Enabled = False
CMDSIMPAN.Enabled = True
CMDBATAL.Enabled = True
clist.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"
Set rstemp = 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
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
a = grid.Row
kode = 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=' " & kode & " ' "
Set rstemp = KON.Execute(hapus)
ambilstok = False
Call ubahstok
Me.List.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 List_Click()
Dim brg As String
brg = "select * from barang where kodebarang=' " & Left(List, 7) & " ' "
Set rsbrg = KON.Execute(brg)
TXTKDBRG = rsbrg!kodebarang
TXTNMBRG = rsbrg!namabarang
TXTSATUAN = rsbrg!SATUAN
TXTHARGA = rsbrg!HARGASATUAN
TXTJMHJUAL.SetFocus
List.Visible = False
End Sub
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
ttl = 0
For a = 1 To (grid.Rows - 1)
x = Val(grid.TextMatrix(a, 6))
ttl = ttl + x
Next a
LBAYAR.Caption = ttl
ambilstok = True
t = MsgBox("Mau tambah pembelian lagi?", vbQuestion + vbYesNo, "Konfirmasi")
If t = vbYes Then
TXTKDBRG = " "
TXTKDBRG.SetFocus
TXTNMBRG = " "
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 SubPERTEMUAN 10MEMBUAT FORM GANTI PASSWORD USERLogika 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
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 SubPERTEMUAN 11,12,13MEMBUAT LAPORAN PENJUALAN HARIAN, MINGGUAN, BULANANA. Laporan penjualan harianDi 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
Buat design laporan harian seperti di bawah ini hampir sama dengan struk pembayaran (save as saja dari cetak.rpt):Field
Tabel
Tgljual transaksi
Kodeusertransaksi
Kodebarangbarang
Namabarangbarang
hargasatuanbarang
jumlahbelidetailtransaksi
subtotaldetailtransaksi
Bedanya dengan struk pembayaran di posisi group #1Name notransaksi
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.
C. Laporan penjualan bulananUntuk 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).
PERTEMUAN 14MEMBUAT FORM LAPORANA. 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 & " ' "
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
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 SubB. Membuat FILE EXEKlik menu file pilih make P.TUTORIAL.exe kasih nama file : proj-tutorial - ok.
INGATT!!
Jangan lupa untuk memperesentasikan tugas membuat projek program secara berkelompok.Kodebarang*
Namabarang
Satuan
Stok
hargasatuan
Jumlahjual
Subtotal
Notransaksi**
Kodebarang**
Notransaksi *
Tgljual
totalbayar
kodeuser**
Kodeuser*
Namauser
password
level
Barang
Detailtransaksi
Transaksi
Login
Ket: mulai dari ...= "driver={mysql odbc 5.1 driver};server=localhost;uid=root;pwd=password;db=penjualan_nim;" ini diketik manual. Penulis tidak membuat koneksi via adodc/ seting odbc
CAPTION - NAME
FILE MNFILE
BARANG MNBARANG
DATA USER MNUSER
TRANSAKSI MNTRANSAKSI
LAPORAN MNLAPORAN
UTILITY MNUTILITY
GANTI PASSWORD MNGP
LOGOUT MNLOGOUT
StatusBar (name: STBAR)
Klikkanan properties
Tab panel - Insert panel 3 x
Output menu utama
Output login
Keterangan Name pada properties:
Cmdinput: INPUT
Cmdtutup: TUTUP
Tkode: KD BARANG
Tnama: NAMA BARANG
Cmbsat: SATUAN
Tstok: STOK
Tharga: HARGA
Grid : MSHFLEXGRID
Untuk form data user caranya sama dengan Data Barang. Silahkan kerjakan sendiri
Sesuaikan dgn nama database masing-masing
Grand total:
Menu Insert Grandtotal
Pilih subtotal dari detailtransaksi
No transaksi :
Menu insert group
Pilih notransaksi dari tabel transaksi
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.
MSHFLEXGRID
TXTUSER
TXTNOTRANS
TXTTGL
Keterangan Name Pada Properties:
List1: LIST,
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
Component Crystal Report Control. Dikasih name: CR
Timer
LBAYAR
Name:
Tkduser: kode user
Tlama: passwd lama
Tbaru: passwd baru
Tkonf: konfirmasi passwd
Btutup : TUTUP
Outputnya:
Grand total:
Menu Insert Grandtotal
Pilih subtotal dari detailtransaksi
No transaksi :
Menu insert group
Pilih notransaksi dari tabel transaksi
Lalu drag tanggal yang sudah jadi ke page header
Untuk tahun fungsi year
Outputnya:
Crystal Report
Keterangan Name pada Properties :
Combo1 : Charian
Combo2 : Cmingguawal
Combo3 : Cmingguakhir
Combo4 : Cbulan
Combo5 : Ctahun
Crystal Report : CR