Fungsi VB

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