Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
BAB 4MERELASIKAN DATA4.1    Program Pembelian BarangMerelasikan data merupakan suatu hal yang sangat diperlukandalam mengo...
data barang dan data pemasok jika ternyata kode barang dan kodepemasoknya belum terdaftar pada kedua tabel tersebut dan ju...
Text8      Name            TxtNamaBrgText9      Name            TxtStokBrgText10     Name            TxtNamaPmsText11     ...
Listing Program:‘Fungsi untuk mencari jumlah dataFunction JumlahData()mjumlah = Data3.Recordset.RecordCountJmlData = mjuml...
.AddNew       !kodebrg = txtkodebrg       !namabrg = txtnamabrg       !harga = txtharga       !Jumlah = txtjumbeli       ....
If KeyAscii = 13 ThenWith Data1.Recordset    .Index = "barangdex"    .Seek "=", txtkodebrg    If Not .NoMatch Then        ...
txtnamapms.SetFocus        Else            txtkodepms.SetFocus        End If    End IfEnd WithEnd IfEnd SubPrivate Sub txt...
End IfEnd SubPrivate Sub cmdtutup_Click()Select Case cmdtutup.Caption    Case "&Tutup"        End    Case "&Batal"        ...
cmdinput.Caption   =   "&Input"cmdtutup.Caption   =   "&Tutup"cmdinput.Enabled   =   Truecmdtutup.Enabled   =   TrueEnd Su...
isi yang ada di dalamnya. Cara ini lebih efektif digunakandibandingkan dengan mengosongkan semua text seperti cara yangper...
3. Jumlah penjualan mengurangi jumlah barang,4. Harga jual dinaikan 10% dari harga asli barang untuk   mendapatkan laba.Ko...
RecordsetType      0 – Table      Data2        Name               Data2                   DatabaseName       C:Belajar VBM...
txtnofaktur.SetFocusElse    If txtnofaktur = Empty Then        pesan = MsgBox("Nomor Faktur Tidak Boleh Kosong", & _      ...
End IfJumlahDataEnd SubPrivate Sub txtnofaktur_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAsci...
Private Sub DBCombo2_change()If Len(DBCombo2.Text) < 6 Then    Exit SubEnd IfWith Data2.Recordset    .Index = "Pelanggande...
If KeyAscii = 13 Then    txttelpon.SetFocusEnd IfEnd SubPrivate Sub txtstokbrg_keypress(KeyAscii As Integer)If KeyAscii = ...
End SubPrivate Sub tampilkan()tidaksiapisiWith Data3.Recordset    txtnofaktur = !Nofaktur    DBCombo1 = !kodebrg    txthar...
End SubPrivate Sub txtjumJual_keypress(KeyAscii As Integer)If KeyAscii = 13 Then    cmdinput.SetFocusEnd IfEnd Sub4.3     ...
Data1           Name             Data1                   Caption          Brg                   DatabaseName     C:Belajar...
mtotalbeli = 0    mtotalbayar = 0    MNo = 0    MHal = 0‘Cetak Judul laporan    Do While Not .EOF       MHal = MHal + 1   ...
MBaris = MBaris + 1            .MoveNext         Loop            mtotalbeli = mtotalbeli + msubtotalbeli            mtotal...
pemasok diubah dengan data pelanggan. Untuk            keperluanpencetakan di atas, buatlah form seperti Gambar 4.5.      ...
Hasil:            Gambar 4.6 Hasil pencetakan data penjualanListing Program:Private Sub Command1_Click()    Tampil.Show   ...
MGrs = String$(110, "-")       Tampil.Print MGrs       Tampil.Print Tab(3); "No.";       Tampil.Print Tab(8); "No Fkt";   ...
Private Function RKanan(NData, CFormat) As String    RKanan = Format(NData, CFormat)    RKanan = Space(Len(CFormat) - Len(...
Upcoming SlideShare
Loading in …5
×

Mengolah Database dengan SQL dan Crystal Report dalam Visual Basic 6.0

2,142 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

Mengolah Database dengan SQL dan Crystal Report dalam Visual Basic 6.0

  1. 1. BAB 4MERELASIKAN DATA4.1 Program Pembelian BarangMerelasikan data merupakan suatu hal yang sangat diperlukandalam mengolah database. Pada kesempatan kali ini Anda akanmencoba membuat relasi data dalam sebuah aplikasi pembelian dantabel yang akan digunakan adalah tabel barang, pemasok dan tabelbeli. Jika kode barang diketik maka akan muncul nama barang,harga satuan dan jumlah stok yang tersedia. Begitu juga jikamengetik 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 munculkomentar bahwa data barang belum terdaftar, kemudian pertanyaanapakah data baru ini akan langsung diinput atau tidak. Jadi denganprogram ini kita dapat langsung mengentri data barang tanpa harusmembuka form pengolahan data barang. Hal yang sama terjadi padapemasok. 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 langsungmengubah jumlah data barang yang ada.Inilah salah satu kelebihan yang ada pada program yang akandibuat, dengan satu form (Pembelian) kita dapat langsung mengentri 131
  2. 2. data barang dan data pemasok jika ternyata kode barang dan kodepemasoknya belum terdaftar pada kedua tabel tersebut dan jumlahbarang langsung di-update, kemudian data pembelian ini akandisimpan pada tabel beli.Perhatikan dengan baik rancangan tabel beli yang pernah dibuat. Didalamnya terdapat field kode barang dan kode pemasok denganfield-field tersebut merupakan field kunci pada tabel barang dan tabelpemasok. Dengan teknik seperti ini maka tabel beli mampumengambil data yang diperlukan dari tabel barang dan tabelpemasok tersebut. Untuk mencoba program pembelian, rancanglahsebuah 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 TxtTglFaktur132
  3. 3. Text8 Name TxtNamaBrgText9 Name TxtStokBrgText10 Name TxtNamaPmsText11 Name TxtAlamatText12 Name TxtRelasiText13 Name TxtTotalText14 Name JmlDataCommand1 Name Cmdinput Caption &InputCommand2 Name Cmdtutup Caption &TutupData1 Name Data1 DatabaseName C:Belajar VBMaster.mdb Caption Brg RecordSource Barang RecordsetType 0 – TableData2 Name Data2 DatabaseName C:Belajar VBMaster.mdb Caption Pms RecordSource Pemasok RecordsetType 0 – TableData3 Name Data3 DatabaseName C:Belajar VBMaster.mdb Caption Beli RecordSource Beli RecordsetType 0 – Table 133
  4. 4. Listing Program:‘Fungsi untuk mencari jumlah dataFunction JumlahData()mjumlah = Data3.Recordset.RecordCountJmlData = mjumlahEnd FunctionPrivate Sub Form_activate()txtnofaktur.MaxLength = 6txtkodebrg.MaxLength = 6txtharga.MaxLength = 8txtkodepms.MaxLength = 6txttelpon.MaxLength = 8txtjumbeli.MaxLength = 4txttglfaktur.MaxLength = 8txtnamabrg.MaxLength = 30txtstokbrg.MaxLength = 4txtnamapms.MaxLength = 30txtalamat.MaxLength = 30txtrelasi.MaxLength = 15txttotal.MaxLength = 8tidaksiapisicmdinput.SetFocusJumlahDataEnd SubPrivate Sub cmdinput_click()If cmdinput.Caption = "&Input" Then cmdinput.Caption = "&Simpan" cmdtutup.Caption = "&Batal" siapisi txtnofaktur.SetFocusElse 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 Then134
  5. 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 IfJumlahDataEnd SubPrivate Sub txtnofaktur_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Thentxttglfaktur = Datetxtkodebrg.SetFocusEnd IfEnd SubPrivate Sub txttglfaktur_keypress(KeyAscii As Integer)If KeyAscii = 13 Thentxtkodebrg.SetFocusEnd IfEnd SubPrivate Sub txtkodebrg_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii))) 135
  6. 6. If KeyAscii = 13 ThenWith 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 IfEnd WithEnd IfEnd SubPrivate Sub txtkodepms_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 ThenWith 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 siapisi136
  7. 7. txtnamapms.SetFocus Else txtkodepms.SetFocus End If End IfEnd WithEnd IfEnd SubPrivate Sub txtnamabrg_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtharga.SetFocusEnd IfEnd SubPrivate Sub txtharga_keypress(KeyAscii As Integer)If KeyAscii = 13 ThenWith Data1.Recordset.Index = "barangdex".Seek "=", txtkodebrgIf .NoMatch Then txtkodepms.SetFocusEnd IfEnd WithEnd IfEnd SubPrivate Sub txtnamapms_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txttelpon.SetFocusEnd IfEnd SubPrivate Sub txttelpon_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtalamat.SetFocusEnd IfEnd SubPrivate Sub txtalamat_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtrelasi.SetFocusEnd IfEnd SubPrivate Sub txtrelasi_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtjumbeli.SetFocus 137
  8. 8. End IfEnd SubPrivate Sub cmdtutup_Click()Select Case cmdtutup.Caption Case "&Tutup" End Case "&Batal" kosongkan tidaksiapisi semula End SelectEnd SubPrivate Sub kosongkan()Dim Ctl As ControlFor Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End IfNextEnd SubPrivate Sub tampilkan()tidaksiapisiWith Data3.Recordset txtnofaktur = !NoFaktur txtkodebrg = !kodebrg txtharga = !harga txttelpon = !TelponPms txtrealsi = !RelasiPmsEnd WithEnd SubPrivate Sub siapisi()Dim x As ControlFor Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End IfNextEnd SubPrivate Sub tidaksiapisi()Dim x As ControlFor Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End IfNextEnd SubPrivate Sub semula()138
  9. 9. cmdinput.Caption = "&Input"cmdtutup.Caption = "&Tutup"cmdinput.Enabled = Truecmdtutup.Enabled = TrueEnd SubPrivate Sub txtjumbeli_Change()txttotal.Enabled = Falsetxttotal = Val(txtjumbeli) * Val(txtharga)End SubPrivate Sub txtjumbeli_keypress(KeyAscii As Integer)If KeyAscii = 13 Then cmdinput.SetFocusEnd IfEnd SubPenjelasan 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 IfEnd WithPotongan program ini berarti pada saat cmdinput diklik dan databarang tidak ditemukan maka entrilah data baru tersebut, tapi jikadata barang ditemukan maka editlah jumlahnya dengan caramenambahkan jumlah pembelian ke tabel barang (field jumlah).Private Sub kosongkan()Dim Ctl As ControlFor Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End IfNextEnd SubSub program ini menyimpan semua control ke dalam variabel Ctl,dan jika nama control tersebut terbuat dari TextBox, kosongkanlah 139
  10. 10. isi yang ada di dalamnya. Cara ini lebih efektif digunakandibandingkan dengan mengosongkan semua text seperti cara yangpernah dibicarakan pada Bab I. Jika ada control lain yang digunakandalam form ini, Anda tinggal menambahkan nama dari control yangdigunakan itu. Misalnya Combobox, DBCombo dan lain-lain.Contoh:Private Sub kosongkan()Dim Ctl As ControlFor 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 IfNextEnd SubPrivate Sub siapisi()Dim x As ControlFor Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End IfNextEnd SubPerhatikan sub program di atas. Pada dasarnya sub program tersebutsama dengan sub program Kosongkan. Perbedaanya terletak padakondisi apa yang diinginkan pada control tersebut, dalam hal inisemua control dapat digunakan, maka perintah yang diberikanadalah Enabled=True.4.2 Program Penjualan BarangPada dasarnya program penjualan ini hampir mirip dengan programpembelian, perbedaanya terletak pada:1. Tabel Pemasok diganti dengan tabel pelanggan,2. Tabel Beli diganti dengan jual,140
  11. 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 programpembelian) diganti dengan DBCombo dan dengan DBCombo inikita dapat langsung menampilkan daftar field kode barang dan kodepemasok atau dapat mengetik di dalamnya. Untuk membuatprogram 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. 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 – TableListing Program:Function JumlahData()mjumlah = Data3.Recordset.RecordCountJmldataJual = mjumlahEnd FunctionPrivate Sub Form_activate()txtnofaktur.MaxLength = 6txtharga.MaxLength = 8txttelpon.MaxLength = 8txtjumjual.MaxLength = 4txttglfaktur.MaxLength = 8txtnamabrg.MaxLength = 30txtstokbrg.MaxLength = 4txtnamaplg.MaxLength = 30txtalamat.MaxLength = 30txtrelasi.MaxLength = 15txttotal.MaxLength = 8tidaksiapisicmdinput.SetFocusJumlahDataEnd SubPrivate Sub cmdinput_click()JumlahDataIf cmdinput.Caption = "&Input" Then cmdinput.Caption = "&Simpan" cmdtutup.Caption = "&Batal" siapisi142
  13. 13. txtnofaktur.SetFocusElse 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. 14. End IfJumlahDataEnd SubPrivate Sub txtnofaktur_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Thentxttglfaktur = Format(Date, "DD/MM/YY")DBCombo1.SetFocusEnd IfEnd SubPrivate Sub txttglfaktur_keypress(KeyAscii As Integer)If KeyAscii = 13 ThenDBCombo1.SetFocusEnd IfEnd SubPrivate Sub DBCombo1_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))End SubPrivate Sub dbcombo1_change()If Len(DBCombo1.Text) < 6 Then Exit SubEnd IfWith 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 IfEnd WithEnd SubPrivate Sub DBCombo2_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub144
  15. 15. Private Sub DBCombo2_change()If Len(DBCombo2.Text) < 6 Then Exit SubEnd IfWith 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 IfEnd WithEnd SubPrivate Sub txtnamabrg_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtharga.SetFocusEnd IfEnd SubPrivate Sub txtharga_keypress(KeyAscii As Integer)If KeyAscii = 13 ThenWith Data1.Recordset.Index = "barangdex".Seek "=", DBCombo1 If .NoMatch Then txtstokbrg.SetFocus End IfEnd WithEnd IfEnd SubPrivate Sub txtnamaPlg_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii))) 145
  16. 16. If KeyAscii = 13 Then txttelpon.SetFocusEnd IfEnd SubPrivate Sub txtstokbrg_keypress(KeyAscii As Integer)If KeyAscii = 13 ThenDBCombo2.SetFocusEnd IfEnd SubPrivate Sub txttelpon_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtalamat.SetFocusEnd IfEnd SubPrivate Sub txtalamat_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtrelasi.SetFocusEnd IfEnd SubPrivate Sub txtrelasi_keypress(KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))If KeyAscii = 13 Then txtjumjual.SetFocusEnd IfEnd SubPrivate Sub cmdtutup_Click()Select Case cmdtutup.Caption Case "&Tutup" End Case "&Batal" kosongkan tidaksiapisi semula End SelectEnd SubPrivate Sub kosongkan()Dim Ctl As ControlFor Each Ctl In Me If TypeName(Ctl) = "TextBox" Then Ctl.Text = "" End If If TypeName(Ctl) = "DBCombo" Then Ctl.Text = "" End IfNext146
  17. 17. End SubPrivate Sub tampilkan()tidaksiapisiWith Data3.Recordset txtnofaktur = !Nofaktur DBCombo1 = !kodebrg txtharga = !harga txttelpon = !TelponPlg txtrealsi = !RelasiPlgEnd WithEnd SubPrivate Sub siapisi()Dim x As ControlFor Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = True End If If TypeName(x) = "DBCombo" Then x.Enabled = True End IfNextEnd SubPrivate Sub tidaksiapisi()Dim x As ControlFor Each x In Me If TypeName(x) = "TextBox" Then x.Enabled = False End If If TypeName(x) = "DBCombo" Then x.Enabled = False End IfNextEnd SubPrivate Sub semula()cmdinput.Caption = "&Input"cmdtutup.Caption = "&Tutup"cmdinput.Enabled = Truecmdtutup.Enabled = TrueEnd SubPrivate Sub txtjumJual_Change()If Val(txtjumjual) > Val(txtstokbrg) Then x = MsgBox("Persediaan Barang Kurang, Lihat Stok & _Barang...!", 0, "Informasi") txtjumjual.SetFocusElse txttotal.Enabled = False txttotal = Val(txtjumjual) * Val(txtharga)End If 147
  18. 18. End SubPrivate Sub txtjumJual_keypress(KeyAscii As Integer)If KeyAscii = 13 Then cmdinput.SetFocusEnd IfEnd Sub4.3 Program Pencetakan Data PembelianWalaupun yang tersimpan dalam program pencetakan datapembelian adalah kode barang dan kode pemasok, yang akanditampilkan dalam pencetakan adalah nama barang dan namapemasoknya. Hal ini dilakukan karena jika yang ditampilkan hanyakode barang atau kode pemasok, informasinya kurang bermanfaat.Untuk mengatasi hal inilah relasi data diperlukan. Program dapatmenampilkan nama barang dan nama pemasok karena kode barangdan kode pemasok merupakan field kunci di tabel masing-masing.Jika sebuah field kunci tersimpan dalam tabel lain, item-item datalainnya dapat ditampilkan dengan cara mengaktifkan field yangdijadikan kunci tersebut. Hal yang sama dapat dilakukan padaprogram pencetakan data penjualan. Untuk dapat menampilkanpencetakan ke layar, dibutuhkan satu form tambahan yang tidakberisi obyek apapun di dalamnya dan form tersebut kita ubahproperti Name-nya menjadi Tampil. Untuk membuat programpencetakan 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 Layar148
  19. 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 BeliListing 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. 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 + Mbayar150
  21. 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 WithEnd Sub‘Fungsi Meratakan Angka (Numeric)Private Function RKanan(NData, CFormat) As String RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - Len(RKanan)) + RKananEnd FunctionHasil: Gambar 4.4 Hasil pencetakan data pembelian4.4 Program Pencetakan Data PenjualanGaris besar program pencetakan data penjualan ini sama sepertiprogram sebelumnya. Perbedaannya, pada program ini data 151
  22. 22. pemasok diubah dengan data pelanggan. Untuk keperluanpencetakan 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 Jual152
  23. 23. Hasil: Gambar 4.6 Hasil pencetakan data penjualanListing 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. 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 WithEnd Sub154
  25. 25. Private Function RKanan(NData, CFormat) As String RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - Len(RKanan)) + RKananEnd Function 155

×