4tmaj4's Blog · Web viewVisual Basic 6.0. Disusun oleh: Freddy Heriyanto. Teknik Informatika....
Transcript of 4tmaj4's Blog · Web viewVisual Basic 6.0. Disusun oleh: Freddy Heriyanto. Teknik Informatika....
Pemrograman
Visual Basic 6.0
Disusun oleh:Freddy Heriyanto
Teknik InformatikaUniversitas Islam Azzahra
Jakarta
Pemrograman VB 6.0Freddy Heriyanto
BAB 1DASAR-DASAR PEMROGRAMAN
Latihan 1-1: Proses Berurutan
Algoritma
Output('LAMA MENGINAP')Input(LAMA)Output('HARGA KAMAR/HARI')Input(TARIF)JUMLAHLAMA*TARIFOutput(JUMLAH)
Listing Program
Option Explicit
Private Sub CMDMULAI_Click() LAMA.Text = "" TARIF.Text = "" JUMLAH.Text = ""End Sub
Private Sub CMDSELESAI_Click() EndEnd Sub
Private Sub LAMA_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text)End Sub
Private Sub TARIF_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text)End Sub
Latihan 1-2: Pencabangan IF Satu Pernyataan
1
Pemrograman VB 6.0Freddy Heriyanto
Algoritma
Output('LAMA MENGINAP')Input(LAMA)Output('HARGA KAMAR/HARI')Input(TARIF)JUMLAHLAMA*TARIFIf JUMLAH>200000 Then DISJUMLAH*0.10 Else DIS0EndifBAYARJUMLAH-DISOutput(JUMLAH)Output(DIS)Output(BAYAR)
Listing Program
Option Explicit
Private Sub CMDMULAI_Click() LAMA.Text = "" TARIF.Text = "" JUMLAH.Text = "" LAMA.SetFocusEnd Sub
Private Sub CMDSELESAI_Click() EndEnd Sub
Private Sub LAMA_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text) If JUMLAH > 200000 Then DIS.Text = Val(JUMLAH.Text) * 0.1 Else DIS.Text = 0 End If BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Private Sub TARIF_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text) If JUMLAH > 200000 Then DIS.Text = Val(JUMLAH.Text) * 0.1 Else DIS.Text = 0 End If BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
2
Pemrograman VB 6.0Freddy Heriyanto
Latihan 1-3: Pencabangan IF Beberapa Pernyataan
Algoritma
Output('LAMA MENGINAP')Input(LAMA)Output('HARGA KAMAR/HARI')Input(TARIF)JUMLAHLAMA*TARIFIf JUMLAH>200000 Then DISJUMLAH*0.10 KDIS"DAPAT DISKON"Else DIS0 KDIS"TAK DISKON"EndifBAYARJUMLAH-DISOutput(JUMLAH)Output(KDIS)Output(DIS)Output(BAYAR)
Listing Program
Option Explicit
Private Sub CMDMULAI_Click() LAMA.Text = "" TARIF.Text = "" JUMLAH.Text = "" DIS.Text = "" KDIS.Text = "" BAYAR.Text = "" LAMA.SetFocusEnd Sub
Private Sub CMDSELESAI_Click() EndEnd Sub
Private Sub LAMA_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text) If JUMLAH > 200000 Then DIS.Text = Val(JUMLAH.Text) * 0.1 KDIS.Text = "DAPAT DISKON" Else DIS.Text = 0 KDIS.Text = "TAK DISKON" End If BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
3
Pemrograman VB 6.0Freddy Heriyanto
Private Sub TARIF_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text) If JUMLAH > 200000 Then DIS.Text = Val(JUMLAH.Text) * 0.1 KDIS.Text = "DAPAT DISKON" Else DIS.Text = 0 KDIS.Text = "TAK DISKON" End If BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Latihan 1-4: Pencabangan dengan Beberapa IF
Algoritma
Output('LAMA MENGINAP')Input(LAMA)Output('HARGA KAMAR/HARI')Input(TARIF)JUMLAHLAMA*TARIFIf (DIS=0.3) Then DISJUMLAH*0.3 KDIS"DAPAT DISKON”Else If (DIS=0.2) Then DISJUMLAH*0.2 KDIS"DAPAT DISKON" Else If (DIS=0.1) Then DISJUMLAH*0.1 KDIS"DAPAT DISKON" Else DIS0 KDIS"TAK DISKON" Endif EndifEndif
If (DIS30True) or (DIS20True) or (DIS10True) Then
4
Pemrograman VB 6.0Freddy Heriyanto
KDIS="DAPAT DISKON"Else KDIS"TAK DISKON"EndifBAYARJUMLAH-DISOutput(JUMLAH)Output(KDIS)Output(DIS)Output(BAYAR)
Listing Program
Option Explicit
Private Sub CMDMULAI_Click() LAMA.Text = "" TARIF.Text = "" JUMLAH.Text = "" DIS.Text = "" KDIS.Text = "" BAYAR.Text = "" LAMA.SetFocusEnd Sub
Private Sub CMDSELESAI_Click() EndEnd Sub
Private Sub DIS30_Click() DIS.Text = Val(JUMLAH.Text) * 0.3 BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Private Sub DIS20_Click() DIS.Text = Val(JUMLAH.Text) * 0.2 BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Private Sub DIS10_Click() DIS.Text = Val(JUMLAH.Text) * 0.1 BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Private Sub DIS0_Click() DIS.Text = Val(JUMLAH.Text) * 0 BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Private Sub LAMA_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text) If DIS30.Value Then DIS.Text = Val(JUMLAH.Text) * Val(DIS.Text) Else If DIS20.Value Then DIS.Text = Val(JUMLAH.Text) * Val(DIS.Text) Else If DIS10.Value Then DIS.Text = Val(JUMLAH.Text) * Val(DIS.Text) Else DIS.Text = 0 End If End If End If
If (DIS30.Value) Or (DIS20.Value) Or (DIS10.Value) Then
5
Pemrograman VB 6.0Freddy Heriyanto
KDIS.Text = "DAPAT DISKON" Else KDIS.Text = "TAK DISKON" End If BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
Private Sub TARIF_Change() JUMLAH.Text = Val(LAMA.Text) * Val(TARIF.Text) If DIS30.Value Then DIS.Text = Val(JUMLAH.Text) * Val(DIS.Text) Else If DIS20.Value Then DIS.Text = Val(JUMLAH.Text) * Val(DIS.Text) Else If DIS10.Value Then DIS.Text = Val(JUMLAH.Text) * Val(DIS.Text) Else DIS.Text = 0 End If End If End If If (DIS30.Value) Or (DIS20.Value) Or (DIS10.Value) Then KDIS.Text = "DAPAT DISKON" Else KDIS.Text = "TAK DISKON" End If BAYAR.Text = Val(JUMLAH.Text) - Val(DIS.Text)End Sub
6
Pemrograman VB 6.0Freddy Heriyanto
BAB 2MANAJEMEN DATABASEDENGAN STRATEGI DAO
Sebelum mengerjakan latihan-latihan pada Bab 2 ini, terlebih dahulu buatlah sebuah file data MS-Acess bernama Pembelian.mdb yang berisi tabel-tabel sebagai berikut:
Table : BARANGIndex : KDBRG (Primary Key)FIELD NAME TYPE WIDTHKDBRG Text 6NMBRG Text 30SATUAN Text 6UKURAN Text 15HARGA Numb
erSingle
Table : SUPPLIERIndex : KDSPL (Primary Key)FIELD NAME TYPE WIDTHKDSPL Text 5NMSPL Text 30ALAMAT Text 30KOTA Text 20HUBUNGAN Text 30PHONE Text 15
Table : BELIIndex : NOFAK (Relative Key)FIELD NAME TYPE WIDTHNOFAK Text 10TGFAK Date/
Time-
KDBRG Text 6KDSPL Text 5BANYAK Number SingleHARGA Number Single
1. Menginput Data BarangAlgoritma:
Buka tabel BarangInput KodeBarangJika Panjang KodeBarang tak lebih kecil dari 6 Cari KodeBarang di tabel Barang Jika ketemu Tampilkan field-fieldnya Keluar Jika tak ketemu Masukkan data-data barangJika panjang KodeBarang lebih kecil dari 6 Keluar
7
Pemrograman VB 6.0Freddy Heriyanto
Listing Program:
Dim dbSaya As DatabaseDim rsBarang As Recordset
Private Sub Form_Load() Me.Caption = "Input Data Barang" Set dbSaya = OpenDatabase("c:\LatDAO\Pembelian.mdb") Set rsBarang = dbSaya.OpenRecordset("Barang") rsBarang.Index = "KDBRG" cmbSatuan.AddItem "PCS" cmbSatuan.AddItem "PAK" cmbSatuan.AddItem "BATANG" txtKdBrg.MaxLength = 6 Kosongkan Pasif ReverseEnd Sub
Private Sub Kosongkan() txtNmBrg.Text = "" cmbSatuan.Text = "" txtHarga.Text = ""End Sub
Private Sub Isikan() txtNmBrg.Text = rsBarang!NMBRG cmbSatuan.Text = rsBarang!SATUAN txtHarga.Text = rsBarang!HARGAEnd Sub
Private Sub Pasif() txtNmBrg.Enabled = False cmbSatuan.Enabled = False txtHarga.Enabled = False SimpanBtn.Enabled = FalseEnd Sub
Private Sub Aktif() txtNmBrg.Enabled = True cmbSatuan.Enabled = True txtHarga.Enabled = True SimpanBtn.Enabled = TrueEnd Sub
Private Sub Reverse() txtNmBrg.BackColor = &H8000000F cmbSatuan.BackColor = &H8000000F txtHarga.BackColor = &H8000000F
8
Pemrograman VB 6.0Freddy Heriyanto
End Sub
Private Sub Normal() txtNmBrg.BackColor = &H80000005 cmbSatuan.BackColor = &H80000005 txtHarga.BackColor = &H80000005End Sub
Private Sub txtKdBrg_Change() Dim Panjang As Byte Panjang = Len(txtKdBrg.Text) If Panjang < 6 Then Exit Sub rsBarang.Seek "=", txtKdBrg.Text If rsBarang.NoMatch Then Kosongkan Aktif Normal txtNmBrg.SetFocus Exit Sub End If Isikan Pasif Reverse txtKdBrg.SetFocus SendKeys ("{Home}+{End}")End Sub
Private Sub SimpanBtn_Click() rsBarang.AddNew rsBarang!KDBRG = txtKdBrg.Text rsBarang!NMBRG = txtNmBrg.Text rsBarang!SATUAN = cmbSatuan.Text rsBarang!HARGA = Val(txtHarga.Text) rsBarang.Update MsgBox "Data telah disimpan", vbInformation, "Sukses!" BatalBtn_ClickEnd Sub
Private Sub BatalBtn_Click() Kosongkan Pasif Reverse txtKdBrg.Text = "" txtKdBrg.SetFocusEnd Sub
Private Sub CloseBtn_Click() dbSaya.Close EndEnd Sub
Private Sub txtKdBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
Private Sub txtNmBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
Private Sub txtHarga_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc(0) And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then KeyAscii = 0 End IfEnd Sub
Soal:
9
Pemrograman VB 6.0Freddy Heriyanto
Buatlah form dan code untuk menginput data Supplier !
2. Mengedit Data BarangAlgoritma:
Buka tabel BarangInput kodebarangJika panjang kodebarang tak lebih kecil 5 Cari kodebarang di tabel Barang Jika ditemukan Tampilkan field-fieldnya untuk diedit Keluar Jika tak ditemukan KeluarJika panjang kodebarang lebih kecil 5 KeluarTutup file tabel barang
Listing Program:
Dim dbSaya As DatabaseDim rsBarang As Recordset
Private Sub Form_Load() Me.Caption = "Mengedit Data Barang" Set dbSaya = OpenDatabase("c:\LatDAO\Pembelian.mdb") Set rsBarang = dbSaya.OpenRecordset("Barang") rsBarang.Index = "KDBRG" cmbSatuan.AddItem "PCS" cmbSatuan.AddItem "PAK" cmbSatuan.AddItem "BATANG" txtKdBrg.MaxLength = 6 Kosongkan Pasif ReverseEnd Sub
Private Sub Kosongkan() txtNmBrg.Text = "" cmbSatuan.Text = "" txtHarga.Text = ""End Sub
Private Sub Isikan() txtNmBrg.Text = rsBarang!NMBRG cmbSatuan.Text = rsBarang!SATUAN txtHarga.Text = rsBarang!HARGAEnd Sub
10
Pemrograman VB 6.0Freddy Heriyanto
Private Sub Pasif() txtNmBrg.Enabled = False cmbSatuan.Enabled = False txtHarga.Enabled = False UpdateBtn.Enabled = FalseEnd Sub
Private Sub Aktif() txtNmBrg.Enabled = True cmbSatuan.Enabled = True txtHarga.Enabled = True UpdateBtn.Enabled = TrueEnd Sub
Private Sub Reverse() txtNmBrg.BackColor = &H8000000F cmbSatuan.BackColor = &H8000000F txtHarga.BackColor = &H8000000FEnd Sub
Private Sub Normal() txtNmBrg.BackColor = &H80000005 cmbSatuan.BackColor = &H80000005 txtHarga.BackColor = &H80000005End Sub
Private Sub txtKdBrg_Change() Dim Panjang As Byte Panjang = Len(txtKdBrg.Text) If Panjang < 6 Then Exit Sub rsBarang.Seek "=", txtKdBrg.Text If rsBarang.NoMatch Then Kosongkan Reverse Pasif MsgBox "Kode : " + txtKdBrg.Text + " tidak ditemukan", vbInformation, "Pencarian" SendKeys ("{Home}+{End}") Exit Sub End If Isikan Aktif Normal txtNmBrg.SetFocusEnd Sub
Private Sub UpdateBtn_Click() rsBarang.Edit rsBarang!KDBRG = txtKdBrg.Text rsBarang!NMBRG = txtNmBrg.Text rsBarang!SATUAN = cmbSatuan.Text rsBarang!HARGA = Val(txtHarga.Text) rsBarang.Update MsgBox "Data telah diupdate", vbInformation, "Sukses!" BatalBtn_ClickEnd Sub
Private Sub BatalBtn_Click() Kosongkan Pasif Reverse txtKdBrg.Text = "" txtKdBrg.SetFocusEnd Sub
Private Sub CloseBtn_Click() dbSaya.Close
11
Pemrograman VB 6.0Freddy Heriyanto
EndEnd SubPrivate Sub txtKdBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
Private Sub txtNmBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
Private Sub txtHarga_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc(0) And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then KeyAscii = 0 End IfEnd Sub
Soal:Buatlah form dan code untuk mengedit data Supplier !
3. Menghapus Data BarangAlgoritma:
Buka tabel BarangInput kodebarangJika panjang kodebarang tak lebih kecil 5 Cari kodebarang di tabel Barang Jika ditemukan Tampilkan field-fieldnya untuk dihapus Keluar Jika tak ditemukan KeluarJika panjang kodebarang lebih kecil 5 KeluarTutup file tabel barang
Listing Program:
Dim dbSaya As DatabaseDim rsBarang As Recordset
Private Sub Form_Load() Me.Caption = "Menghapus Data Barang" Set dbSaya = OpenDatabase("c:\LatDAO\Pembelian.mdb") Set rsBarang = dbSaya.OpenRecordset("Barang") rsBarang.Index = "KDBRG" cmbSatuan.AddItem "PCS"
12
Pemrograman VB 6.0Freddy Heriyanto
cmbSatuan.AddItem "PAK" cmbSatuan.AddItem "BATANG" txtKdBrg.MaxLength = 6 Kosongkan Pasif ReverseEnd SubPrivate Sub Kosongkan() txtNmBrg.Text = "" cmbSatuan.Text = "" txtHarga.Text = ""End Sub
Private Sub Isikan() txtNmBrg.Text = rsBarang!NMBRG cmbSatuan.Text = rsBarang!SATUAN txtHarga.Text = rsBarang!HARGAEnd Sub
Private Sub Pasif() txtNmBrg.Enabled = False cmbSatuan.Enabled = False txtHarga.Enabled = False HapusBtn.Enabled = FalseEnd Sub
Private Sub Aktif() txtNmBrg.Enabled = True cmbSatuan.Enabled = True txtHarga.Enabled = True HapusBtn.Enabled = TrueEnd Sub
Private Sub Reverse() txtNmBrg.BackColor = &H8000000F cmbSatuan.BackColor = &H8000000F txtHarga.BackColor = &H8000000FEnd Sub
Private Sub Normal() txtNmBrg.BackColor = &H80000005 cmbSatuan.BackColor = &H80000005 txtHarga.BackColor = &H80000005End Sub
Private Sub txtKdBrg_Change() Dim Panjang As Byte Panjang = Len(txtKdBrg.Text) If Panjang < 6 Then Exit Sub rsBarang.Seek "=", txtKdBrg.Text If rsBarang.NoMatch Then Kosongkan Reverse Pasif MsgBox "Kode : " + txtKdBrg.Text + " tidak ditemukan", vbInformation, "Pencarian" SendKeys ("{Home}+{End}") Exit Sub End If Isikan Pasif NormalEnd Sub
Private Sub HapusBtn_Click() rsBarang.Delete MsgBox "Data telah diHapus", vbInformation, "Sukses!" BatalBtn_ClickEnd Sub
13
Pemrograman VB 6.0Freddy Heriyanto
Private Sub BatalBtn_Click() Kosongkan Pasif Reverse txtKdBrg.Text = "" txtKdBrg.SetFocusEnd Sub
Private Sub CloseBtn_Click() dbSaya.Close EndEnd Sub
Private Sub txtKdBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
Private Sub txtNmBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
Private Sub txtHarga_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc(0) And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then KeyAscii = 0 End IfEnd Sub
Soal:Buatlah form dan code untuk menghapus data Supplier !
4. Melihat Data Barang
14
Pemrograman VB 6.0Freddy Heriyanto
Listing Program:
Private Sub CariBtn_Click() Dim MCari As String Dim Panjang As Byte Panjang = Len(txtNmBrg.Text) Data1.Recordset.MoveFirst Do While Not Data1.Recordset.EOF MCari = UCase(Left(Data1.Recordset!NMBRG, Panjang)) If MCari = Trim(UCase(txtNmBrg.Text)) Then Exit Sub Else Data1.Recordset.MoveNext End If LoopEnd Sub
Private Sub CloseBtn_Click() EndEnd Sub
Private Sub txtNmBrg_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then CariBtn_Click End IfEnd Sub
Soal:Buatlah form dan code untuk melihat data Supplier !
5. Mencetak Data Barang (Layar dan Printer)
Siapkan juga form baru dengan nama Layar sebagai tempat untuk menampilkan data di layar monitor.
15
Pemrograman VB 6.0Freddy Heriyanto
Listing Program:
Dim Switch, No As Integer
Private Sub LayarBtn_Click() No = 1 Switch = 1 Layar.Show CetakLayarEnd Sub
Private Sub PrinterBtn_Click() No = 1 Switch = 1 CetakPrinter Printer.EndDocEnd Sub
Private Sub CloseBtn_Click() EndEnd Sub
Private Sub CetakLayar() Data1.Recordset.MoveFirst Do While Not Data1.Recordset.EOF If Switch = 1 Then Layar.FontBold = True Layar.FontSize = 10 Layar.Print Layar.Print Tab(20); "DATA BARANG CV TI-UNIA" Layar.FontBold = False Layar.FontSize = 10 Layar.Print Tab(25); "Jl. Jatinegara Barat No.144" Layar.Print Tab(30); "Jakarta Timur" Layar.Print String$(73, "=") Layar.Print Tab(3); "NO"; Layar.Print Tab(9); "KODE BRG"; Layar.Print Tab(21); "NAMA BARANG"; Layar.Print Tab(50); "SATUAN"; Layar.Print Tab(65); "HARGA" Layar.FontBold = False Layar.Print String$(73, "=") Switch = 0 End If Layar.Print Tab(4); Format(No, "###") + "."; Layar.Print Tab(11); Data1.Recordset!KDBRG; Layar.Print Tab(21); Data1.Recordset!NMBRG; Layar.Print Tab(50); Data1.Recordset!SATUAN; Layar.Print Tab(66); RKanan(Data1.Recordset!HARGA, "###,###") Data1.Recordset.MoveNext No = No + 1 Loop Layar.Print String$(73, "=")
16
Pemrograman VB 6.0Freddy Heriyanto
End Sub
Private Sub CetakPrinter() Printer.CurrentX = 0 Printer.CurrentY = 0 Data1.Recordset.MoveFirst Do While Not Data1.Recordset.EOF If Switch = 1 Then Printer.FontBold = True Printer.FontSize = 10 Printer.Print Printer.Print Tab(20); "DATA BARANG CV TI-UNIA" Printer.FontBold = False Printer.FontSize = 10 Printer.Print Tab(25); "Jl. Jatinegara Barat No.144" Printer.Print Tab(30); "Jakarta Timur" Printer.Print String$(73, "=") Printer.Print Tab(3); "NO"; Printer.Print Tab(9); "KODE BRG"; Printer.Print Tab(21); "NAMA BARANG"; Printer.Print Tab(50); "SATUAN"; Printer.Print Tab(65); "HARGA" Printer.FontBold = False Printer.Print String$(73, "=") Switch = 0 End If Printer.Print Tab(4); Format(No, "###") + "."; Printer.Print Tab(11); Data1.Recordset!KDBRG; Printer.Print Tab(21); Data1.Recordset!NMBRG; Printer.Print Tab(50); Data1.Recordset!SATUAN; Printer.Print Tab(66); RKanan(Data1.Recordset!HARGA, "###,###") Data1.Recordset.MoveNext No = No + 1 Loop Printer.Print String$(73, "=")End Sub
Private Function RKanan(NData, CFormat) As String RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - Len(RKanan)) + RKananEnd Function
Soal:Buatlah form dan code untukmencetak data Supplier !
6. Menginput Data Beli Sebaiknya saudara telah memiliki beberapa data gambar berekstensi BMP
dengan nama file sesuai dengan isi Kode Barang. Dan gunakan 3 buah tabel yaitu: tabel Barang, Supplier dan Faktur.
17
Pemrograman VB 6.0Freddy Heriyanto
18
Pemrograman VB 6.0Freddy Heriyanto
Listing Program:
Dim wrkJet As WorkspaceDim dbSaya As DatabaseDim rsSup As RecordsetDim rsBrg As RecordsetDim rsBeli As Recordset
Private Sub Form_Load() Set wrkJet = CreateWorkspace("", "Admin", "") Set dbSaya = OpenDatabase("c:\LatDAO\Pembelian.mdb") Set rsSup = dbSaya.OpenRecordset("Supplier") Set rsBrg = dbSaya.OpenRecordset("Barang") Set rsBeli = dbSaya.OpenRecordset("Beli") rsSup.Index = "KDSPL" rsBrg.Index = "KDBRG" txtKdSpl.MaxLength = 5 txtKdBrg.MaxLength = 6 KosongkanEnd Sub
Private Sub Kosongkan() txtNoFak.Text = "" txtTgFak.Text = "" txtKdSpl.Text = "" lblNmSpl.Caption = "" txtKdBrg.Text = "" lblNmBrg.Caption = "" txtHarga.Text = "" txtBanyak.Text = "" lblJumlah.Caption = "" Gambar.Picture = LoadPicture("")End Sub
Private Sub txtTgFak_LostFocus() On Error GoTo SalahTgl CekTgl = CDate(txtTgFak.Text) On Error GoTo 0 Exit SubSalahTgl: MsgBox "Format : mm/dd/yyyy" + Chr(13) + "Contoh : 01/21/2001", vbInformation, "Informasi" txtTgFak.SetFocus SendKeys ("{Home}+{End}")End Sub
Private Sub txtKdSpl_Change() Dim Panjang As Byte Panjang = Len(txtKdSpl.Text) If Panjang < 5 Then Exit Sub rsSup.Seek "=", txtKdSpl.Text If rsSup.NoMatch Then MsgBox "Kode Supplier : " + txtKdSpl.Text + " tidak ada", vbInformation, "Pencarian" txtKdSpl.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If lblNmSpl.Caption = rsSup!NMSPL txtKdBrg.SetFocusEnd Sub
Private Sub txtKdBrg_Change() Dim NamaGambar As String Dim Panjang As Byte NamaGambar = "c:\LatDAO\" + txtKdBrg.Text + ".BMP" Panjang = Len(txtKdBrg.Text)
19
Pemrograman VB 6.0Freddy Heriyanto
If Panjang < 6 Then Exit Sub rsBrg.Seek "=", txtKdBrg.Text If rsBrg.NoMatch Then MsgBox "Kode Barang : " + txtKdBrg.Text + " tidak ditemukan", vbInformation, "Pencarian" txtKdBrg.SetFocus SendKeys ("{Home}+{End}") Gambar.Picture = LoadPicture("") Exit Sub End If lblNmBrg.Caption = rsBrg!NMBRG txtHarga.SetFocus On Error GoTo TakAdaGambar Gambar.Picture = LoadPicture(NamaGambar) On Error GoTo 0 Exit SubTakAdaGambar: Gambar.Picture = LoadPicture("")End Sub
Private Sub txtHarga_Change() Dim MJumlah As Single MJumlah = Val(txtHarga.Text) * Val(txtBanyak.Text) lblJumlah.Caption = Format(MJumlah, "Rp ###,###,###") + ",-"End Sub
Private Sub txtBanyak_Change() Dim MJumlah As Single MJumlah = Val(txtHarga.Text) * Val(txtBanyak.Text) lblJumlah.Caption = Format(MJumlah, "Rp ###,###,###") + ",-"End Sub
Private Sub SimpanBtn_Click() If txtNoFak.Text = "" Then Exit Sub If txtTgFak.Text = "" Then Exit Sub If txtKdSpl.Text = "" Then Exit Sub If txtKdBrg.Text = "" Then Exit Sub If txtHarga.Text = "" Then Exit Sub If txtBanyak.Text = "" Then Exit Sub With rsBeli .AddNew !NOFAK = txtNoFak.Text !TGFAK = txtTgFak.Text !KDSPL = txtKdSpl.Text !KDBRG = txtKdBrg.Text !HARGA = Val(txtHarga.Text) !BANYAK = Val(txtBanyak.Text) .Update End With MsgBox "Data telah disimpan", vbInformation, "Sukses" BatalBtn_ClickEnd Sub
Private Sub BatalBtn_Click() Kosongkan txtNoFak.SetFocusEnd Sub
Private Sub CloseBtn_Click() dbSaya.Close EndEnd Sub
20
Pemrograman VB 6.0Freddy Heriyanto
BAB 3MANAJEMEN DATABASEDENGAN STRATEGI ADO
1. Menginput Data Sebelum mengerjakan Latihan 1, terlebih dahulu buatlah sebuah file data MS-
Acess bernama Mahasiswa.mdb yang berisi satu buah tabel:
Table : PersonalFIELD NAME TYPE WIDTHNIM Text 7NMMHS Text 30FAKULTAS Text 15
Listing Program:
Dim MyDB As New ADODB.ConnectionDim Cmd As New ADODB.CommandDim rsPersonal As New ADOR.Recordset
Private Sub Form_Load() Me.Caption = "Menambah Data Mahasiswa" MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\LatAdo\Mahasiswa.mdb", "Admin", "" Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Personal" rsPersonal.Open Cmd, , adOpenDynamic, adLockOptimistic Kosongkan Pasif Reverse cmbFakultas.AddItem "Ekonomi" cmbFakultas.AddItem "Teknik" cmbFakultas.AddItem "ISIP" cmbFakultas.AddItem "Hukum" cmbFakultas.AddItem "Psikologi" cmbFakultas.AddItem "Agama Islam" txtNIM.MaxLength = 7End Sub
Private Sub Form_Unload(Cancel As Integer) MyDB.CloseEnd SubPrivate Sub Kosongkan()
21
Pemrograman VB 6.0Freddy Heriyanto
txtNmMhs.Text = "" cmbFakultas.Text = ""End Sub
Private Sub Pasif() txtNmMhs.Enabled = False cmbFakultas.Enabled = False SimpanBtn.Enabled = FalseEnd Sub
Private Sub Aktif() txtNmMhs.Enabled = True cmbFakultas.Enabled = True SimpanBtn.Enabled = TrueEnd Sub
Private Sub Reverse() txtNmMhs.BackColor = &H8000000F cmbFakultas.BackColor = &H8000000FEnd Sub
Private Sub Normal() txtNmMhs.BackColor = &H80000005 cmbFakultas.BackColor = &H80000005End Sub
Private Sub txtNIM_Change() Dim Panjang As Byte Panjang = Len(txtNIM.Text) If Panjang < 7 Then Exit Sub If Not (rsPersonal.BOF Or rsPersonal.EOF) Then rsPersonal.MoveFirst rsPersonal.Find "NIM ='" + txtNIM.Text + "'" End If If rsPersonal.EOF Then Kosongkan Aktif Normal txtNmMhs.SetFocus Exit Sub End If Pasif Reverse txtNmMhs.Text = rsPersonal!NMMHS cmbFakultas.Text = rsPersonal!FAKULTASEnd Sub
Private Sub SimpanBtn_Click() If txtNIM.Text = "" Or txtNmMhs.Text = "" Or cmbFakultas.Text = "" Then Exit Sub End If With rsPersonal .AddNew !NIM = txtNIM.Text !NMMHS = txtNmMhs.Text !FAKULTAS = cmbFakultas.Text .Update End With MsgBox "Data telah tersimpan", vbInformation, "Sukses!" BatalBtn_ClickEnd Sub
22
Pemrograman VB 6.0Freddy Heriyanto
Private Sub BatalBtn_Click() Kosongkan Pasif Reverse txtNIM.Text = "" txtNIM.SetFocusEnd Sub
Private Sub CloseBtn_Click() Unload Me EndEnd Sub
Soal:Buatlah form-form dan code-code untuk mengedit, menghapus, dan mencetak
!
2. Mencari Data Tingkat LanjutPada Latihan ini saudara akan diperkenalkan cara mencari data tingkat lanjut.
Database dan tabel yang digunakan adalah dengan memanfaatkan sampel database yang dimiliki oleh visual basic yaitu Biblio.mdb yang disimpan di folder C:\Program Files\Microsoft Visual Studio\Vb98.
Listing Program:
Dim MyDB As New ADODB.ConnectionDim Cmd As New ADODB.CommandDim RsJudul As New ADOR.RecordsetDim Ketemu As Integer
Private Sub Form_Load() MyDB.Provider = "Microsoft.Jet.OLEDB.3.51" MyDB.CursorLocation = adUseClient MyDB.Open "C:\Program Files\Microsoft Visual Studio\Vb98\Biblio.MDB", "Admin", "" Cmd.CommandText = "SELECT * FROM Titles" Set Cmd.ActiveConnection = MyDB Set RsJudul = Cmd.ExecuteEnd Sub
23
MENCARI DATA BUKU
Kata Kunci
Cari
lblKet
Daftar
Pemrograman VB 6.0Freddy Heriyanto
Private Sub CariBtn_Click() Ketemu = 0 Dim KataKunci As String KataKunci = Text1.Text If KataKunci = "" Then Text1.SetFocus Exit Sub End If Daftar.Clear LblKet.Caption = "" RsJudul.MoveFirst RsJudul.Find ("Title like '*" + KataKunci + "*'") If RsJudul.EOF Then MsgBox "Tidak ada judul buku yang dicari", vbInformation, "Ora Ono!" Exit Sub End If Daftar.AddItem RsJudul!Title Ketemu = Ketemu + 1 RsJudul.MoveNext Do While Not RsJudul.EOF RsJudul.Find ("Title like '*" + KataKunci + "*'") If RsJudul.EOF Then Exit Do Daftar.AddItem RsJudul!Title Ketemu = Ketemu + 1 RsJudul.MoveNext Loop LblKet.Caption = "Ada " + Str(Ketemu) + " judul buku yang berhubungan dengan kata " + KataKunci + "." RsJudul.MoveFirst
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then CariBtn_ClickEnd Sub
3. Aplikasi Navigasi dan Modifikasi DataBuatlah form untuk aplikasi navigasi dan modifikasi data dengan nama
Accs_Mhs. File datatabase adalah Mahasiswa.mdb dengan Tabel Personal seperti pada Latihan 1.
24
Pemrograman VB 6.0Freddy Heriyanto
Listing Program:
Dim MyDB As New ADODB.ConnectionDim Cmd As New ADODB.CommandDim rsPersonal As New ADOR.RecordsetDim Jwb As VbMsgBoxResult
Private Sub Form_Load() Me.Caption = "Mengakses Data Mahasiswa" cmbFakultas.AddItem "Ekonomi" cmbFakultas.AddItem "Teknik" cmbFakultas.AddItem "ISIP" cmbFakultas.AddItem "Hukum" cmbFakultas.AddItem "Psikologi" cmbFakultas.AddItem "Agama Islam" MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\LatAdo\Mahasiswa.mdb", "Admin", "" Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Personal" rsPersonal.Open Cmd, , adOpenDynamic, adLockOptimistic If Not (rsPersonal.BOF Or rsPersonal.EOF) Then rsPersonal.MoveFirst Tampil TambahBtn.Enabled = False Exit Sub End If lblRec.Caption = ""End Sub
Private Sub Form_Unload(Cancel As Integer) MyDB.CloseEnd Sub
Private Sub Tampil() If rsPersonal.BOF Or rsPersonal.EOF Then Exit Sub End If lblRec.Caption = "Rec." + CStr(rsPersonal.AbsolutePosition) + "/" + CStr(rsPersonal.RecordCount) With rsPersonal txtNIM.Text = !NIM txtNmMhs.Text = !NMMHS cmbFakultas.Text = !FAKULTAS End With
25
Pemrograman VB 6.0Freddy Heriyanto
End Sub
Private Sub Kosong() txtNIM.Text = "" txtNmMhs.Text = "" cmbFakultas.Text = ""End Sub
Private Sub CloseBtn_Click() Unload Me EndEnd Sub
Private Sub AkhirBtn_Click() TambahBtn.Enabled = False HapusBtn.Enabled = True UpdateBtn.Enabled = True If rsPersonal.BOF And rsPersonal.EOF Then Exit Sub End If rsPersonal.MoveLast TampilEnd SubPrivate Sub MundurBtn_Click() TambahBtn.Enabled = False HapusBtn.Enabled = True UpdateBtn.Enabled = True If rsPersonal.BOF And rsPersonal.EOF Then Exit Sub End If If rsPersonal.BOF Then rsPersonal.MoveFirst Else rsPersonal.MovePrevious End If TampilEnd Sub
Private Sub MajuBtn_Click() TambahBtn.Enabled = False HapusBtn.Enabled = True UpdateBtn.Enabled = True If rsPersonal.BOF And rsPersonal.EOF Then Exit Sub End If If rsPersonal.EOF Then rsPersonal.MoveLast Else rsPersonal.MoveNext End If TampilEnd Sub
Private Sub ResetBtn_Click() Kosong lblRec.Caption = "" txtNIM.SetFocus TambahBtn.Enabled = True UpdateBtn.Enabled = False HapusBtn.Enabled = FalseEnd Sub
Private Sub HapusBtn_Click() If rsPersonal.BOF Or rsPersonal.EOF Then Exit Sub Jwb = MsgBox("Anda yakin akan menghapus record ini?", vbYesNo, "Konfirmasi") If Jwb = vbYes Then rsPersonal.Delete
26
Pemrograman VB 6.0Freddy Heriyanto
Kosong End IfEnd Sub
Private Sub TambahBtn_Click() Dim Cari As String If txtNIM.Text = "" Or txtNmMhs.Text = "" Or cmbFakultas.Text = "" Then Exit Sub End If Cari = txtNIM.Text If Not (rsPersonal.BOF Or rsPersonal.EOF) Then rsPersonal.MoveFirst rsPersonal.Find "NIM ='" + Cari + "'" If Not rsPersonal.EOF Then MsgBox "NIM : " + Cari + " sudah ada, Gantilah!", vbInformation, "Pencarian" txtNIM.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If End If Jwb = MsgBox("Data yang anda isikan sudah benar?", vbYesNo, "Konfirmasi") If Jwb = vbNo Then txtNIM.SetFocus Exit Sub End If With rsPersonal .AddNew !NIM = txtNIM.Text !NMMHS = txtNmMhs.Text !FAKULTAS = cmbFakultas.Text .Update End With ResetBtn_ClickEnd Sub
Private Sub UpdateBtn_Click() Dim Cari, Krit As String If rsPersonal.BOF Or rsPersonal.EOF Then Exit Sub Cari = txtNIM.Text Krit = rsPersonal!NIM If Not (Cari = Krit) Then rsPersonal.MoveFirst rsPersonal.Find "NIM ='" + Cari + "'" If Not rsPersonal.EOF Then MsgBox "NIM : " + Cari + " sudah ada, gantilah!", vbInformation, "Pencarian" txtNIM.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If rsPersonal.MoveFirst rsPersonal.Find "NIM ='" + Krit + "'" End If With rsPersonal !NIM = txtNIM.Text !NMMHS = txtNmMhs.Text !FAKULTAS = cmbFakultas.Text .Update End With MsgBox "Data telah diupdate", vbInformation, "Sukses"End Sub
Private Sub AwalBtn_Click() TambahBtn.Enabled = False HapusBtn.Enabled = True UpdateBtn.Enabled = True
27
Pemrograman VB 6.0Freddy Heriyanto
If rsPersonal.BOF And rsPersonal.EOF Then Exit Sub End If rsPersonal.MoveFirst TampilEnd Sub
28
Pemrograman VB 6.0Freddy Heriyanto
BAB 4MANAJEMEN DATABASE JARINGAN
DENGAN STRATEGI ADO
Sebelum saudara memulai latihan pada Bab 4 ini siapkan file database dengan menggunakan SQL Server versi 7.0. Untuk itu saudara diharapkan sudah mampu membuat dan mengelola database dengan SQL Server. Jika jaringannya tidak ada atau mungkin SQL Servernya belum ada. Anda masih bisa mencoba dengan menggunakan file database dari MS-Acces. Penulis akan memberikan catatan-catatan pada modul dan program utama, instruksi apa saja yang untuk Server dan mana yang bukan.
File database : Bank.mds (untuk SQL server) atau Bank.mdb (untuk MS-Access)
Tabel Profile:Field Name
Type Width
NoRekNamaAlamatKotaPhone
TextTextTextTextText
1530302010
Tabel Saving:Field Name
Type Width
NoNoRekSaldo
TextTextDouble
1015
Tabel Transaksi:Field Name
Type Width
TidNoRekTglJenisJumlah
TextTextDateTextDouble
815
6
Module1Global MyDB As New ADODB.ConnectionGlobal Cmd As New ADODB.CommandGlobal RsProfile As New ADOR.RecordsetGlobal RsSaving As New ADOR.RecordsetGlobal RsTransaksi As New ADOR.Recordset
Global Jumlah As SingleGlobal Waktu As DateGlobal JmlNasabah As LongGlobal JudulTarik As String
Global Stat As BooleanGlobal User As StringGlobal Pass As String
29
Pemrograman VB 6.0Freddy Heriyanto
'Untuk Multi User:'--------------------------------------------------------------------------'Public Function BukaDB(userx As String, passx As String) As Boolean' MyDB.Provider = "SQLOLEDB"' MyDB.CursorLocation = adUseServer' MyDB.Open "Server=FREDDY;Database=Bank;UID=" + userx + ";PWD=" + passx' BukaDB = True'End Function'-------------------------------------------------------------------------
UtamaFrm
Const judul As String = "Bank Freddy Teller - "
Private Sub Timer1_Timer() If Stat = False Then Me.Caption = judul + CStr(Now) + ".Locked!" Else 'Untuk Multi User : '------------------------------------------- 'Me.Caption = judul + CStr(Now) + "." + User 'Untuk Single User : '---------------------------- Me.Caption = judul + CStr(Now) End IfEnd Sub
Private Sub Form_Load() Me.Show Me.Caption = judul + CStr(Now) + ".Locked!" Stat = False KunciEnd Sub
Private Sub Kunci()
30
Pemrograman VB 6.0Freddy Heriyanto
NewBtn.Enabled = False LogBtn.Enabled = False TotalBtn.Enabled = False LogInBtn.Enabled = True LogOutBtn.Enabled = False
SetorBtn.Enabled = False TarikBtn.Enabled = False TransferBtn.Enabled = False AirBtn.Enabled = False ListrikBtn.Enabled = False HPPascaBtn.Enabled = FalseEnd Sub
Private Sub Lepas() NewBtn.Enabled = True LogBtn.Enabled = True TotalBtn.Enabled = True LogInBtn.Enabled = False LogOutBtn.Enabled = True SetorBtn.Enabled = True TarikBtn.Enabled = True TransferBtn.Enabled = True AirBtn.Enabled = True ListrikBtn.Enabled = True HPPascaBtn.Enabled = TrueEnd Sub
Private Sub LogInBtn_Click() '--- Untuk Multi User --- 'User = InputBox("Masukkan user anda", "Input user") 'Pass = InputBox("Masukkan password" + User, "Input Password" + User) 'If User = "" Then Exit Sub 'If Pass = "" Then Exit Sub 'Stat = BukaDB(User, Pass) '--- Untuk Single User --- PW = InputBox("Masukkan password anda", "Input Password") If UCase(PW) = "GUE" Then Stat = True End If If Stat = False Then Kunci Else Lepas End IfEnd Sub
Private Sub LogOutBtn_Click() Stat = False Kunci '--- Untuk Multi User --- 'MyDB.Close End Sub
Private Sub NewBtn_Click() NewFrm.Show 1End Sub
Private Sub TotalBtn_Click() TotalFrm.Show 1End Sub
31
Pemrograman VB 6.0Freddy Heriyanto
Private Sub LogBtn_Click() LogFrm.Show 1End Sub
Private Sub SetorBtn_Click() SetorFrm.Show 1End Sub
Private Sub TarikBtn_Click() JudulTarik = "Penarikan Dana" TarikFrm.Show 1End Sub
Private Sub TransferBtn_Click() TransferFrm.Show 1End Sub
Private Sub AirBtn_Click() JudulTarik = "Bayar Air" TarikFrm.Show 1End Sub
Private Sub ListrikBtn_Click() JudulTarik = "Bayar Listrik" TarikFrm.Show 1End Sub
Private Sub HPPascaBtn_Click() JudulTarik = "Bayar HP Pasca Bayar" TarikFrm.Show 1End Sub
NewFrm
Dim NorekTemp As StringDim Prefix As String
32
Pemrograman VB 6.0Freddy Heriyanto
Dim Suffix As String
Private Sub Form_Load() Me.Caption = "Mengisi Data Nasabah Baru" '--- single user --- MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\Latihan\Bank.mdb", "Admin", ""
Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Profile" rsProfile.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Saving" rsSaving.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Transaksi" rsTransaksi.Open Cmd, , adOpenDynamic, adLockOptimistic Prefix = "208-10-" Suffix = "-1" Option1.Value = TrueEnd Sub
Private Sub Form_Unload(Cancel As Integer) '--- multi user --- 'rsProfile.Close 'rsSaving.Close 'rsTransaksi.Close '--- single user --- MyDB.CloseEnd Sub
Private Sub Option1_Click() Suffix = "-1"End Sub
Private Sub Option2_Click() Suffix = "-2"End Sub
Private Sub Option3_Click() Suffix = "-3"End Sub
Private Sub Option4_Click() Suffix = "-4"End Sub
Private Sub txtSetor_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then KeyAscii = 0 End IfEnd Sub
Private Sub TambahBtn_Click() Dim x As Long Dim Jawab As VbMsgBoxResult If txtNama.Text = "" Then Exit Sub If txtAlamat.Text = "" Then Exit Sub If txtKota.Text = "" Then Exit Sub If txtPhone.Text = "" Then Exit Sub If txtSetor.Text = "" Then Exit Sub If Not rsProfile.BOF And rsProfile.EOF Then rsProfile.MoveLast rsSaving.MoveLast
33
Pemrograman VB 6.0Freddy Heriyanto
rsTransaksi.MoveLast End If
If rsProfile.BOF And rsProfile.EOF Then NorekTemp = Prefix + "1" + Suffix Else x = Val(Mid(rsProfile!Norek, 8, 5)) + 1 NorekTemp = Prefix + Trim(Str(x)) + Suffix End If Jawab = MsgBox("No.Rekening " + Chr(9) + NorekTemp + Chr(13) + "Nama nasabah" + Chr(9) + txtNama.Text + Chr(13) + "Dibuat sekarang ?", vbYesNo, "Konfirmasi") If Jawab = vbNo Then Exit Sub With rsProfile .AddNew !Norek = NorekTemp !Nama = txtNama.Text !Alamat = txtAlamat.Text !Kota = txtKota.Text !Phone = txtPhone.Text .Update End With If rsSaving.BOF And rsSaving.EOF Then x = 1 Else x = Val(rsSaving!No) + 1 End If With rsSaving .AddNew !No = Str(x) !Norek = NorekTemp !Saldo = Val(txtSetor.Text) .Update End With If rsTransaksi.BOF And rsTransaksi.EOF Then x = 1 Else x = Val(rsTransaksi!TID) + 1 End If Waktu = Date With rsTransaksi .AddNew !TID = Str(x) !Tgl = Waktu !Norek = NorekTemp !Jenis = "Kredit" !Jumlah = Val(txtSetor.Text) .Update End With MsgBox "Data telah tersimpan", vbInformation, "Sukses!" CancelBtn_ClickEnd Sub
Private Sub CancelBtn_Click() txtNama.Text = "" txtAlamat.Text = "" txtKota.Text = "" txtPhone.Text = "" txtSetor.Text = "" Option1.Value = True
34
Pemrograman VB 6.0Freddy Heriyanto
txtNama.SetFocusEnd Sub
35
Pemrograman VB 6.0Freddy Heriyanto
TotalFrm
Private Sub Form_Load() Me.Caption = "Total Dana" '--- Single User --- MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\Latihan\Bank.mdb", "Admin", "" Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Saving" rsSaving.Open Cmd, , adOpenDynamic, adLockOptimistic If rsSaving.BOF And rsSaving.EOF Then MsgBox "Belum ada data sama sekali", vbInformation, "Informasi" OKBtn_Click Exit Sub End If rsSaving.MoveFirst JmlNasabah = 1 Jumlah = rsSaving!Saldo rsSaving.MoveNext Do While Not rsSaving.EOF JmlNasabah = JmlNasabah + 1 Jumlah = Jumlah + rsSaving!Saldo rsSaving.MoveNext Loop lblNasabah.Caption = JmlNasabah lblDana.Caption = Format(Jumlah, "Rp ###,###,###,###.00") End Sub
Private Sub Form_Unload(Cancel As Integer) '--- Multi User --- 'rsSaving.Close '--- Single User --- MyDB.CloseEnd Sub
Private Sub OKBtn_Click() Unload MeEnd Sub
36
Pemrograman VB 6.0Freddy Heriyanto
LogFrm
Private Sub Form_Load() Me.Caption = "Transaksi Log" '--- Single User --- MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\Latihan\Bank.Mdb", "Admin", "" Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Profile" rsProfile.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Saving" rsSaving.Open Cmd, , adOpenDynamic, adLockOptimistic If rsProfile.BOF And rsProfile.EOF Then MsgBox "Belum ada data sama sekali", vbInformation, "Informasi" Unload Me Exit Sub End If SetTampilan rsProfile.MoveFirst CmbNoRek.AddItem rsProfile!NoRek rsProfile.MoveNext While Not rsProfile.EOF CmbNoRek.AddItem rsProfile!NoRek rsProfile.MoveNext Wend txtNoRek.Text = "" CmbNoRek.Text = ""
End Sub
Private Sub Form_Unload(Cancel As Integer) '--- Multi User --- 'rsProfile.Close 'rsSaving.Close 'rsTransaksi.Close '--- Single User --- MyDB.CloseEnd Sub
Private Sub SetTampilan() LblNama.Caption = ""
37
Pemrograman VB 6.0Freddy Heriyanto
LblAlamat.Caption = "" LblKota.Caption = "" LblPhone.Caption = "" LblSaldo.Caption = "" Grid1.Clear Grid1.ColWidth(0) = 2100 Grid1.ColWidth(1) = 2000 Grid1.ColWidth(2) = 2000 Grid1.Row = 0 Grid1.Col = 0 Grid1.Text = " Tanggal" Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = " Debet" Grid1.Row = 0 Grid1.Col = 2 Grid1.Text = " Kredit"End Sub
Private Sub Cari(Nomor As String) If rsProfile.BOF And rsProfile.EOF Then Exit Sub End If SetTampilan rsProfile.MoveFirst rsProfile.Find "NoRek ='" + Nomor + "'" If rsProfile.EOF Then MsgBox "Tidak ada nomor rekening tersebut!", vbCritical, "Kosong!" Exit Sub End If rsSaving.MoveFirst rsSaving.Find "NoRek ='" + Nomor + "'" Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Transaksi WHERE NoRek ='" + Nomor + "'" rsTransaksi.Open Cmd, , adOpenDynamic, adLockOptimistic rsTransaksi.MoveFirst
If Trim(rsTransaksi!Jenis) = "Kredit" Then Grid1.AddItem Str(rsTransaksi!Tgl) + Chr(9) + Chr(9) + Format(rsTransaksi!Jumlah, "###,###,###,###.00") Jumlah = Jumlah + rsTransaksi!Jumlah Else Grid1.AddItem Str(rsTransaksi!Tgl) + Chr(9) + Format(rsTransaksi!Jumlah, "###,###,###,###.00") Jumlah = Jumlah - rsTransaksi!Jumlah End If
rsTransaksi.MoveNext
While Not rsTransaksi.EOF If Trim(rsTransaksi!Jenis) = "Kredit" Then Grid1.AddItem Str(rsTransaksi!Tgl) + Chr(9) + Chr(9) + Format(rsTransaksi!Jumlah, "###,###,###,###.00") Jumlah = Jumlah + rsTransaksi!Jumlah Else Grid1.AddItem Str(rsTransaksi!Tgl) + Chr(9) + Format(rsTransaksi!Jumlah, "###,###,###,###.00")
38
Pemrograman VB 6.0Freddy Heriyanto
Jumlah = Jumlah - rsTransaksi!Jumlah End If rsTransaksi.MoveNext Wend
rsTransaksi.Close LblNama.Caption = rsProfile!Nama LblAlamat.Caption = rsProfile!Alamat LblKota.Caption = rsProfile!Kota LblPhone.Caption = rsProfile!Phone LblSaldo.Caption = Format(rsSaving!Saldo, "###,###,###,###.00")End Sub
Private Sub txtNoRek_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Cari (txtNoRek.Text) CmbNoRek.Text = "" End IfEnd Sub
Private Sub CmbNoRek_Click() Cari (CmbNoRek.Text) txtNoRek.Text = ""End Sub
SetorFrm
Private Sub Form_Load() Me.Caption = "Penyetoran Dana"
'Untuk Single User : '------------------------------------------- MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\Latihan\Bank.mdb", "Admin", "" '-------------------------------------------- Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Profile'" RsProfile.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Saving" RsSaving.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Transaksi" RsTransaksi.Open Cmd, , adOpenDynamic, adLockOptimistic
If RsProfile.BOF And RsProfile.EOF Then Exit Sub End IfEnd Sub
39
Pemrograman VB 6.0Freddy Heriyanto
Private Sub Form_Unload(Cancel As Integer) 'Untuk Multi user : '------------------ 'RsProfile.Close 'RsSaving.Close 'RsTransaksi.Close '------------------ 'Untuk Single User : '------------------- MyDB.Close End Sub
Private Sub txtNoRek_LostFocus() If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If If txtNoRek.Text = "" Then CancelBtn_Click Exit Sub End If RsProfile.MoveFirst RsProfile.Find "NoRek ='" + txtNoRek.Text + "'" If RsProfile.EOF Then MsgBox "Tidak ada nomor rekening tersebut!", vbInformation, "Pencarian" txtNoRek.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If LblNama.Caption = RsProfile!NamaEnd Sub
Private Sub CancelBtn_Click() Unload MeEnd Sub
Private Sub OKBtn_Click() Dim NoRekCrit As String Dim Ammount As Long Dim Current_Saldo As Single Dim x As Long If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If NoRekCrit = txtNoRek.Text Ammount = Val(txtSetor.Text) RsSaving.MoveFirst RsSaving.Find "NoRek ='" + Trim(NoRekCrit) + "'" Waktu = Now x = Val(RsTransaksi!TID) x = x + 1 Current_Saldo = RsSaving!Saldo With RsTransaksi .AddNew !TID = Trim(Str(x)) !NoRek = NoRekCrit !Tgl = Waktu !Jenis = "Kredit" !Jumlah = Ammount .Update End With
40
Pemrograman VB 6.0Freddy Heriyanto
With RsSaving !NoRek = NoRekCrit !Saldo = Current_Saldo + Ammount .Update End With MsgBox "Transaksi penyetoran telah disimpan", vbInformation, "Informasi" txtNoRek.Text = "" LblNama.Caption = "" txtSetor.Text = "" txtNoRek.SetFocusEnd Sub
TarikFrm
Private Sub Form_Load() Me.Caption = JudulTarik 'Untuk Single User : '------------------------------------------- MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\Latihan\Bank.mdb", "Admin", "" '-------------------------------------------- Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Profile'" RsProfile.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Saving" RsSaving.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Transaksi" RsTransaksi.Open Cmd, , adOpenDynamic, adLockOptimistic
If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If
End Sub
Private Sub Form_Unload(Cancel As Integer) 'Untuk Multi user : '------------------ 'RsProfile.Close 'RsSaving.Close 'RsTransaksi.Close '------------------ 'Untuk Single User : '------------------- MyDB.Close End Sub
41
Pemrograman VB 6.0Freddy Heriyanto
Private Sub txtNoRek_LostFocus() If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If If txtNoRek.Text = "" Then CancelBtn_Click Exit Sub End If RsProfile.MoveFirst RsProfile.Find "NoRek ='" + txtNoRek.Text + "'" If RsProfile.EOF Then MsgBox "Tidak ada nomor rekening tersebut!", vbInformation, "Pencarian" txtNoRek.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If LblNama.Caption = RsProfile!NamaEnd Sub
Private Sub CancelBtn_Click() Unload MeEnd Sub
Private Sub OKBtn_Click() Dim NoRekCrit As String Dim Ammount As Long Dim Current_Saldo As Single Dim x As Long If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If NoRekCrit = txtNoRek.Text Ammount = Val(txtTarik.Text) RsSaving.MoveFirst RsSaving.Find "NoRek ='" + Trim(NoRekCrit) + "'" Waktu = Now x = Val(RsTransaksi!TID) x = x + 1 Current_Saldo = RsSaving!Saldo If Ammount > Current_Saldo Then MsgBox "Dana yang ditarik terlalu besar" + vbCrLf + "Maksimum: " + Format(Current_Saldo, "###,###,###,###.00"), vbInformation, "Informasi" txtTarik.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If With RsTransaksi .AddNew !TID = Trim(Str(x)) !NoRek = NoRekCrit !Tgl = Waktu !Jenis = "Debit" !Jumlah = Ammount .Update End With With RsSaving !NoRek = NoRekCrit !Saldo = Current_Saldo - Ammount .Update End With
42
Pemrograman VB 6.0Freddy Heriyanto
MsgBox "Transaksi Penarikan telah disimpan", vbInformation, "Informasi" txtNoRek.Text = "" LblNama.Caption = "" txtTarik.Text = "" txtNoRek.SetFocusEnd Sub
TransferFrm
Dim NoRek1 As StringDim NoRek2 As StringDim Ammount As SingleDim Saldo_Skrg As SingleDim x As Long
Private Sub Form_Load() Me.Caption = "Transfer Dana" 'Untuk Single User : '------------------------------------------- MyDB.Provider = "Microsoft.Jet.OLEDB.4.0" MyDB.CursorLocation = adUseClient MyDB.Open "c:\Latihan\Bank.mdb", "Admin", "" '-------------------------------------------- Set Cmd.ActiveConnection = MyDB Cmd.CommandText = "SELECT * FROM Profile'" RsProfile.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Saving" RsSaving.Open Cmd, , adOpenDynamic, adLockOptimistic Cmd.CommandText = "SELECT * FROM Transaksi" RsTransaksi.Open Cmd, , adOpenDynamic, adLockOptimistic
If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If
End Sub
Private Sub Form_Unload(Cancel As Integer) 'Untuk Multi user : '------------------
43
Pemrograman VB 6.0Freddy Heriyanto
'RsProfile.Close 'RsSaving.Close 'RsTransaksi.Close '------------------ 'Untuk Single User : '------------------- MyDB.Close End Sub
Private Sub CancelBtn_Click() Unload MeEnd Sub
Private Sub txtNoRek1_LostFocus() If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If NoRek1 = Trim(txtNoRek1.Text) RsProfile.MoveFirst RsProfile.Find "NoRek ='" + NoRek1 + "'" If RsProfile.EOF Then LblNama1.Caption = "" Exit Sub End If LblNama1.Caption = RsProfile!NamaEnd Sub
Private Sub txtNoRek2_LostFocus() If RsProfile.BOF And RsProfile.EOF Then Exit Sub End If NoRek2 = Trim(txtNoRek2) RsProfile.MoveFirst RsProfile.Find "NoRek ='" + NoRek2 + "'" If RsProfile.EOF Then LblNama2.Caption = "" Exit Sub End If LblNama2.Caption = RsProfile!NamaEnd Sub
Private Sub KirimBtn_Click() If txtNoRek1.Text = "" Or txtNoRek2.Text = "" Then Exit Sub End If If LblNama1.Caption = "" Or LblNama2.Caption = "" Then Exit Sub End If If txtNoRek1.Text = txtNoRek2.Text Then MsgBox "No. Rekening tidak boleh sama", vbInformation, "Informasi" Exit Sub End If If txtJumlah.Text = "" Then Exit Sub End If '--- Proses untuk rekening pengirim --- ' Ammount = Val(txtJumlah.Text) RsSaving.MoveFirst RsSaving.Find "NoRek ='" + NoRek1 + "'" Saldo_Skrg = RsSaving!Saldo If Ammount >= RsSaving!Saldo Then
44
Pemrograman VB 6.0Freddy Heriyanto
MsgBox "Dana yang ditransfer melebihi Saldo", vbInformation, "Informasi" txtJumlah.SetFocus SendKeys ("{Home}+{End}") Exit Sub End If RsSaving!Saldo = Saldo_Skrg - Ammount RsSaving.Update RsTransaksi.MoveLast Waktu = Now x = Val(RsTransaksi!TID) x = x + 1 With RsTransaksi .AddNew !TID = Trim(Str(x)) !NoRek = NoRek1 !Tgl = Waktu !Jenis = "Debit" !Jumlah = Ammount .Update End With '--- Proses untuk rekening penerima ---" Ammount = Val(txtJumlah.Text) RsSaving.MoveFirst RsSaving.Find "NoRek ='" + NoRek2 + "'" Saldo_Skrg = RsSaving!Saldo RsSaving!Saldo = Saldo_Skrg + Ammount RsSaving.Update RsTransaksi.MoveLast Waktu = Now x = Val(RsTransaksi!TID) x = x + 1 With RsTransaksi .AddNew !TID = Trim(Str(x)) !NoRek = NoRek2 !Tgl = Waktu !Jenis = "Kredit" !Jumlah = Ammount .Update End With '--- Keterangan Transfer Sukses ---' MsgBox "Transfer Sukses....", vbInformation, "Informasi" txtNoRek1.Text = "" txtNoRek2.Text = "" LblNama1.Caption = "" LblNama2.Caption = "" txtJumlah.Text = "" txtNoRek1.SetFocusEnd Sub
Private Sub txtJumlah_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then KeyAscii = 0 End IfEnd Sub
45
Pemrograman VB 6.0Freddy Heriyanto
BAB 4BEBERAPA
TRIK PEMROGRAMAN
1. Enkripsi dan Dekripsi Sederhana
Di bawah ini akan diberikan program simulasi untuk mengenkripsi dan mendeskripsikan teks secara sederhana.
Listing Program :
Private Sub ResetBtn_Click() txtPlain.Text = "" txtEnc1.Text = "" txtEnc2.Text = "" txtDec1.Text = "" txtDec2.Text = "" txtPlain.SetFocusEnd Sub
Private Sub OKBtn_Click() Dim ctr As Integer Dim tmp1 As String Dim tmp2 As String Dim tmp3 As String Dim tmp4 As String '-- proses encrypt pertama ctr = Len(txtPlain.Text) For I = ctr To 1 Step -1 tmp1 = tmp1 + Mid(txtPlain.Text, ctr, 1) ctr = ctr - 1 Next txtEnc1.Text = tmp1
46
Pemrograman VB 6.0Freddy Heriyanto
'-- proses encrypt kedua ctr = Len(txtPlain.Text) For I = 1 To ctr tmp2 = tmp2 + Chr(Asc(Mid(tmp1, I, 1)) + 4) Next txtEnc2.Text = tmp2 '-- proses decrypt pertama ctr = Len(txtPlain.Text) For I = 1 To ctr tmp3 = tmp3 + Chr(Asc(Mid(tmp2, I, 1)) - 4) Next txtDec1.Text = tmp3 '-- proses decrypt kedua ctr = Len(txtPlain.Text) For I = ctr To 1 Step -1 tmp4 = tmp4 + Mid(tmp3, ctr, 1) ctr = ctr - 1 Next txtDec2.Text = tmp4End Sub
2. Class Module
Dahulu banyak developer membuat program dengan cara seluruh instruksi dibuat menjadi 1 file program besar yang rumit. Boleh dikatakan banyak yang menggunakan pola terstruktur untuk mendesain software.
Saat ini yang menjadi trend dan telah terbukti efektivitasnya adalah pola OOP (Object Oriented Programming), yaitu memecah kasus besar menjadi beberapa kasus kecil.
Membuat suatu class module dalam Visual Basic merupakan salah satu faktor yang cukup penting dalam pola OOP.
Untuk menambah suatu class module, silahkan anda memilih menu Project kemudian klik Add Class Module. Maka akan muncul kotak dialog, pilihlah Class Module.
Di bawah ini kode lengkap Class Module : Class1.cls
'----- MENDEKLARASIKAN PROPERTI -----Dim mAwal As SingleDim mAkhir As SingleDim mHasil As Single
'----- MEMBUAT EVENT -----Public Event Selesai()
'----- MENGGUNAKAN PROPERTI -----
Public Property Let Awal(ByVal nilai As Single) mAwal = nilai 'mengubah nilaiEnd Property
Public Property Get Awal() As Single Awal = mAwal 'membaca nilai
47
Pemrograman VB 6.0Freddy Heriyanto
End PropertyPublic Property Let Akhir(ByVal nilai As Single) mAkhir = nilai 'mengubah nilaiEnd Property
Public Property Get Akhir() As Single Akhir = mAkhir 'membaca nilaiEnd Property
Public Property Let Hasil(nilai As Single) mHasil = nilaiEnd Property
Public Property Get Hasil() As Single Hasil = mHasilEnd Property
'----- MEMBUAT METODE ------
Public Sub Kali() Hasil = Awal * Akhir RaiseEvent SelesaiEnd Sub
Public Sub Pangkat(x As Integer, y As Integer) Hasil = x ^ y RaiseEvent SelesaiEnd Sub
Public Function Sisa(x As Integer, y As Integer) As Single Sisa = x Mod y Hasil = Sisa RaiseEvent SelesaiEnd Function
Public Function Bagi() As Single Bagi = Awal / Akhir Hasil = Bagi RaiseEvent SelesaiEnd Function
48
Pemrograman VB 6.0Freddy Heriyanto
Kode untuk aplikasi adalah sebagai berikut :
Private Sub Command1_Click() Dim x As New Class1 'membuat instance baru 'kalau tidak diisi salah satu maka OUT! If Text1.Text = "" Then Exit Sub If Text2.Text = "" Then Exit Sub 'pengisian nilai pada properti x.Awal = Val(Text1.Text) x.Akhir = Val(Text2.Text) If Option1.Value = True Then x.Kali lblHasil.Caption = x.Hasil End If If Option2.Value = True Then x.Bagi lblHasil.Caption = x.Hasil End If If Option3.Value = True Then x.Pangkat x.Awal, x.Akhir lblHasil.Caption = x.Hasil End If If Option4.Value = True Then lblHasil.Caption = x.Sisa(x.Awal, x.Akhir) End If 'menghancurkan objek dari memori Set x = Nothing End Sub
Private Sub Form_Load() lblHasil.Caption = "" Option1.Value = True Text1.Text = "0" Text2.Text = "0"End Sub
49