SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
BAB 4
MERELASIKAN DATA




4.1    Program Pembelian Barang
Merelasikan data merupakan suatu hal yang sangat diperlukan
dalam mengolah database. Pada kesempatan kali ini Anda akan
mencoba membuat relasi data dalam sebuah aplikasi pembelian dan
tabel yang akan digunakan adalah tabel barang, pemasok dan tabel
beli. Jika kode barang diketik maka akan muncul nama barang,
harga satuan dan jumlah stok yang tersedia. Begitu juga jika
mengetik kode pemasok maka akan muncul nama pemasok,
alamat, nomor telepon dan relasi yang dapat dihubungi.
Akan tetapi jika kode barang yang diketik tidak ada, akan muncul
komentar bahwa data barang belum terdaftar, kemudian pertanyaan
apakah data baru ini akan langsung diinput atau tidak. Jadi dengan
program ini kita dapat langsung mengentri data barang tanpa harus
membuka form pengolahan data barang. Hal yang sama terjadi pada
pemasok. Jika kode pemasok tidak terdaftar pada tabel pemasok,
akan muncul pertanyaan apakah data pemasok baru akan langsung
diinput atau tidak. Selain itu data pembelian ini akan langsung
mengubah jumlah data barang yang ada.
Inilah salah satu kelebihan yang ada pada program yang akan
dibuat, dengan satu form (Pembelian) kita dapat langsung mengentri


                                                              131
data barang dan data pemasok jika ternyata kode barang dan kode
pemasoknya belum terdaftar pada kedua tabel tersebut dan jumlah
barang langsung di-update, kemudian data pembelian ini akan
disimpan pada tabel beli.
Perhatikan dengan baik rancangan tabel beli yang pernah dibuat. Di
dalamnya terdapat field kode barang dan kode pemasok dengan
field-field tersebut merupakan field kunci pada tabel barang dan tabel
pemasok. Dengan teknik seperti ini maka tabel beli mampu
mengambil data yang diperlukan dari tabel barang dan tabel
pemasok tersebut. Untuk mencoba program pembelian, rancanglah
sebuah form dengan bentuk seperti gambar di bawah ini:




                Gambar 4.1 Menu Pembelian Barang


      Nama          Properti          Seting
      Obyek
      Text1         Name              TxtNoFaktur
      Text2         Name              TxtKodeBrg
      Text3         Name              TxtHarga
      Text4         Name              TxtKodePms
      Text5         Name              TxtTelp
      Text6         Name              TxtJumBeli
      Text7         Name              TxtTglFaktur


132
Text8      Name            TxtNamaBrg
Text9      Name            TxtStokBrg
Text10     Name            TxtNamaPms
Text11     Name            TxtAlamat
Text12     Name            TxtRelasi
Text13     Name            TxtTotal
Text14     Name            JmlData
Command1   Name            Cmdinput
           Caption         &Input
Command2   Name            Cmdtutup
           Caption         &Tutup
Data1      Name            Data1
           DatabaseName    C:Belajar VBMaster.mdb
           Caption         Brg
           RecordSource    Barang
           RecordsetType   0 – Table
Data2      Name            Data2
           DatabaseName    C:Belajar VBMaster.mdb
           Caption         Pms
           RecordSource    Pemasok
           RecordsetType   0 – Table
Data3      Name            Data3
           DatabaseName    C:Belajar VBMaster.mdb
           Caption         Beli
           RecordSource    Beli
           RecordsetType   0 – Table


                                                      133
Listing Program:
‘Fungsi untuk mencari jumlah data
Function JumlahData()
mjumlah = Data3.Recordset.RecordCount
JmlData = mjumlah
End Function

Private Sub Form_activate()
txtnofaktur.MaxLength = 6
txtkodebrg.MaxLength = 6
txtharga.MaxLength = 8
txtkodepms.MaxLength = 6
txttelpon.MaxLength = 8
txtjumbeli.MaxLength = 4
txttglfaktur.MaxLength = 8
txtnamabrg.MaxLength = 30
txtstokbrg.MaxLength = 4
txtnamapms.MaxLength = 30
txtalamat.MaxLength = 30
txtrelasi.MaxLength = 15
txttotal.MaxLength = 8
tidaksiapisi
cmdinput.SetFocus
JumlahData
End Sub

Private Sub cmdinput_click()
If cmdinput.Caption = "&Input" Then
    cmdinput.Caption = "&Simpan"
    cmdtutup.Caption = "&Batal"
    siapisi
    txtnofaktur.SetFocus
Else
    If txtnofaktur = Empty Then
        pesan = MsgBox("Nomor Faktur Tidak Boleh Kosong", & _
         0, "Informasi")
        txtnofaktur.SetFocus
    Else
    With Data3.Recordset
        .AddNew
        !NoFaktur = txtnofaktur
        !TglFaktur = txttglfaktur
        !kodebrg = txtkodebrg
        !kodepms = txtkodepms
        !jmlbeli = txtjumbeli
        .Update
  End With

      With Data1.Recordset
      .Index = "barangdex"
      .Seek "=", txtkodebrg
      If .NoMatch Then


134
.AddNew
       !kodebrg = txtkodebrg
       !namabrg = txtnamabrg
       !harga = txtharga
       !Jumlah = txtjumbeli
       .Update
   Else
       .Edit
       !Jumlah = !Jumlah + txtjumbeli
       .Update
   End If
   End With

    With Data2.Recordset
    .Index = "Pemasokdex"
    .Seek "=", txtkodepms
    If .NoMatch Then
        .AddNew
        !kodepms = txtkodepms
        !namapms = txtnamapms
        !AlamatPms = txtalamat
        !TelponPms = txttelpon
        !RelasiPms = txtrelasi
        .Update
    End If
    End With
        Data1.Refresh
        Data2.Refresh
        Data3.Refresh
        kosongkan
        tidaksiapisi
        semula
    End If
    End If
JumlahData
End Sub

Private Sub txtnofaktur_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
txttglfaktur = Date
txtkodebrg.SetFocus
End If
End Sub

Private Sub txttglfaktur_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
txtkodebrg.SetFocus
End If
End Sub

Private Sub txtkodebrg_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))


                                                         135
