Tutorial olah database dan crystal report dengan vb 6.0

25
131 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

description

Mengolah database sql dan crystal report dengan visual basic 6.0

Transcript of Tutorial olah database dan crystal report dengan vb 6.0

Page 1: Tutorial olah database dan crystal report dengan vb 6.0

131

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

Page 2: Tutorial olah database dan crystal report dengan vb 6.0

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

Properti Seting

Text1 Name TxtNoFaktur

Text2 Name TxtKodeBrg

Text3 Name TxtHarga

Text4 Name TxtKodePms

Text5 Name TxtTelp

Text6 Name TxtJumBeli

Text7 Name TxtTglFaktur

Page 3: Tutorial olah database dan crystal report dengan vb 6.0

133

Text8 Name TxtNamaBrg

Text9 Name TxtStokBrg

Text10 Name TxtNamaPms

Text11 Name TxtAlamat

Text12 Name TxtRelasi

Text13 Name TxtTotal

Text14 Name JmlData

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 – Table

Data2 Name

DatabaseName

Caption

RecordSource

RecordsetType

Data2

C:\Belajar VB\Master.mdb

Pms

Pemasok

0 – Table

Data3 Name

DatabaseName

Caption

RecordSource

RecordsetType

Data3

C:\Belajar VB\Master.mdb

Beli

Beli

0 – Table

Page 4: Tutorial olah database dan crystal report dengan vb 6.0

134

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

Page 5: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 6: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 7: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 8: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 9: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 10: Tutorial olah database dan crystal report dengan vb 6.0

140

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,

Page 11: Tutorial olah database dan crystal report dengan vb 6.0

141

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 Obyek

Properti Seting

DBCombo1 Name

Rowsource

Listfield

DBCombo1

Data1

Kodebrg

DBCombo2 Name

Rowsource

Listfield

DBCombo2

Data2

Kodeplg

Data1 Name

DatabaseName

Caption

RecordSource

Data1

C:\Belajar VB\Master.mdb

Brg

Barang

Page 12: Tutorial olah database dan crystal report dengan vb 6.0

142

RecordsetType 0 – Table

Data2 Name

DatabaseName

Caption

RecordSource

RecordsetType

Data2

C:\Belajar VB\Master.mdb

Plg

Pelanggan

0 – Table

Data3 Name

DatabaseName

Caption

RecordSource

RecordsetType

Data3

C:\Belajar VB\Master.mdb

Jual

Jual

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

Page 13: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 14: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 15: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 16: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 17: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 18: Tutorial olah database dan crystal report dengan vb 6.0

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

Caption

Command1

&Cetak Ke Layar

Page 19: Tutorial olah database dan crystal report dengan vb 6.0

149

Data1 Name

Caption

DatabaseName

RecordsetType

RecordSource

Data1

Brg

C:\Belajar VB\Master.mdb

0 – Table

Barang

Data2 Name

Caption

DatabaseName

RecordsetType

RecordSource

Data2

Pms

C:\Belajar VB\Master.mdb

0 – Table

Pemasok

Data3 Name

Caption

DatabaseName

RecordsetType

RecordSource

Data3

Beli

C:\Belajar VB\Master.mdb

1 – Dynaset

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

Page 20: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 21: Tutorial olah database dan crystal report dengan vb 6.0

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:

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

Page 22: Tutorial olah database dan crystal report dengan vb 6.0

152

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

Caption

Command1

&Cetak Ke Layar

Data1 Name

Caption

DatabaseName

RecordsetType

RecordSource

Data1

Brg

C:\Belajar VB\Master.mdb

0 – Table

Barang

Data2 Name

Caption

DatabaseName

RecordsetType

RecordSource

Data2

Plg

C:\Belajar VB\Master.mdb

0 – Table

Pelanggan

Data3 Name

Caption

DatabaseName

RecordsetType

RecordSource

Data3

Jual

C:\Belajar VB\Master.mdb

1 – Dynaset

Jual

Page 23: Tutorial olah database dan crystal report dengan vb 6.0

153

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, "###")

Page 24: Tutorial olah database dan crystal report dengan vb 6.0

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

Page 25: Tutorial olah database dan crystal report dengan vb 6.0

155

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