merelasikan data

Upload: zatmikomiko

Post on 30-May-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Merelasikan Data

    1/25

    131

    BAB4

    MERELASIKAN DATA

    4.1 Program Pembelian BarangMerelasikan data merupakan suatu hal yang sangat diperlukan

    dalam mengolah database. Pada kesempatan kali ini Anda akan

    me ncoba m em buat relasi data dalam sebua h aplikasi pembelian da ntabel yang a kan digunakan ada lah tabel barang, pem asok 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 ba hwa data barang belum terdaftar, kemudian pertanyaan

    ap aka h data ba ru ini aka n langs ung diinput atau tidak. J adi dengan

    program ini kita dapat langsung mengentri data barang tanpa harus

    me mbuka form pengolahan da ta barang. Hal yang sam a terjadi pada

    pemasok. Jika kode pemasok tidak terdaftar pada tabel pemasok,

    akan muncul pertanyaan apakah data pemasok baru akan langsungdiinput atau tidak. Selain itu data pembelian ini akan langsung

    me ngubah jumlah data barang yang ada.

    Inilah salah satu kelebihan yang ada pada program yang akan

    dibuat, dengan satu form (Pembelian) kita dapat langsung mengentri

  • 8/14/2019 Merelasikan Data

    2/25

    132

    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

    disimp an pa da tabel beli.

    Perhatikan dengan baik rancangan tabel beli yang pernah dibuat. Di

    dalamnya terdapat field kode barang dan kode pemasok dengan

    field-field tersebut me rupaka n 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

    sebua h form den gan be ntuk sepe rti gam bar di bawah ini:

    Gam bar 4.1 Menu Pem belian Barang

    Nama

    Obyek

    Properti Seting

    Text1 Nam e TxtNoFaktur

    Text2 Nam e TxtKodeBrg

    Text3 Nam e TxtHarga

    Text4 Nam e TxtKodePm sText5 Nam e TxtTelp

    Text6 Nam e TxtJ um Beli

    Text7 Nam e TxtTglFaktur

  • 8/14/2019 Merelasikan Data

    3/25

    133

    Text8 Nam e TxtNam aBrg

    Text9 Nam e TxtStokBrg

    Text10 Name TxtNam aPms

    Text11 Nam e TxtAlam at

    Text12 Nam e TxtRelasi

    Text13 Nam e TxtTotal

    Text14 Name J mlData

    Command1 Name

    Caption

    Cmdinput

    &Input

    Command2 Name

    Caption

    Cmdtutup

    &Tutup

    Data1 Name

    DatabaseName

    Caption

    RecordSource

    RecordsetType

    Data1

    C:\Belajar VB\Master.mdb

    Brg

    Barang

    0 Tab le

    Data2 Name

    DatabaseName

    Caption

    RecordSource

    RecordsetType

    Data2

    C:\Belajar VB\Master.mdb

    Pm s

    Pemasok

    0 Tab le

    Data3 Name

    DatabaseName

    Caption

    RecordSource

    RecordsetType

    Data3

    C:\Belajar VB\Master.mdb

    Beli

    Beli

    0 Tab le

  • 8/14/2019 Merelasikan Data

    4/25

    134

    List ing Progra m:

    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 = 8txtjumbeli.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

  • 8/14/2019 Merelasikan Data

    5/25

    135

    .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

    kosongkantidaksiapisi

    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)))

  • 8/14/2019 Merelasikan Data

    6/25

    136

    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

  • 8/14/2019 Merelasikan Data

    7/25

    137

    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 IfEnd 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

  • 8/14/2019 Merelasikan Data

    8/25

    138

    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 = !TelponPmstxtrealsi = !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()

  • 8/14/2019 Merelasikan Data

    9/25

    139

    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.SetFocusEnd If

    End Sub

    Penjelas an 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

  • 8/14/2019 Merelasikan Data

    10/25

    140

    isi yang ada di dalamnya. Cara ini lebih efektif digunakan

    dibandingkan dengan mengosongkan semua text seperti cara yang

    pernah dibicarak an p ada Bab I. J ika a da c ontrol 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" ThenCtl.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 BarangPada dasarnya program penjualan ini hampir mirip dengan programpem belian, p erbedaanya terletak p ada:

    1. Tabel Pemasok diganti dengan tabel pelanggan,2. TabelBeli diganti dengan jual,

  • 8/14/2019 Merelasikan Data

    11/25

    141

    3. J umlah 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.

    Gam bar 4.2 Menu Penjualan Barang

    NamaObyek

    Properti Seting

    DBCombo1 Name

    Rowsource

    Listfield

    DBCombo1

    Data1

    Kodebrg

    DBCombo2 Name

    Rowsource

    Listfield

    DBCombo2

    Data2

    Kodeplg

    Data1 NameDatabaseName

    Caption

    RecordSource

    Data1C:\Belajar VB\Master.mdb

    Brg

    Barang

  • 8/14/2019 Merelasikan Data

    12/25

    142

    Recordse tType 0 Table

    Data2 Name

    DatabaseName

    Caption

    RecordSource

    RecordsetType

    Data2

    C:\Belajar VB\Master.mdb

    Plg

    Pelanggan

    0 Tab le

    Data3 Name

    DatabaseName

    Caption

    RecordSource

    RecordsetType

    Data3

    C:\Belajar VB\Master.mdb

    Jual

    Jual

    0 Tab le

    List ing Progra m:

    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

  • 8/14/2019 Merelasikan Data

    13/25

    143

    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

  • 8/14/2019 Merelasikan Data

    14/25

    144

    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 ThenDBCombo1.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 Thentxtnamabrg.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

  • 8/14/2019 Merelasikan Data

    15/25

    145

    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!Namaplgtxttelpon = 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 WithEnd 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)))

  • 8/14/2019 Merelasikan Data

    16/25

    146

    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 Thentxtalamat.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 IfEnd 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

  • 8/14/2019 Merelasikan Data

    17/25

    147

    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 = FalseEnd 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

  • 8/14/2019 Merelasikan Data

    18/25

    148

    End Sub

    Private Sub txtjumJual_keypress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    cmdinput.SetFocus

    End If

    End Sub

    4.3 Program Pencetakan Data PembelianWalaupun 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 ba rang atau kode pe ma sok, informasinya kurang bermanfaat.

    Untuk mengatasi hal inilah relasi data diperlukan. Program dapat

    menam pilkan nama barang dan nama pemasok karena kode barang

    dan kode pemasok merupakan field kunci di tabel masing-masing.

    J ika s ebua h field kunci tersimp an d alam 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 tidakberisi obyek apapun di dalamnya dan form tersebut kita ubah

    properti Name-nya menjadi Tampil. Untuk membuat program

    pencetakan tersebut, buatlah rancangan form s eperti Gambar 4.3.

    Gam bar 4.3 Menu Pencetak an Data Pem belian

    Nama Obyek Properti S eting

    Command1 Name

    Caption

    Command1

    &Cetak Ke Layar

  • 8/14/2019 Merelasikan Data

    19/25

    149

    Data1 Name

    Caption

    DatabaseName

    RecordsetType

    RecordSource

    Data1

    Brg

    C:\Belajar VB\Master.mdb

    0 Tab le

    Barang

    Data2 Name

    Caption

    DatabaseName

    RecordsetType

    RecordSource

    Data2

    Pm s

    C:\Belajar VB\Master.mdb

    0 Tab le

    Pemasok

    Data3 Name

    Caption

    DatabaseName

    RecordsetType

    RecordSource

    Data3

    Beli

    C:\Belajar VB\Master.mdb

    1 Dynase t

    Beli

    List ing Progra m:

    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 pesanIf Data3.Recordset.RecordCount = 0 Then

    x = MsgBox("Data Pembelian Belum Ada", 0, "Informasi")

    Exit Sub

    End If

    bawa ke record pertama

    .MoveFirst

    mtotalharga = 0

  • 8/14/2019 Merelasikan Data

    20/25

    150

    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 = 0msubtotalbayar = 0

    MBaris = 0

    cetak isi tabel

    Do While Not .EOF And MBaris

  • 8/14/2019 Merelasikan Data

    21/25

    151

    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:

    Gam bar 4.4 Hasil pencetak an data pem belian

    4.4 Program Pencetakan Data PenjualanGaris besar program pencetakan data penjualan ini sama seperti

    program sebelumnya. Perbedaannya, pada program ini data

  • 8/14/2019 Merelasikan Data

    22/25

    152

    pemasok diubah dengan data pelanggan. Untuk keperluan

    pencetakan di atas, buatlah form seperti Gambar 4.5.

    Gam bar 4.5 Menu Pencetak an Data Penjualan

    Nama Obyek Properti S eting

    Command1 Name

    Caption

    Command1

    &Cetak Ke Layar

    Data1 Name

    Caption

    DatabaseName

    RecordsetType

    RecordSource

    Data1

    Brg

    C:\Belajar VB\Master.mdb

    0 Tab le

    Barang

    Data2 Name

    Caption

    DatabaseName

    RecordsetType

    RecordSource

    Data2

    Plg

    C:\Belajar VB\Master.mdb

    0 Tab le

    Pelanggan

    Data3 Name

    Caption

    DatabaseName

    RecordsetType

    RecordSource

    Data3

    Jual

    C:\Belajar VB\Master.mdb

    1 Dynase t

    Jual

  • 8/14/2019 Merelasikan Data

    23/25

    153

    Hasil:

    Gam bar 4.6 Hasil pencetakan data penjualan

    List ing Progra m:

    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 = 10Tampil.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, "###")

  • 8/14/2019 Merelasikan Data

    24/25

    154

    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 = 0Do While Not .EOF And MBaris

  • 8/14/2019 Merelasikan Data

    25/25

    155

    Private Function RKanan(NData, CFormat) As String

    RKanan = Format(NData, CFormat)

    RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan

    End Function