If KeyAscii = 13 Then
With Data1.Recordset
    .Index = "barangdex"
    .Seek "=", txtkodebrg
    If Not .NoMatch Then
        txtnamabrg.Enabled = False
        txtharga.Enabled = False
        txtstokbrg.Enabled = False
        txtnamabrg = Data1.Recordset!namabrg
        txtharga = Data1.Recordset!harga
        txtstokbrg = Data1.Recordset!Jumlah
        txtkodepms.SetFocus
    Else
        x = MsgBox("Kode Barang Tidak Ada, Data Barang & _
            Langsung Dientri...!", vbYesNo, "Konfirmasi")
        If x = vbYes Then
            txtnamabrg.Enabled = True
            txtharga.Enabled = True
            txtstokbrg.Enabled = True
            txtnamabrg = ""
            txtharga = ""
            txtstokbrg = ""
            txtnamabrg.SetFocus
        Else
            txtkodebrg.SetFocus
        End If
    End If
End With
End If
End Sub

Private Sub txtkodepms_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
With Data2.Recordset
    .Index = "pemasokdex"
    .Seek "=", txtkodepms
    If Not .NoMatch Then
        txtnamapms.Enabled = False
        txttelpon.Enabled = False
        txtalamat.Enabled = False
        txtrelasi.Enabled = False
        txtnamapms = Data2.Recordset!namapms
        txttelpon = Data2.Recordset!TelponPms
        txtalamat = Data2.Recordset!AlamatPms
        txtrelasi = Data2.Recordset!RelasiPms
        txtjumbeli.Enabled = True
        txtjumbeli.SetFocus
    Else
        x = MsgBox("Kode Pemasok Tidak Ada, Apakah & _
 akan Langsung Diinput...?", vbYesNo, "Konfirmasi")
        If x = vbYes Then
            siapisi


136
txtnamapms.SetFocus
        Else
            txtkodepms.SetFocus
        End If
    End If
End With
End If
End Sub

Private Sub txtnamabrg_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtharga.SetFocus
End If
End Sub

Private Sub txtharga_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
With Data1.Recordset
.Index = "barangdex"
.Seek "=", txtkodebrg
If .NoMatch Then
    txtkodepms.SetFocus
End If
End With
End If
End Sub

Private Sub txtnamapms_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txttelpon.SetFocus
End If
End Sub

Private Sub txttelpon_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtalamat.SetFocus
End If
End Sub

Private Sub txtalamat_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtrelasi.SetFocus
End If
End Sub

Private Sub txtrelasi_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtjumbeli.SetFocus


                                                       137
End If
End Sub

Private Sub cmdtutup_Click()
Select Case cmdtutup.Caption
    Case "&Tutup"
        End
    Case "&Batal"
        kosongkan
        tidaksiapisi
        semula
      End Select
End Sub

Private Sub kosongkan()
Dim Ctl As Control
For Each Ctl In Me
    If TypeName(Ctl) = "TextBox" Then
        Ctl.Text = ""
    End If
Next
End Sub

Private Sub tampilkan()
tidaksiapisi
With Data3.Recordset
    txtnofaktur = !NoFaktur
    txtkodebrg = !kodebrg
    txtharga = !harga
    txttelpon = !TelponPms
    txtrealsi = !RelasiPms
End With
End Sub

Private Sub siapisi()
Dim x As Control
For Each x In Me
    If TypeName(x) = "TextBox" Then
    x.Enabled = True
    End If
Next
End Sub

Private Sub tidaksiapisi()
Dim x As Control
For Each x In Me
    If TypeName(x) = "TextBox" Then
    x.Enabled = True
    End If
Next
End Sub

Private Sub semula()


138
cmdinput.Caption   =   "&Input"
cmdtutup.Caption   =   "&Tutup"
cmdinput.Enabled   =   True
cmdtutup.Enabled   =   True
End Sub

Private Sub txtjumbeli_Change()
txttotal.Enabled = False
txttotal = Val(txtjumbeli) * Val(txtharga)
End Sub

Private Sub txtjumbeli_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
    cmdinput.SetFocus
End If
End Sub

Penjelasan Program:
With Data1.Recordset
    .Index = "barangdex"
    .Seek "=", txtkodebrg
    If .NoMatch Then
        .AddNew
        !kodebrg = txtkodebrg
        !namabrg = txtnamabrg
        !harga = txtharga
        !Jumlah = txtjumbeli
        .Update
    Else
        .Edit
        !Jumlah = !Jumlah + txtjumbeli
        .Update
    End If
End With
Potongan program ini berarti pada saat cmdinput diklik dan data
barang tidak ditemukan maka entrilah data baru tersebut, tapi jika
data barang ditemukan maka editlah jumlahnya dengan cara
menambahkan jumlah pembelian ke tabel barang (field jumlah).

Private Sub kosongkan()
Dim Ctl As Control
For Each Ctl In Me
    If TypeName(Ctl) = "TextBox" Then
        Ctl.Text = ""
    End If
Next
End Sub
Sub program ini menyimpan semua control ke dalam variabel Ctl,
dan jika nama control tersebut terbuat dari TextBox, kosongkanlah


                                                              139
isi yang ada di dalamnya. Cara ini lebih efektif digunakan
dibandingkan dengan mengosongkan semua text seperti cara yang
pernah dibicarakan pada Bab I. Jika ada control lain yang digunakan
dalam form ini, Anda tinggal menambahkan nama dari control yang
digunakan itu. Misalnya Combobox, DBCombo dan lain-lain.
Contoh:
Private Sub kosongkan()
Dim Ctl As Control
For Each Ctl In Me
    If TypeName(Ctl) = "TextBox" Then
        Ctl.Text = ""
    End If
    If TypeName(Ctl) = "ComboBox" Then
        Ctl.Text = ""
    End If
    If TypeName(Ctl) = "DBCombo" Then
        Ctl.Text = ""
    End If
Next
End Sub

Private Sub siapisi()
Dim x As Control
For Each x In Me
    If TypeName(x) = "TextBox" Then
    x.Enabled = True
    End If
Next
End Sub

Perhatikan sub program di atas. Pada dasarnya sub program tersebut
sama dengan sub program Kosongkan. Perbedaanya terletak pada
kondisi apa yang diinginkan pada control tersebut, dalam hal ini
semua control dapat digunakan, maka perintah yang diberikan
adalah Enabled=True.


4.2     Program Penjualan Barang
Pada dasarnya program penjualan ini hampir mirip dengan program
pembelian, perbedaanya terletak pada:
1. Tabel Pemasok diganti dengan tabel pelanggan,
2. Tabel Beli diganti dengan jual,


140
3. Jumlah penjualan mengurangi jumlah barang,
4. Harga jual dinaikan 10% dari harga asli barang untuk
   mendapatkan laba.
Kode barang dan kode pemasok yang berupa text (di program
pembelian) diganti dengan DBCombo dan dengan DBCombo ini
kita dapat langsung menampilkan daftar field kode barang dan kode
pemasok atau dapat mengetik di dalamnya. Untuk membuat
program tersebut, rancanglah form berbentuk seperti Gambar 4.2.




               Gambar 4.2 Menu Penjualan Barang


   Nama           Properti          Seting
   Obyek
   DBCombo1       Name              DBCombo1
                  Rowsource         Data1
                  Listfield         Kodebrg
   DBCombo2       Name              DBCombo2
                  Rowsource         Data2
                  Listfield         Kodeplg
   Data1          Name              Data1
                  DatabaseName      C:Belajar VBMaster.mdb
                  Caption           Brg
                  RecordSource      Barang


                                                               141
RecordsetType      0 – Table
      Data2        Name               Data2
                   DatabaseName       C:Belajar VBMaster.mdb
                   Caption            Plg
                   RecordSource       Pelanggan
                   RecordsetType      0 – Table
      Data3        Name               Data3
                   DatabaseName       C:Belajar VBMaster.mdb
                   Caption            Jual
                   RecordSource       Jual
                   RecordsetType      0 – Table

Listing Program:
Function JumlahData()
mjumlah = Data3.Recordset.RecordCount
JmldataJual = mjumlah
End Function

Private Sub Form_activate()
txtnofaktur.MaxLength = 6
txtharga.MaxLength = 8
txttelpon.MaxLength = 8
txtjumjual.MaxLength = 4
txttglfaktur.MaxLength = 8
txtnamabrg.MaxLength = 30
txtstokbrg.MaxLength = 4
txtnamaplg.MaxLength = 30
txtalamat.MaxLength = 30
txtrelasi.MaxLength = 15
txttotal.MaxLength = 8
tidaksiapisi
cmdinput.SetFocus
JumlahData
End Sub

Private Sub cmdinput_click()
JumlahData
If cmdinput.Caption = "&Input" Then
    cmdinput.Caption = "&Simpan"
    cmdtutup.Caption = "&Batal"
    siapisi


142
txtnofaktur.SetFocus
Else
    If txtnofaktur = Empty Then
        pesan = MsgBox("Nomor Faktur Tidak Boleh Kosong", & _
        0, "Informasi")
        txtnofaktur.SetFocus
    Else
    With Data3.Recordset
        .AddNew
        !Nofaktur = txtnofaktur
        !tglfaktur = txttglfaktur
        !kodebrg = DBCombo1
        !KodePlg = DBCombo2
        !JmlJual = txtjumjual
        .Update
        Data3.Refresh
     End With
    With Data1.Recordset
    .Index = "barangdex"
    .Seek "=", DBCombo1
    If .NoMatch Then
        .AddNew
        !kodebrg = DBCombo1
        !Namabrg = txtnamabrg
        !harga = txtharga
        !Jumlah = txtstokbrg
        .Update
    Else
        .Edit
        !Jumlah = !Jumlah - txtjumjual
        .Update
    End If
    End With
    With Data2.Recordset
    .Index = "Pelanggandex"
    .Seek "=", DBCombo2
    If .NoMatch Then
        .AddNew
        !KodePlg = DBCombo2
        !Namaplg = txtnamaplg
        !AlamatPlg = txtalamat
        !TelponPlg = txttelpon
        !RelasiPlg = txtrelasi
        .Update
    End If
    End With
        Data1.Refresh
        Data2.Refresh
        Data3.Refresh
        kosongkan
        tidaksiapisi
        semula
    End If


                                                                143
End If
JumlahData
End Sub

Private Sub txtnofaktur_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
txttglfaktur = Format(Date, "DD/MM/YY")
DBCombo1.SetFocus
End If
End Sub

Private Sub txttglfaktur_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
DBCombo1.SetFocus
End If
End Sub

Private Sub DBCombo1_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub

Private Sub dbcombo1_change()
If Len(DBCombo1.Text) < 6 Then
    Exit Sub
End If
With Data1.Recordset
    .Index = "barangdex"
    .Seek "=", DBCombo1
    If Not .NoMatch Then
        txtnamabrg.Enabled = False
        txtharga.Enabled = False
        txtstokbrg.Enabled = False
        txtnamabrg = Data1.Recordset!Namabrg
        txtharga = (Val(Data1.Recordset!harga) + & _
    (Val(Data1.Recordset!harga)) * 0.1)
        txtstokbrg = Data1.Recordset!Jumlah
        DBCombo2.SetFocus
    Else
        x = MsgBox("Kode Barang Tidak Ada, Data Barang & _
            Langsung dientri...!", vbYesNo, "Konfirmasi")
        If x = vbYes Then
            txtnamabrg.SetFocus
        Else
            DBCombo1.SetFocus
        End If
    End If
End With
End Sub

Private Sub DBCombo2_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub


144
Private Sub DBCombo2_change()
If Len(DBCombo2.Text) < 6 Then
    Exit Sub
End If
With Data2.Recordset
    .Index = "Pelanggandex"
    .Seek "=", DBCombo2
    If Not .NoMatch Then
        txtnamaplg.Enabled = False
        txttelpon.Enabled = False
        txtalamat.Enabled = False
        txtrelasi.Enabled = False
        txtnamaplg = Data2.Recordset!Namaplg
        txttelpon = Data2.Recordset!TelponPlg
        txtalamat = Data2.Recordset!AlamatPlg
        txtrelasi = Data2.Recordset!RelasiPlg
        txtjumjual.Enabled = True
        txtjumjual.SetFocus
    Else
        x = MsgBox("Kode Pelanggan Tidak Ada, Apakah akan & _
            Langsung Diinput...?", vbYesNo, "Konfirmasi")
        If x = vbYes Then
            siapisi
            txtnamaplg.SetFocus
        Else
            DBCombo2.SetFocus
        End If
    End If
End With
End Sub

Private Sub txtnamabrg_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtharga.SetFocus
End If
End Sub

Private Sub txtharga_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
With Data1.Recordset
.Index = "barangdex"
.Seek "=", DBCombo1
    If .NoMatch Then
        txtstokbrg.SetFocus
    End If
End With
End If
End Sub

Private Sub txtnamaPlg_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))


                                                                145
If KeyAscii = 13 Then
    txttelpon.SetFocus
End If
End Sub

Private Sub txtstokbrg_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
DBCombo2.SetFocus
End If
End Sub

Private Sub txttelpon_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtalamat.SetFocus
End If
End Sub

Private Sub txtalamat_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtrelasi.SetFocus
End If
End Sub

Private Sub txtrelasi_keypress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
    txtjumjual.SetFocus
End If
End Sub

Private Sub cmdtutup_Click()
Select Case cmdtutup.Caption
    Case "&Tutup"
        End
    Case "&Batal"
        kosongkan
        tidaksiapisi
        semula
      End Select
End Sub

Private Sub kosongkan()
Dim Ctl As Control
For Each Ctl In Me
    If TypeName(Ctl) = "TextBox" Then
        Ctl.Text = ""
    End If
    If TypeName(Ctl) = "DBCombo" Then
        Ctl.Text = ""
    End If
Next


146
End Sub

Private Sub tampilkan()
tidaksiapisi
With Data3.Recordset
    txtnofaktur = !Nofaktur
    DBCombo1 = !kodebrg
    txtharga = !harga
    txttelpon = !TelponPlg
    txtrealsi = !RelasiPlg
End With
End Sub

Private Sub siapisi()
Dim x As Control
For Each x In Me
    If TypeName(x) = "TextBox" Then
    x.Enabled = True
    End If
    If TypeName(x) = "DBCombo" Then
    x.Enabled = True
    End If
Next
End Sub

Private Sub tidaksiapisi()
Dim x As Control
For Each x In Me
    If TypeName(x) = "TextBox" Then
    x.Enabled = False
    End If
    If TypeName(x) = "DBCombo" Then
    x.Enabled = False
    End If
Next
End Sub

Private Sub semula()
cmdinput.Caption = "&Input"
cmdtutup.Caption = "&Tutup"
cmdinput.Enabled = True
cmdtutup.Enabled = True
End Sub

Private Sub txtjumJual_Change()
If Val(txtjumjual) > Val(txtstokbrg) Then
    x = MsgBox("Persediaan Barang Kurang, Lihat Stok & _
Barang...!", 0, "Informasi")
    txtjumjual.SetFocus
Else
    txttotal.Enabled = False
    txttotal = Val(txtjumjual) * Val(txtharga)
End If


                                                           147
End Sub

Private Sub txtjumJual_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
    cmdinput.SetFocus
End If
End Sub


4.3       Program Pencetakan Data Pembelian
Walaupun yang tersimpan dalam program pencetakan data
pembelian adalah kode barang dan kode pemasok, yang akan
ditampilkan dalam pencetakan adalah nama barang dan nama
pemasoknya. Hal ini dilakukan karena jika yang ditampilkan hanya
kode barang atau kode pemasok, informasinya kurang bermanfaat.
Untuk mengatasi hal inilah relasi data diperlukan. Program dapat
menampilkan nama barang dan nama pemasok karena kode barang
dan kode pemasok merupakan field kunci di tabel masing-masing.
Jika sebuah field kunci tersimpan dalam tabel lain, item-item data
lainnya dapat ditampilkan dengan cara mengaktifkan field yang
dijadikan kunci tersebut. Hal yang sama dapat dilakukan pada
program pencetakan data penjualan. Untuk dapat menampilkan
pencetakan ke layar, dibutuhkan satu form tambahan yang tidak
berisi obyek apapun di dalamnya dan form tersebut kita ubah
properti Name-nya menjadi Tampil. Untuk membuat program
pencetakan tersebut, buatlah rancangan form seperti Gambar 4.3.




            Gambar 4.3 Menu Pencetakan Data Pembelian


      Nama Obyek   Properti          Seting
      Command1     Name              Command1
                   Caption           &Cetak Ke Layar


148
Data1           Name             Data1
                   Caption          Brg
                   DatabaseName     C:Belajar VBMaster.mdb
                   RecordsetType    0 – Table
                   RecordSource     Barang
   Data2           Name             Data2
                   Caption          Pms
                   DatabaseName     C:Belajar VBMaster.mdb
                   RecordsetType    0 – Table
                   RecordSource     Pemasok
   Data3           Name             Data3
                   Caption          Beli
                   DatabaseName     C:Belajar VBMaster.mdb
                   RecordsetType    1 – Dynaset
                   RecordSource     Beli

Listing Program:
Private Sub Command1_Click()
    Tampil.Show
‘definisikan variabel hitungan
    Dim MSubtotal, MTotal As Long
    Dim MNo, MHal, MBaris As Integer
    Dim MJumlah As Double
‘definisikan garis
    Dim MGrs As String
    Tampil.Show
‘Pilih bentuk huruf
    Tampil.Font = "Courier New"
    With Data3.Recordset
‘Jika data pembelian kosong, munculkan pesan
    If Data3.Recordset.RecordCount = 0 Then
        x = MsgBox("Data Pembelian Belum Ada", 0, "Informasi")
        Exit Sub
    End If
‘bawa ke record pertama
    .MoveFirst
    mtotalharga = 0


                                                               149
mtotalbeli = 0
    mtotalbayar = 0
    MNo = 0
    MHal = 0
‘Cetak Judul laporan
    Do While Not .EOF
       MHal = MHal + 1
       Tampil.Print
       Tampil.Print
       Tampil.FontBold = True
       Tampil.FontSize = 10
       Tampil.Print Tab(10); "Data Pembelian PT. ABC"
       Tampil.Print Tab(10); "Tanggal Cetak: "; Format(Date,& _
              "DD-MMM-YY")
       Tampil.FontBold = False
       Tampil.FontSize = 8
       Tampil.Print
       Tampil.Print Tab(90); "Hal:"; Format(MHal, "###")
       MGrs = String$(110, "-")
       Tampil.Print MGrs
       Tampil.Print Tab(3); "No.";
       Tampil.Print Tab(8); "No Fkt";
       Tampil.Print Tab(18); "TGL Fkt";
       Tampil.Print Tab(30); "Nama Barang";
       Tampil.Print Tab(57); "Nama Pemasok";
       Tampil.Print Tab(82); "Harga";
       Tampil.Print Tab(92); "Jumlah";
       Tampil.Print Tab(105); "Total"
       Tampil.Print MGrs
       msubtotalbeli = 0
       msubtotalbayar = 0
       MBaris = 0
        cetak isi tabel
       Do While Not .EOF And MBaris <= 30
          MNo = MNo + 1
          Data1.Recordset.Index = "Barangdex"
          Data1.Recordset.Seek "=", Data3.Recordset!kodebrg
          Data2.Recordset.Index = "Pemasokdex"
          Data2.Recordset.Seek "=", Data3.Recordset!kodepms
          mharga = Data1.Recordset!harga
          mbeli = Data3.Recordset!jmlbeli
          Mbayar = mharga * mbeli
          Tampil.Print Tab(2); RKanan(MNo, "###");
          Tampil.Print Tab(8); Data3.Recordset!NoFaktur;
          Tampil.Print Tab(18);Format(Data3. & _
          Recordset!TglFaktur, "DD-MMM-YY");
          Tampil.Print Tab(30); Data1.Recordset!namabrg;
          Tampil.Print Tab(57); Data2.Recordset!namapms;
          Tampil.Print Tab(78); RKanan(mharga, "###,###,###");
          Tampil.Print Tab(92); RKanan(mbeli, "#,###");
          Tampil.Print Tab(100); RKanan(Mbayar, "###,###,###")
          msubtotalbeli = msubtotalbeli + mbeli
          msubtotalbayar = msubtotalbayar + Mbayar


150
MBaris = MBaris + 1
            .MoveNext
         Loop
            mtotalbeli = mtotalbeli + msubtotalbeli
            mtotalbayar = mtotalbayar + msubtotalbayar
         Tampil.Print MGrs
         Tampil.Print Tab(5); "Sub Total:";
         Tampil.Print Tab(92); RKanan(msubtotalbeli, "#,###");
         Tampil.Print Tab(100); RKanan(msubtotalbayar, & _
                "###,###,###") & ",-"
         Tampil.Print Tab(5); "Total:";
         Tampil.Print Tab(92); RKanan(mtotalbeli, "#,###");
         Tampil.Print Tab(100); RKanan(mtotalbayar, "###,###,###")
& ",-"
       Tampil.Print MGrs
    Loop
    End With
End Sub

‘Fungsi Meratakan Angka (Numeric)
Private Function RKanan(NData, CFormat) As String
    RKanan = Format(NData, CFormat)
    RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan
End Function

Hasil:




             Gambar 4.4 Hasil pencetakan data pembelian



4.4      Program Pencetakan Data Penjualan
Garis besar program pencetakan data penjualan ini sama seperti
program sebelumnya. Perbedaannya, pada program ini data


                                                               151
pemasok diubah dengan data pelanggan. Untuk            keperluan
pencetakan di atas, buatlah form seperti Gambar 4.5.




           Gambar 4.5 Menu Pencetakan Data Penjualan


   Nama Obyek     Properti         Seting
   Command1       Name             Command1
                  Caption          &Cetak Ke Layar
   Data1          Name             Data1
                  Caption          Brg
                  DatabaseName     C:Belajar VBMaster.mdb
                  RecordsetType    0 – Table
                  RecordSource     Barang
   Data2          Name             Data2
                  Caption          Plg
                  DatabaseName     C:Belajar VBMaster.mdb
                  RecordsetType    0 – Table
                  RecordSource     Pelanggan
   Data3          Name             Data3
                  Caption          Jual
                  DatabaseName     C:Belajar VBMaster.mdb
                  RecordsetType    1 – Dynaset
                  RecordSource     Jual

152
Hasil:




            Gambar 4.6 Hasil pencetakan data penjualan

Listing Program:
Private Sub Command1_Click()
    Tampil.Show
    Dim MSubtotal, MTotal As Long
    Dim MNo, MHal, MBaris As Integer
    Dim MJumlah As Double
    Dim MGrs As String
    Tampil.Show
    Tampil.Font = "Courier New"
    With Data3.Recordset
    If Data3.Recordset.RecordCount = 0 Then
        x = MsgBox("Data Penjualan Belum Ada", 0, "Informasi")
        Exit Sub
    End If
    .MoveFirst
    mtotalharga = 0
    mtotalJual = 0
    mtotalbayar = 0
    MNo = 0
    MHal = 0
    Do While Not .EOF
       MHal = MHal + 1
       Tampil.Print
       Tampil.Print
       Tampil.FontBold = True
       Tampil.FontSize = 10
       Tampil.Print Tab(10); "Data Penjualan PT. ABC"
       Tampil.Print Tab(10); "Tanggal Cetak: "; & _
              Format(Date, "DD-MMM-YY")
       Tampil.FontBold = False
       Tampil.FontSize = 8
       Tampil.Print
       Tampil.Print Tab(90); "Hal:"; Format(MHal, "###")


                                                             153
MGrs = String$(110, "-")
       Tampil.Print MGrs
       Tampil.Print Tab(3); "No.";
       Tampil.Print Tab(8); "No Fkt";
       Tampil.Print Tab(18); "TGL Fkt";
       Tampil.Print Tab(30); "Nama Barang";
       Tampil.Print Tab(57); "Nama Pelanggan";
       Tampil.Print Tab(82); "Harga";
       Tampil.Print Tab(92); "Jumlah";
       Tampil.Print Tab(105); "Total"
       Tampil.Print MGrs
       msubtotalJual = 0
       msubtotalbayar = 0
       MBaris = 0
       Do While Not .EOF And MBaris <= 30
          MNo = MNo + 1
          Data1.Recordset.Index = "Barangdex"
          Data1.Recordset.Seek "=", Data3.Recordset!kodebrg
          Data2.Recordset.Index = "Pelanggandex"
          Data2.Recordset.Seek "=", Data3.Recordset!kodePlg
          mharga = Data1.Recordset!harga
          mJual = Data3.Recordset!jmlJual
          Mbayar = mharga * mJual
          Tampil.Print Tab(2); RKanan(MNo, "###");
          Tampil.Print Tab(8); Data3.Recordset!NoFaktur;
          Tampil.Print Tab(18);Format(Data3.Recordset & _
          !TglFaktur, "DD-MMM-YY");
          Tampil.Print Tab(30); Data1.Recordset!namabrg;
          Tampil.Print Tab(57); Data2.Recordset!namaPlg;
          Tampil.Print Tab(78); RKanan(mharga, "###,###,###");
          Tampil.Print Tab(92); RKanan(mJual, "#,###");
          Tampil.Print Tab(100); RKanan(Mbayar, "###,###,###")
          msubtotalJual = msubtotalJual + mJual
          msubtotalbayar = msubtotalbayar + Mbayar
          MBaris = MBaris + 1
          .MoveNext
       Loop
          mtotalJual = mtotalJual + msubtotalJual
          mtotalbayar = mtotalbayar + msubtotalbayar
       Tampil.Print MGrs
       Tampil.Print Tab(5); "Sub Total:";
       Tampil.Print Tab(92); RKanan(msubtotalJual, "#,###");
       Tampil.Print Tab(100); RKanan(msubtotalbayar, & _
       "###,###,###") & ",-"
       Tampil.Print Tab(5); "Total:";
       Tampil.Print Tab(92); RKanan(mtotalJual, "#,###");
       Tampil.Print Tab(100); RKanan(mtotalbayar, & _
       "###,###,###") & ",-"
       Tampil.Print MGrs
    Loop
    End With
End Sub




154
Private Function RKanan(NData, CFormat) As String
    RKanan = Format(NData, CFormat)
    RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan
End Function




                                                          155

Mais conteúdo relacionado

Semelhante a OPTIMALKAN DATA RELASI

Semelhante a OPTIMALKAN DATA RELASI (11)

Jeni J2 Me Bab05 Persistence
Jeni J2 Me Bab05 PersistenceJeni J2 Me Bab05 Persistence
Jeni J2 Me Bab05 Persistence
 
Jeni j2 me-bab05-persistence
Jeni j2 me-bab05-persistenceJeni j2 me-bab05-persistence
Jeni j2 me-bab05-persistence
 
Pertemuan ke XIII.doc
Pertemuan ke XIII.docPertemuan ke XIII.doc
Pertemuan ke XIII.doc
 
Metode penghapusan record
Metode penghapusan recordMetode penghapusan record
Metode penghapusan record
 
Greedy (1)
Greedy (1)Greedy (1)
Greedy (1)
 
2007 2008
2007 20082007 2008
2007 2008
 
Pelatihan Bahasa R
Pelatihan Bahasa RPelatihan Bahasa R
Pelatihan Bahasa R
 
Modul
ModulModul
Modul
 
Pertemuan ke XIII b.doc
Pertemuan ke XIII b.docPertemuan ke XIII b.doc
Pertemuan ke XIII b.doc
 
Menyimpan Data Ke Database Dengan Ajax Dan PHP
Menyimpan Data Ke Database Dengan Ajax Dan PHPMenyimpan Data Ke Database Dengan Ajax Dan PHP
Menyimpan Data Ke Database Dengan Ajax Dan PHP
 
Vibi net sql server 2005 dan my sql
Vibi net sql server 2005 dan my sqlVibi net sql server 2005 dan my sql
Vibi net sql server 2005 dan my sql
 

Mais de Nurdin Al-Azies

Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)Nurdin Al-Azies
 
Daftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf KallaDaftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf KallaNurdin Al-Azies
 
Daftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko WidodoDaftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko WidodoNurdin Al-Azies
 
Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia Nurdin Al-Azies
 
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)Nurdin Al-Azies
 
Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)Nurdin Al-Azies
 
Desain grafis ver1 2-pdf
Desain grafis ver1 2-pdfDesain grafis ver1 2-pdf
Desain grafis ver1 2-pdfNurdin Al-Azies
 
Biar ngampus tak sekedar status
Biar ngampus tak sekedar statusBiar ngampus tak sekedar status
Biar ngampus tak sekedar statusNurdin Al-Azies
 
Kreatif entreupreneur workshop
Kreatif entreupreneur workshopKreatif entreupreneur workshop
Kreatif entreupreneur workshopNurdin Al-Azies
 
Strategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDKStrategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDKNurdin Al-Azies
 
7 international linkages
7 international linkages7 international linkages
7 international linkagesNurdin Al-Azies
 
04 ekonomi mikro rancang bangun ekonomi islam
04 ekonomi mikro     rancang bangun ekonomi islam04 ekonomi mikro     rancang bangun ekonomi islam
04 ekonomi mikro rancang bangun ekonomi islamNurdin Al-Azies
 
03 ekonomi mikro permintaan dan penawaran
03 ekonomi mikro     permintaan dan penawaran03 ekonomi mikro     permintaan dan penawaran
03 ekonomi mikro permintaan dan penawaranNurdin Al-Azies
 
02 ekonomi mikro pendahulan tentang ekonomi mikro
02 ekonomi mikro    pendahulan tentang ekonomi mikro02 ekonomi mikro    pendahulan tentang ekonomi mikro
02 ekonomi mikro pendahulan tentang ekonomi mikroNurdin Al-Azies
 
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )Nurdin Al-Azies
 

Mais de Nurdin Al-Azies (20)

Jadwal Piala Dunia 2014
Jadwal Piala Dunia 2014Jadwal Piala Dunia 2014
Jadwal Piala Dunia 2014
 
Visi misi prabowo-hatta
Visi misi prabowo-hattaVisi misi prabowo-hatta
Visi misi prabowo-hatta
 
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
 
Daftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf KallaDaftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf Kalla
 
Daftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko WidodoDaftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko Widodo
 
Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia
 
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
 
Brosur dan biaya
Brosur dan biayaBrosur dan biaya
Brosur dan biaya
 
Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)
 
Desain grafis ver1 2-pdf
Desain grafis ver1 2-pdfDesain grafis ver1 2-pdf
Desain grafis ver1 2-pdf
 
Biar ngampus tak sekedar status
Biar ngampus tak sekedar statusBiar ngampus tak sekedar status
Biar ngampus tak sekedar status
 
Kreatif entreupreneur workshop
Kreatif entreupreneur workshopKreatif entreupreneur workshop
Kreatif entreupreneur workshop
 
Strategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDKStrategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDK
 
Dakwah Kreatif
Dakwah KreatifDakwah Kreatif
Dakwah Kreatif
 
Adobe Flash:
Adobe Flash: Adobe Flash:
Adobe Flash:
 
7 international linkages
7 international linkages7 international linkages
7 international linkages
 
04 ekonomi mikro rancang bangun ekonomi islam
04 ekonomi mikro     rancang bangun ekonomi islam04 ekonomi mikro     rancang bangun ekonomi islam
04 ekonomi mikro rancang bangun ekonomi islam
 
03 ekonomi mikro permintaan dan penawaran
03 ekonomi mikro     permintaan dan penawaran03 ekonomi mikro     permintaan dan penawaran
03 ekonomi mikro permintaan dan penawaran
 
02 ekonomi mikro pendahulan tentang ekonomi mikro
02 ekonomi mikro    pendahulan tentang ekonomi mikro02 ekonomi mikro    pendahulan tentang ekonomi mikro
02 ekonomi mikro pendahulan tentang ekonomi mikro
 
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
 

OPTIMALKAN DATA RELASI

  • 1. BAB 4 MERELASIKAN DATA 4.1 Program Pembelian Barang Merelasikan data merupakan suatu hal yang sangat diperlukan dalam mengolah database. Pada kesempatan kali ini Anda akan mencoba membuat relasi data dalam sebuah aplikasi pembelian dan tabel yang akan digunakan adalah tabel barang, pemasok dan tabel beli. Jika kode barang diketik maka akan muncul nama barang, harga satuan dan jumlah stok yang tersedia. Begitu juga jika mengetik kode pemasok maka akan muncul nama pemasok, alamat, nomor telepon dan relasi yang dapat dihubungi. Akan tetapi jika kode barang yang diketik tidak ada, akan muncul komentar bahwa data barang belum terdaftar, kemudian pertanyaan apakah data baru ini akan langsung diinput atau tidak. Jadi dengan program ini kita dapat langsung mengentri data barang tanpa harus membuka form pengolahan data barang. Hal yang sama terjadi pada pemasok. Jika kode pemasok tidak terdaftar pada tabel pemasok, akan muncul pertanyaan apakah data pemasok baru akan langsung diinput atau tidak. Selain itu data pembelian ini akan langsung mengubah jumlah data barang yang ada. Inilah salah satu kelebihan yang ada pada program yang akan dibuat, dengan satu form (Pembelian) kita dapat langsung mengentri 131
  • 2. data barang dan data pemasok jika ternyata kode barang dan kode pemasoknya belum terdaftar pada kedua tabel tersebut dan jumlah barang langsung di-update, kemudian data pembelian ini akan disimpan pada tabel beli. Perhatikan dengan baik rancangan tabel beli yang pernah dibuat. Di dalamnya terdapat field kode barang dan kode pemasok dengan field-field tersebut merupakan field kunci pada tabel barang dan tabel pemasok. Dengan teknik seperti ini maka tabel beli mampu mengambil data yang diperlukan dari tabel barang dan tabel pemasok tersebut. Untuk mencoba program pembelian, rancanglah sebuah form dengan bentuk seperti gambar di bawah ini: Gambar 4.1 Menu Pembelian Barang Nama Properti Seting Obyek Text1 Name TxtNoFaktur Text2 Name TxtKodeBrg Text3 Name TxtHarga Text4 Name TxtKodePms Text5 Name TxtTelp Text6 Name TxtJumBeli Text7 Name TxtTglFaktur 132
  • 3. Text8 Name TxtNamaBrg Text9 Name TxtStokBrg Text10 Name TxtNamaPms Text11 Name TxtAlamat Text12 Name TxtRelasi Text13 Name TxtTotal Text14 Name JmlData Command1 Name Cmdinput Caption &Input Command2 Name Cmdtutup Caption &Tutup Data1 Name Data1 DatabaseName C:Belajar VBMaster.mdb Caption Brg RecordSource Barang RecordsetType 0 – Table Data2 Name Data2 DatabaseName C:Belajar VBMaster.mdb Caption Pms RecordSource Pemasok RecordsetType 0 – Table Data3 Name Data3 DatabaseName C:Belajar VBMaster.mdb Caption Beli RecordSource Beli RecordsetType 0 – Table 133
  • 4. Listing Program: ‘Fungsi untuk mencari jumlah data Function JumlahData() mjumlah = Data3.Recordset.RecordCount JmlData = mjumlah End Function Private Sub Form_activate() txtnofaktur.MaxLength = 6 txtkodebrg.MaxLength = 6 txtharga.MaxLength = 8 txtkodepms.MaxLength = 6 txttelpon.MaxLength = 8 txtjumbeli.MaxLength = 4 txttglfaktur.MaxLength = 8 txtnamabrg.MaxLength = 30 txtstokbrg.MaxLength = 4 txtnamapms.MaxLength = 30 txtalamat.MaxLength = 30 txtrelasi.MaxLength = 15 txttotal.MaxLength = 8 tidaksiapisi cmdinput.SetFocus JumlahData End Sub Private Sub cmdinput_click() If cmdinput.Caption = "&Input" Then cmdinput.Caption = "&Simpan" cmdtutup.Caption = "&Batal" siapisi txtnofaktur.SetFocus Else If txtnofaktur = Empty Then pesan = MsgBox("Nomor Faktur Tidak Boleh Kosong", & _ 0, "Informasi") txtnofaktur.SetFocus Else With Data3.Recordset .AddNew !NoFaktur = txtnofaktur !TglFaktur = txttglfaktur !kodebrg = txtkodebrg !kodepms = txtkodepms !jmlbeli = txtjumbeli .Update End With With Data1.Recordset .Index = "barangdex" .Seek "=", txtkodebrg If .NoMatch Then 134
  • 5. .AddNew !kodebrg = txtkodebrg !namabrg = txtnamabrg !harga = txtharga !Jumlah = txtjumbeli .Update Else .Edit !Jumlah = !Jumlah + txtjumbeli .Update End If End With With Data2.Recordset .Index = "Pemasokdex" .Seek "=", txtkodepms If .NoMatch Then .AddNew !kodepms = txtkodepms !namapms = txtnamapms !AlamatPms = txtalamat !TelponPms = txttelpon !RelasiPms = txtrelasi .Update End If End With Data1.Refresh Data2.Refresh Data3.Refresh kosongkan tidaksiapisi semula End If End If JumlahData End Sub Private Sub txtnofaktur_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txttglfaktur = Date txtkodebrg.SetFocus End If End Sub Private Sub txttglfaktur_keypress(KeyAscii As Integer) If KeyAscii = 13 Then txtkodebrg.SetFocus End If End Sub Private Sub txtkodebrg_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) 135
  • 6. If KeyAscii = 13 Then With Data1.Recordset .Index = "barangdex" .Seek "=", txtkodebrg If Not .NoMatch Then txtnamabrg.Enabled = False txtharga.Enabled = False txtstokbrg.Enabled = False txtnamabrg = Data1.Recordset!namabrg txtharga = Data1.Recordset!harga txtstokbrg = Data1.Recordset!Jumlah txtkodepms.SetFocus Else x = MsgBox("Kode Barang Tidak Ada, Data Barang & _ Langsung Dientri...!", vbYesNo, "Konfirmasi") If x = vbYes Then txtnamabrg.Enabled = True txtharga.Enabled = True txtstokbrg.Enabled = True txtnamabrg = "" txtharga = "" txtstokbrg = "" txtnamabrg.SetFocus Else txtkodebrg.SetFocus End If End If End With End If End Sub Private Sub txtkodepms_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then With Data2.Recordset .Index = "pemasokdex" .Seek "=", txtkodepms If Not .NoMatch Then txtnamapms.Enabled = False txttelpon.Enabled = False txtalamat.Enabled = False txtrelasi.Enabled = False txtnamapms = Data2.Recordset!namapms txttelpon = Data2.Recordset!TelponPms txtalamat = Data2.Recordset!AlamatPms txtrelasi = Data2.Recordset!RelasiPms txtjumbeli.Enabled = True txtjumbeli.SetFocus Else x = MsgBox("Kode Pemasok Tidak Ada, Apakah & _ akan Langsung Diinput...?", vbYesNo, "Konfirmasi") If x = vbYes Then siapisi 136
  • 7. txtnamapms.SetFocus Else txtkodepms.SetFocus End If End If End With End If End Sub Private Sub txtnamabrg_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtharga.SetFocus End If End Sub Private Sub txtharga_keypress(KeyAscii As Integer) If KeyAscii = 13 Then With Data1.Recordset .Index = "barangdex" .Seek "=", txtkodebrg If .NoMatch Then txtkodepms.SetFocus End If End With End If End Sub Private Sub txtnamapms_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txttelpon.SetFocus End If End Sub Private Sub txttelpon_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtalamat.SetFocus End If End Sub Private Sub txtalamat_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtrelasi.SetFocus End If End Sub Private Sub txtrelasi_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtjumbeli.SetFocus 137
  • 8. End If End Sub Private Sub cmdtutup_Click() Select Case cmdtutup.Caption Case "&Tutup" End Case "&Batal" kosongkan tidaksiapisi semula End Select End Sub Private Sub kosongkan() Dim Ctl As Control For Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End If Next End Sub Private Sub tampilkan() tidaksiapisi With Data3.Recordset txtnofaktur = !NoFaktur txtkodebrg = !kodebrg txtharga = !harga txttelpon = !TelponPms txtrealsi = !RelasiPms End With End Sub Private Sub siapisi() Dim x As Control For Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End If Next End Sub Private Sub tidaksiapisi() Dim x As Control For Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End If Next End Sub Private Sub semula() 138
  • 9. cmdinput.Caption = "&Input" cmdtutup.Caption = "&Tutup" cmdinput.Enabled = True cmdtutup.Enabled = True End Sub Private Sub txtjumbeli_Change() txttotal.Enabled = False txttotal = Val(txtjumbeli) * Val(txtharga) End Sub Private Sub txtjumbeli_keypress(KeyAscii As Integer) If KeyAscii = 13 Then cmdinput.SetFocus End If End Sub Penjelasan Program: With Data1.Recordset .Index = "barangdex" .Seek "=", txtkodebrg If .NoMatch Then .AddNew !kodebrg = txtkodebrg !namabrg = txtnamabrg !harga = txtharga !Jumlah = txtjumbeli .Update Else .Edit !Jumlah = !Jumlah + txtjumbeli .Update End If End With Potongan program ini berarti pada saat cmdinput diklik dan data barang tidak ditemukan maka entrilah data baru tersebut, tapi jika data barang ditemukan maka editlah jumlahnya dengan cara menambahkan jumlah pembelian ke tabel barang (field jumlah). Private Sub kosongkan() Dim Ctl As Control For Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End If Next End Sub Sub program ini menyimpan semua control ke dalam variabel Ctl, dan jika nama control tersebut terbuat dari TextBox, kosongkanlah 139
  • 10. isi yang ada di dalamnya. Cara ini lebih efektif digunakan dibandingkan dengan mengosongkan semua text seperti cara yang pernah dibicarakan pada Bab I. Jika ada control lain yang digunakan dalam form ini, Anda tinggal menambahkan nama dari control yang digunakan itu. Misalnya Combobox, DBCombo dan lain-lain. Contoh: Private Sub kosongkan() Dim Ctl As Control For Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End If If TypeName(Ctl) = "ComboBox" Then Ctl.Text = "" End If If TypeName(Ctl) = "DBCombo" Then Ctl.Text = "" End If Next End Sub Private Sub siapisi() Dim x As Control For Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End If Next End Sub Perhatikan sub program di atas. Pada dasarnya sub program tersebut sama dengan sub program Kosongkan. Perbedaanya terletak pada kondisi apa yang diinginkan pada control tersebut, dalam hal ini semua control dapat digunakan, maka perintah yang diberikan adalah Enabled=True. 4.2 Program Penjualan Barang Pada dasarnya program penjualan ini hampir mirip dengan program pembelian, perbedaanya terletak pada: 1. Tabel Pemasok diganti dengan tabel pelanggan, 2. Tabel Beli diganti dengan jual, 140
  • 11. 3. Jumlah penjualan mengurangi jumlah barang, 4. Harga jual dinaikan 10% dari harga asli barang untuk mendapatkan laba. Kode barang dan kode pemasok yang berupa text (di program pembelian) diganti dengan DBCombo dan dengan DBCombo ini kita dapat langsung menampilkan daftar field kode barang dan kode pemasok atau dapat mengetik di dalamnya. Untuk membuat program tersebut, rancanglah form berbentuk seperti Gambar 4.2. Gambar 4.2 Menu Penjualan Barang Nama Properti Seting Obyek DBCombo1 Name DBCombo1 Rowsource Data1 Listfield Kodebrg DBCombo2 Name DBCombo2 Rowsource Data2 Listfield Kodeplg Data1 Name Data1 DatabaseName C:Belajar VBMaster.mdb Caption Brg RecordSource Barang 141
  • 12. RecordsetType 0 – Table Data2 Name Data2 DatabaseName C:Belajar VBMaster.mdb Caption Plg RecordSource Pelanggan RecordsetType 0 – Table Data3 Name Data3 DatabaseName C:Belajar VBMaster.mdb Caption Jual RecordSource Jual RecordsetType 0 – Table Listing Program: Function JumlahData() mjumlah = Data3.Recordset.RecordCount JmldataJual = mjumlah End Function Private Sub Form_activate() txtnofaktur.MaxLength = 6 txtharga.MaxLength = 8 txttelpon.MaxLength = 8 txtjumjual.MaxLength = 4 txttglfaktur.MaxLength = 8 txtnamabrg.MaxLength = 30 txtstokbrg.MaxLength = 4 txtnamaplg.MaxLength = 30 txtalamat.MaxLength = 30 txtrelasi.MaxLength = 15 txttotal.MaxLength = 8 tidaksiapisi cmdinput.SetFocus JumlahData End Sub Private Sub cmdinput_click() JumlahData If cmdinput.Caption = "&Input" Then cmdinput.Caption = "&Simpan" cmdtutup.Caption = "&Batal" siapisi 142
  • 13. txtnofaktur.SetFocus Else If txtnofaktur = Empty Then pesan = MsgBox("Nomor Faktur Tidak Boleh Kosong", & _ 0, "Informasi") txtnofaktur.SetFocus Else With Data3.Recordset .AddNew !Nofaktur = txtnofaktur !tglfaktur = txttglfaktur !kodebrg = DBCombo1 !KodePlg = DBCombo2 !JmlJual = txtjumjual .Update Data3.Refresh End With With Data1.Recordset .Index = "barangdex" .Seek "=", DBCombo1 If .NoMatch Then .AddNew !kodebrg = DBCombo1 !Namabrg = txtnamabrg !harga = txtharga !Jumlah = txtstokbrg .Update Else .Edit !Jumlah = !Jumlah - txtjumjual .Update End If End With With Data2.Recordset .Index = "Pelanggandex" .Seek "=", DBCombo2 If .NoMatch Then .AddNew !KodePlg = DBCombo2 !Namaplg = txtnamaplg !AlamatPlg = txtalamat !TelponPlg = txttelpon !RelasiPlg = txtrelasi .Update End If End With Data1.Refresh Data2.Refresh Data3.Refresh kosongkan tidaksiapisi semula End If 143
  • 14. End If JumlahData End Sub Private Sub txtnofaktur_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txttglfaktur = Format(Date, "DD/MM/YY") DBCombo1.SetFocus End If End Sub Private Sub txttglfaktur_keypress(KeyAscii As Integer) If KeyAscii = 13 Then DBCombo1.SetFocus End If End Sub Private Sub DBCombo1_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub Private Sub dbcombo1_change() If Len(DBCombo1.Text) < 6 Then Exit Sub End If With Data1.Recordset .Index = "barangdex" .Seek "=", DBCombo1 If Not .NoMatch Then txtnamabrg.Enabled = False txtharga.Enabled = False txtstokbrg.Enabled = False txtnamabrg = Data1.Recordset!Namabrg txtharga = (Val(Data1.Recordset!harga) + & _ (Val(Data1.Recordset!harga)) * 0.1) txtstokbrg = Data1.Recordset!Jumlah DBCombo2.SetFocus Else x = MsgBox("Kode Barang Tidak Ada, Data Barang & _ Langsung dientri...!", vbYesNo, "Konfirmasi") If x = vbYes Then txtnamabrg.SetFocus Else DBCombo1.SetFocus End If End If End With End Sub Private Sub DBCombo2_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub 144
  • 15. Private Sub DBCombo2_change() If Len(DBCombo2.Text) < 6 Then Exit Sub End If With Data2.Recordset .Index = "Pelanggandex" .Seek "=", DBCombo2 If Not .NoMatch Then txtnamaplg.Enabled = False txttelpon.Enabled = False txtalamat.Enabled = False txtrelasi.Enabled = False txtnamaplg = Data2.Recordset!Namaplg txttelpon = Data2.Recordset!TelponPlg txtalamat = Data2.Recordset!AlamatPlg txtrelasi = Data2.Recordset!RelasiPlg txtjumjual.Enabled = True txtjumjual.SetFocus Else x = MsgBox("Kode Pelanggan Tidak Ada, Apakah akan & _ Langsung Diinput...?", vbYesNo, "Konfirmasi") If x = vbYes Then siapisi txtnamaplg.SetFocus Else DBCombo2.SetFocus End If End If End With End Sub Private Sub txtnamabrg_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtharga.SetFocus End If End Sub Private Sub txtharga_keypress(KeyAscii As Integer) If KeyAscii = 13 Then With Data1.Recordset .Index = "barangdex" .Seek "=", DBCombo1 If .NoMatch Then txtstokbrg.SetFocus End If End With End If End Sub Private Sub txtnamaPlg_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) 145
  • 16. If KeyAscii = 13 Then txttelpon.SetFocus End If End Sub Private Sub txtstokbrg_keypress(KeyAscii As Integer) If KeyAscii = 13 Then DBCombo2.SetFocus End If End Sub Private Sub txttelpon_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtalamat.SetFocus End If End Sub Private Sub txtalamat_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtrelasi.SetFocus End If End Sub Private Sub txtrelasi_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then txtjumjual.SetFocus End If End Sub Private Sub cmdtutup_Click() Select Case cmdtutup.Caption Case "&Tutup" End Case "&Batal" kosongkan tidaksiapisi semula End Select End Sub Private Sub kosongkan() Dim Ctl As Control For Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End If If TypeName(Ctl) = "DBCombo" Then Ctl.Text = "" End If Next 146
  • 17. End Sub Private Sub tampilkan() tidaksiapisi With Data3.Recordset txtnofaktur = !Nofaktur DBCombo1 = !kodebrg txtharga = !harga txttelpon = !TelponPlg txtrealsi = !RelasiPlg End With End Sub Private Sub siapisi() Dim x As Control For Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End If If TypeName(x) = "DBCombo" Then x.Enabled = True End If Next End Sub Private Sub tidaksiapisi() Dim x As Control For Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = False End If If TypeName(x) = "DBCombo" Then x.Enabled = False End If Next End Sub Private Sub semula() cmdinput.Caption = "&Input" cmdtutup.Caption = "&Tutup" cmdinput.Enabled = True cmdtutup.Enabled = True End Sub Private Sub txtjumJual_Change() If Val(txtjumjual) > Val(txtstokbrg) Then x = MsgBox("Persediaan Barang Kurang, Lihat Stok & _ Barang...!", 0, "Informasi") txtjumjual.SetFocus Else txttotal.Enabled = False txttotal = Val(txtjumjual) * Val(txtharga) End If 147
  • 18. End Sub Private Sub txtjumJual_keypress(KeyAscii As Integer) If KeyAscii = 13 Then cmdinput.SetFocus End If End Sub 4.3 Program Pencetakan Data Pembelian Walaupun yang tersimpan dalam program pencetakan data pembelian adalah kode barang dan kode pemasok, yang akan ditampilkan dalam pencetakan adalah nama barang dan nama pemasoknya. Hal ini dilakukan karena jika yang ditampilkan hanya kode barang atau kode pemasok, informasinya kurang bermanfaat. Untuk mengatasi hal inilah relasi data diperlukan. Program dapat menampilkan nama barang dan nama pemasok karena kode barang dan kode pemasok merupakan field kunci di tabel masing-masing. Jika sebuah field kunci tersimpan dalam tabel lain, item-item data lainnya dapat ditampilkan dengan cara mengaktifkan field yang dijadikan kunci tersebut. Hal yang sama dapat dilakukan pada program pencetakan data penjualan. Untuk dapat menampilkan pencetakan ke layar, dibutuhkan satu form tambahan yang tidak berisi obyek apapun di dalamnya dan form tersebut kita ubah properti Name-nya menjadi Tampil. Untuk membuat program pencetakan tersebut, buatlah rancangan form seperti Gambar 4.3. Gambar 4.3 Menu Pencetakan Data Pembelian Nama Obyek Properti Seting Command1 Name Command1 Caption &Cetak Ke Layar 148
  • 19. Data1 Name Data1 Caption Brg DatabaseName C:Belajar VBMaster.mdb RecordsetType 0 – Table RecordSource Barang Data2 Name Data2 Caption Pms DatabaseName C:Belajar VBMaster.mdb RecordsetType 0 – Table RecordSource Pemasok Data3 Name Data3 Caption Beli DatabaseName C:Belajar VBMaster.mdb RecordsetType 1 – Dynaset RecordSource Beli Listing Program: Private Sub Command1_Click() Tampil.Show ‘definisikan variabel hitungan Dim MSubtotal, MTotal As Long Dim MNo, MHal, MBaris As Integer Dim MJumlah As Double ‘definisikan garis Dim MGrs As String Tampil.Show ‘Pilih bentuk huruf Tampil.Font = "Courier New" With Data3.Recordset ‘Jika data pembelian kosong, munculkan pesan If Data3.Recordset.RecordCount = 0 Then x = MsgBox("Data Pembelian Belum Ada", 0, "Informasi") Exit Sub End If ‘bawa ke record pertama .MoveFirst mtotalharga = 0 149
  • 20. mtotalbeli = 0 mtotalbayar = 0 MNo = 0 MHal = 0 ‘Cetak Judul laporan Do While Not .EOF MHal = MHal + 1 Tampil.Print Tampil.Print Tampil.FontBold = True Tampil.FontSize = 10 Tampil.Print Tab(10); "Data Pembelian PT. ABC" Tampil.Print Tab(10); "Tanggal Cetak: "; Format(Date,& _ "DD-MMM-YY") Tampil.FontBold = False Tampil.FontSize = 8 Tampil.Print Tampil.Print Tab(90); "Hal:"; Format(MHal, "###") MGrs = String$(110, "-") Tampil.Print MGrs Tampil.Print Tab(3); "No."; Tampil.Print Tab(8); "No Fkt"; Tampil.Print Tab(18); "TGL Fkt"; Tampil.Print Tab(30); "Nama Barang"; Tampil.Print Tab(57); "Nama Pemasok"; Tampil.Print Tab(82); "Harga"; Tampil.Print Tab(92); "Jumlah"; Tampil.Print Tab(105); "Total" Tampil.Print MGrs msubtotalbeli = 0 msubtotalbayar = 0 MBaris = 0 cetak isi tabel Do While Not .EOF And MBaris <= 30 MNo = MNo + 1 Data1.Recordset.Index = "Barangdex" Data1.Recordset.Seek "=", Data3.Recordset!kodebrg Data2.Recordset.Index = "Pemasokdex" Data2.Recordset.Seek "=", Data3.Recordset!kodepms mharga = Data1.Recordset!harga mbeli = Data3.Recordset!jmlbeli Mbayar = mharga * mbeli Tampil.Print Tab(2); RKanan(MNo, "###"); Tampil.Print Tab(8); Data3.Recordset!NoFaktur; Tampil.Print Tab(18);Format(Data3. & _ Recordset!TglFaktur, "DD-MMM-YY"); Tampil.Print Tab(30); Data1.Recordset!namabrg; Tampil.Print Tab(57); Data2.Recordset!namapms; Tampil.Print Tab(78); RKanan(mharga, "###,###,###"); Tampil.Print Tab(92); RKanan(mbeli, "#,###"); Tampil.Print Tab(100); RKanan(Mbayar, "###,###,###") msubtotalbeli = msubtotalbeli + mbeli msubtotalbayar = msubtotalbayar + Mbayar 150
  • 21. MBaris = MBaris + 1 .MoveNext Loop mtotalbeli = mtotalbeli + msubtotalbeli mtotalbayar = mtotalbayar + msubtotalbayar Tampil.Print MGrs Tampil.Print Tab(5); "Sub Total:"; Tampil.Print Tab(92); RKanan(msubtotalbeli, "#,###"); Tampil.Print Tab(100); RKanan(msubtotalbayar, & _ "###,###,###") & ",-" Tampil.Print Tab(5); "Total:"; Tampil.Print Tab(92); RKanan(mtotalbeli, "#,###"); Tampil.Print Tab(100); RKanan(mtotalbayar, "###,###,###") & ",-" Tampil.Print MGrs Loop End With End Sub ‘Fungsi Meratakan Angka (Numeric) Private Function RKanan(NData, CFormat) As String RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan End Function Hasil: Gambar 4.4 Hasil pencetakan data pembelian 4.4 Program Pencetakan Data Penjualan Garis besar program pencetakan data penjualan ini sama seperti program sebelumnya. Perbedaannya, pada program ini data 151
  • 22. pemasok diubah dengan data pelanggan. Untuk keperluan pencetakan di atas, buatlah form seperti Gambar 4.5. Gambar 4.5 Menu Pencetakan Data Penjualan Nama Obyek Properti Seting Command1 Name Command1 Caption &Cetak Ke Layar Data1 Name Data1 Caption Brg DatabaseName C:Belajar VBMaster.mdb RecordsetType 0 – Table RecordSource Barang Data2 Name Data2 Caption Plg DatabaseName C:Belajar VBMaster.mdb RecordsetType 0 – Table RecordSource Pelanggan Data3 Name Data3 Caption Jual DatabaseName C:Belajar VBMaster.mdb RecordsetType 1 – Dynaset RecordSource Jual 152
  • 23. Hasil: Gambar 4.6 Hasil pencetakan data penjualan Listing Program: Private Sub Command1_Click() Tampil.Show Dim MSubtotal, MTotal As Long Dim MNo, MHal, MBaris As Integer Dim MJumlah As Double Dim MGrs As String Tampil.Show Tampil.Font = "Courier New" With Data3.Recordset If Data3.Recordset.RecordCount = 0 Then x = MsgBox("Data Penjualan Belum Ada", 0, "Informasi") Exit Sub End If .MoveFirst mtotalharga = 0 mtotalJual = 0 mtotalbayar = 0 MNo = 0 MHal = 0 Do While Not .EOF MHal = MHal + 1 Tampil.Print Tampil.Print Tampil.FontBold = True Tampil.FontSize = 10 Tampil.Print Tab(10); "Data Penjualan PT. ABC" Tampil.Print Tab(10); "Tanggal Cetak: "; & _ Format(Date, "DD-MMM-YY") Tampil.FontBold = False Tampil.FontSize = 8 Tampil.Print Tampil.Print Tab(90); "Hal:"; Format(MHal, "###") 153
  • 24. MGrs = String$(110, "-") Tampil.Print MGrs Tampil.Print Tab(3); "No."; Tampil.Print Tab(8); "No Fkt"; Tampil.Print Tab(18); "TGL Fkt"; Tampil.Print Tab(30); "Nama Barang"; Tampil.Print Tab(57); "Nama Pelanggan"; Tampil.Print Tab(82); "Harga"; Tampil.Print Tab(92); "Jumlah"; Tampil.Print Tab(105); "Total" Tampil.Print MGrs msubtotalJual = 0 msubtotalbayar = 0 MBaris = 0 Do While Not .EOF And MBaris <= 30 MNo = MNo + 1 Data1.Recordset.Index = "Barangdex" Data1.Recordset.Seek "=", Data3.Recordset!kodebrg Data2.Recordset.Index = "Pelanggandex" Data2.Recordset.Seek "=", Data3.Recordset!kodePlg mharga = Data1.Recordset!harga mJual = Data3.Recordset!jmlJual Mbayar = mharga * mJual Tampil.Print Tab(2); RKanan(MNo, "###"); Tampil.Print Tab(8); Data3.Recordset!NoFaktur; Tampil.Print Tab(18);Format(Data3.Recordset & _ !TglFaktur, "DD-MMM-YY"); Tampil.Print Tab(30); Data1.Recordset!namabrg; Tampil.Print Tab(57); Data2.Recordset!namaPlg; Tampil.Print Tab(78); RKanan(mharga, "###,###,###"); Tampil.Print Tab(92); RKanan(mJual, "#,###"); Tampil.Print Tab(100); RKanan(Mbayar, "###,###,###") msubtotalJual = msubtotalJual + mJual msubtotalbayar = msubtotalbayar + Mbayar MBaris = MBaris + 1 .MoveNext Loop mtotalJual = mtotalJual + msubtotalJual mtotalbayar = mtotalbayar + msubtotalbayar Tampil.Print MGrs Tampil.Print Tab(5); "Sub Total:"; Tampil.Print Tab(92); RKanan(msubtotalJual, "#,###"); Tampil.Print Tab(100); RKanan(msubtotalbayar, & _ "###,###,###") & ",-" Tampil.Print Tab(5); "Total:"; Tampil.Print Tab(92); RKanan(mtotalJual, "#,###"); Tampil.Print Tab(100); RKanan(mtotalbayar, & _ "###,###,###") & ",-" Tampil.Print MGrs Loop End With End Sub 154
  • 25. Private Function RKanan(NData, CFormat) As String RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan End Function 155