You are on page 1of 48

Pemrograman Basis Data

BAB 1 MEMBUAT DATABASE DENGAN ADODC (FORM TUNGGAL)

Tujuan Materi: mahasiswa dapat database dengan menggunakan fasilitas ADODC untuk form tunggal Semua contoh pemrograman database pada modul ini didasarkan pada tabel dan relasi database berikut.

Database di atas merupakan database sederhana mengenai pembelian dan penjualan barang yang melibatkan transaksi master detail. Tabel master dari relasi database diatas adalah CUSTOMER, SUPPLIER, dan BARANG. Sedangkan tabel transaksinya adalah PENJUALAN dan PEMBELIAN, diikuti PENJUALAN_DETAIL dan PEMBELIAN_DETAIL yang merupakan detail dari masing-masing tabel transaksi yang berseuaian. Tabel PENJUALAN merupakan transaksi yang berkaitan dengan customer (penjualan barang kepada customer), sedangkan tabel PEMBELIAN merupakan transaksi yang berkaitan dengan supplier (pembelian barang dari supplier). 1.1 MENAMBAHKAN KOMPONEN ADODC

Pemrograman Basis Data

Ada dua cara yang dapat digunakan. Cara pertama, klik kanan ToolBox, kemudian klik Components. Atau melalui menu Project Components.

Gambar 1.1Window Komponen Kemudian pilih Microsoft ADO Data Contol 6.0, seperti pada gambar diatas dan tekan OK. Pada ToolBox akan muncul icon Tanda panah pada ADODC, merupakan tombol navigasi. .

Gambar 1.2 ADODC dalam Form 1.2 MENAMBAHKAN DATAGRID, DATALIST, DAN DATACOMBO

Pemrograman Basis Data

DataGrid ini digunakan untuk menampilkan data dari database dalam bentuk tabel. Sedangkan DataList dan DataCombo, memiliki fungsi serupa dengan ListBox dan ComboBox

Gambar 1.3 Menambahkan Komponen Gunakan cara yang sama seperti pada penambahan komponen ADODC, kemudian pilih Microsoft DataGrid Control 6.0 untuk DataGrid dan Microsoft DataList Control 6.0 untuk DataList dan DataCombo. Pada ToolBox akan muncul icon , , dan .

Gambar 1.4 DataGrid, DataList, dan DataCombo dalam Form 1.3 SETTING KONEKSI DAN TABLE PADA ADODC

Pemrograman Basis Data

1. Klik kanan Adodc1 kemudian klik ADODC properties. Terdapat 5

tab

dalam

Property

Pages

ADODC

ini,

yaitu

General,

Authentication, RecordSource, Color, dan Font.

Gambar 1.5 Properti ADODC


2. Pada Use Connection String, klik Build.

Gambar 1.6 Properti dari Data Link

Pemrograman Basis Data

Pilih Microsoft Jet 4.0 OLE DB Provider, kemudian klik Next. 3. Isikan nama database yang digunakan.

Gambar 1.7 Memilih database

Klik Test Connection untuk memastikan koneksi sudah berhasil.

Gambar 1.8 Koneksi Berhasil

4. Pada Use Connection String akan terisi:

Provider= Microsoft.Jet.OLEDB.4.0;Data Source=C:\dagang.mdb; Persist Security Info=False

Pemrograman Basis Data

Gambar 1.9 Properti dari Connection String

5. Kembali pada Property Pages ADODC, klik tab RecordSource.

Ubah Command Type menjadi adCmdTable. Dan pada Table or Stored Procedure Name, pilih tabel yang akan digunakan.
6. Klik OK dan ADODC siap digunakan.

1.4 BINDING ADODC DENGAN TEXTBOX


1. Set koneksi dari ADODC dan pilih tabel BARANG (Adodc1), sesuai

langkah diatas. Tambahkan TextBox pada Form (Text1).

Pemrograman Basis Data

2. Pada Properties Window dari Text1, Lakukan langkah berikut:

Pilih Adodc1 pada DataSource. Pilih namaBarang pada DataField. DataFormat dapat diubah sesuai dengan kebutuhan.

3. Jalankan aplikasi, dan hasil yang diperoleh adalah:

1.5 BINDING ADODC DENGAN DATAGRID


1. Set koneksi dari ADODC dan pilih tabel BARANG (Adodc1), sesuai

langkah diatas.

Pemrograman Basis Data

Tambahkan TextBox pada Form (DataGrid1).

2. Pada Properties Window dari DataGrid1, lakukan langkah

berikut: Pilih Adodc1 pada DataSource.

3. Klik kanan pada DataGrid1, dan pilih Retrieve fields. Klik OK jika

muncul Dialog Box. Pada DataGrid1, akan muncul kolom dari tabel BARANG.

Pemrograman Basis Data

4. Jalankan Aplikasi dan gunakan kontrol pada ADODC untuk navigasi.

1.6 BINDING ADODC DENGAN DATALIST DAN DATACOMBO


1. Set koneksi dari ADODC dan pilih tabel BARANG (Adodc1), sesuai

langkah diatas.
2. Tambahkan DataList dan DataCombo pada Form (DataList1 dan

DataCombo1).

Pemrograman Basis Data

3. Pada Properties Window dari DataList1 dan DataCombo1,

lakukan langkah berikut: Pilih Adodc1 pada RowSource, BUKAN DataSource. Pilih salah satu nilai kolom dalam ListField (namaBarang).

10

Pemrograman Basis Data

4. Jalankan Aplikasi untuk menguji

11

Pemrograman Basis Data

LATIHAN 1 1. Form input data barang (master) Desain Form

Buat Project baru. Ubah nama Form1 menjadi frmBarang. Jika belum ada, tambahkan komponen ADODC dan DataGrid. Kemudian desain form seperti berikut.

Ikuti petunjuk dibawah ini.

Tambahkan 6 buah TextBox (sesuai jumlah kolom dalam tabel BARANG) dalam frmBarang. Ubah nama masing-masing TextBox tersebut menjadi txtKodeBarang, txtNamaBarang, txtStokMinimum, tersebut. txtStokMaksimum, txtStokSekarang, dan

txtHargaBarang. Kosongkan semua Text dari tiap TextBox

12

Pemrograman Basis Data

Tambahkan DataGrid ke dalam frmBarang. Ubah namanya menjadi DGridBarang.

Tambahkan ADODC ke dalam frmBarang. Ubah Name dan Caption-nya menjadi adcBarang. Set nilai visible pada Window Properties menjadi false.

Tambahkan 4 buah Command (tombol) ke dalam frmBarang. Name dan Caption dari tombol-tombol tersebut masing-masing adalah cmdFirst dan First, cmdPrevious dan Previous, cmdNext dan Next, cmdLast dan Last.

Tambahkan 4 buah Command (tombol) ke dalam frmBarang. Name dan Caption dari tombol-tombol tersebut masing-masing adalah cmdAdd dan Add/Clear, cmdSave dan Save, cmdUpdate dan Update, cmdDelete dan Delete.

Tambahkan 1 buah Command (tombol) lagi ke dalam frmBarang. Name dan Caption dari tombol tersebut adalah cmdOK dan OK.

Setting Database pada ADODC dan Binding DataGrid.

Set

koneksi

adcBarang

pada

database

(dalam

hal

ini

dagang.mdb) dan pilih tabel BARANG. Jika lupa, lihat lagi bagian Setting koneksi dan tabel pada ADODC diatas.

Bind DGridBarang dengan adcBarang. Jika lupa, lihat lagi bagian Binding ADODC dengan DataGrid.

13

Pemrograman Basis Data

Jika dijalankan, hasilnya adalah:

14

Pemrograman Basis Data

Kontrol Navigasi

Double klik cmdFirst. Dan tambahkan kode berikut. Private Sub cmdFirst_Click() adcBarang.Recordset.MoveFirst End Sub Kode diatas berfungsi untuk menggerakkan pointer recordset menuju record pertama.

Double klik cmdPrevious. Dan tambahkan kode berikut. Private Sub cmdPrevious_Click() adcBarang.Recordset.MovePrevious End Sub Kode diatas berfungsi untuk menggerakkan pointer satu record sebelum record yang sedang aktif.

Double klik cmdNext. Dan tambahkan kode berikut. Private Sub cmdNext_Click() adcBarang.Recordset.MoveNext End Sub Kode diatas berfungsi untuk menggerakkan pointer satu record setelah record yang sedang aktif.

Double klik cmdLast. Dan tambahkan kode berikut.

15

Pemrograman Basis Data

Private Sub cmdLast_Click() adcBarang.Recordset.MoveLast End Sub Kode diatas berfungsi untuk menggerakkan pointer recordset menuju record terakhir. Jalankan Aplikasi untuk menguji.

Catatan/Revisi: Jika pointer telah berada di akhir record dan tombol Next (cmdNext) terus menerus ditekan, maka akan muncul pesan kesalahan. Untuk mengatasinya, perbaiki kode hingga menjadi seperti berikut. Private Sub cmdNext_Click() If Not adcBarang.Recordset.EOF Then adcBarang.Recordset.MoveNext End If End Sub EOF adalah End Of File. Terjemahan dari kode diatas kurang lebih adalah, jika pointer tidak berada di akhir recordset maka jalankan pointer ke record berikutnya. ATAU Private Sub cmdNext_Click() If adcBarang.Recordset.EOF Then adcBarang.Recordset.MoveLast Else

16

Pemrograman Basis Data

adcBarang.Recordset.MoveNext End If End Sub Terjemahan dari kode diatas kurang lebih adalah, jika pointer berada di akhir recordset maka jalankan pointer ke record terakhir, jika tidak , jalankan pointer ke record selanjutnya. Demikian juga halnya dengan tombol Previous (cmdPrevious). Kode perbaikannya adalah sebagai berikut. Private Sub cmdPrevious_Click() If Not adcBarang.Recordset.BOF Then adcBarang.Recordset.MovePrevious End If End Sub ATAU

Private Sub cmdPrevious_Click() If adcBarang.Recordset.BOF Then adcBarang.Recordset.MoveFirst Else adcBarang.Recordset.MovePrevious End If End Sub Jalankan Aplikasi untuk mengujinya.

17

Pemrograman Basis Data

Penambahan Data

Langkah-langkah

pada

penambahan

data

adalah,

pertama,

kosongkan semua isi TextBox dengan menekan tombol Add/Clear (cmdAdd). Kedua, isi TextBox yang telah dikosongkan tadi dengan data yang akan dimasukkan. Dan yang terakhir, tekan Save (cmdSave) untuk menyimpannya dalam database. Kode yang perlu ditambahkan adalah sebagai berikut. Private Sub cmdAdd_Click() txtHargaBarang.Text = "" txtKodeBarang.Text = "" txtNamaBarang.Text = "" txtStokMaksimum.Text = "" txtStokMinimum.Text = "" txtStokSekarang.Text = "" End Sub Jika ingin kursor langsung berada pada txtKodeBarang,

tambahkan txtKodeBarang.SetFocus

Private Sub cmdSave_Click() adcBarang.Recordset.AddNew adcBarang.Recordset("kodeBarang") = txtKodeBarang.Text adcBarang.Recordset("namaBarang") = txtNamaBarang.Text adcBarang.Recordset("stokMaksimum") = txtStokMaksimum.Text adcBarang.Recordset("stokMinimum") = txtStokMinimum.Text adcBarang.Recordset("stokSekarang") = txtStokSekarang.Text adcBarang.Recordset("hargaBarang") = txtHargaBarang.Text

18

Pemrograman Basis Data

adcBarang.Recordset.Update txtHargaBarang.Text = "" txtKodeBarang.Text = "" txtNamaBarang.Text = "" txtStokMaksimum.Text = "" txtStokMinimum.Text = "" txtStokSekarang.Text = "" End Sub

Menghubungkan DataGrid dengan TextBox

Agar ketika DGridBarang di klik atau terjadi perpindahan record, TextBox dapat terisi nilai dari DGridBarang, tambahkan kode berikut. Hal ini terutama berkaitan dengan pengeditan record pada database. Tambahkan event RowColChange pada DGridBarang.

Private Sub DGridBarang_RowColChange(LastRow As Variant, ByVal LastCol As Integer) gridToText End Sub

Private Sub gridToText() If (Not adcBarang.Recordset.EOF And Not adcBarang.Recordset.BOF) Then txtHargaBarang.Text = adcBarang.Recordset("hargaBarang") txtKodeBarang.Text = adcBarang.Recordset("kodeBarang") txtNamaBarang.Text = adcBarang.Recordset("namaBarang") txtStokMaksimum.Text = adcBarang.Recordset("stokMaksimum")

19

Pemrograman Basis Data

txtStokMinimum.Text = adcBarang.Recordset("stokMinimum") txtStokSekarang.Text = adcBarang.Recordset("stokSekarang") End If End Sub

Menyimpan Hasil Perubahan

Setelah dilakukan perubahan pada TextBox, klik tombol Update (cmdUpdate) untuk menyimpan hasilnya. Kode yang harus ditambahkan adalah sebagai berikut. Private Sub cmdUpdate_Click() textToGrid adcBarang.Recordset.Update End Sub

Private Sub textToGrid() If (Not adcBarang.Recordset.EOF And Not adcBarang.Recordset.BOF) Then adcBarang.Recordset("hargaBarang") = txtHargaBarang.Text adcBarang.Recordset("kodeBarang") = txtKodeBarang.Text adcBarang.Recordset("namaBarang") = txtNamaBarang.Text adcBarang.Recordset("stokMaksimum") = txtStokMaksimum.Text adcBarang.Recordset("stokMinimum") = txtStokMinimum.Text adcBarang.Recordset("stokSekarang") = txtStokSekarang.Text End If End Sub

Menghapus Data

Kode yang perlu ditambahkan pada tombol Delete (cmdDelete) agar dapat menghapus record/data adalah sebagai berikut. Private Sub cmdDelete_Click() adcBarang.Recordset.Delete

20

Pemrograman Basis Data

End Sub Pencarian Data

Tambahkan TextBox dan Command untuk Pencarian. Beri nama masing-masing txtSearch dan cmdSearh.

Pencarian yang dicontohkan disini hanya dilakukan terhadap satu kolom data saja, yaitu kolom namaBarang. Tambahkan kode berikut.
Private Sub cmdSearch_Click() If adcBarang.Recordset.EOF Then adcBarang.Recordset.MoveFirst Else adcBarang.Recordset.Find "namaBarang LIKE '*" & txtSearch.Text & "*'", 0, adSearchForward End If End Sub

21

Pemrograman Basis Data

Berikut ini beberapa model pencarian yang dapat digunakan.


Find "namaBarang LIKE 'su'" Find "namaBarang LIKE 'su*'" Find "namaBarang LIKE '*su'" hanya su yang dapat ditemukan. su dan susi, tapi bisu dan basuh tidak. su dan bisu, tapi susi dan basuh tidak.

Find "namaBarang LIKE '*su*'" su, susi, bisu, dan basuh dapat ditemukan.

Jalankan Aplikasi untuk mencoba hasilnya. 2. Selesaikan Form untuk Supplier dan Customer.

22

Pemrograman Basis Data

BAB 2 MEMBUAT DATABASE DENGAN ADODC (FORM BERELASI)

Tujuan Materi: mahasiswa dapat membuat database dengan fasilitas ADODC untuk form berelasi 2.1 FORM INPUT DATA PENJUALAN (TRANSAKSI) Teliti dan perhatikan baik-baik. Pembuatan Form Input Data

Penjualan ini jauh lebih rumit dari pembuatan Form Input Data Barang. Desain Form

Buat Project baru. Ubah nama Form1 menjadi frmPenjualan. Buat sebuah Form lagi dan beri nama frmDetailPenjualan. Jika belum ada, tambahkan komponen DataGrid. Untuk frmPenjualan, desain form seperti berikut.

23

Pemrograman Basis Data

Ubah nama tiap TextBox sesuai dengan gambar diatas. Beri nama cmdDetail pada tombol Tambah Detail Detail, DGridPenjualan DGridDetailPenjualan untuk tombol Close. Isi adcCustomer dengan data Customer, adcDetailPenjualan dengan data Detail Penjualan, dan adcPenjualan dengan data Penjualan. Set DataSource dari DGridPenjualan ke ke adcPenjualan, dan DGridDetailPenjualan adcDetailPenjualan untuk untuk DataGrid DataGrid Penjualan, Penjualan,

DGridCustomer untuk DataGrid Customer, dan cmdClose

DGridCustomer ke adcCustomer. Set nilai Visible (dari Window Properties) dari adcCustomer, adcPenjualan, menjadi False. Untuk frmDetailPenjualan, desain form seperti berikut. adcDetailPenjualan, dan DGridCustomer

24

Pemrograman Basis Data

Ubah semua nama komponen (TextBox dan ADODC) menjadi seperti yang terlihat pada Gambar. Beri nama yang bersesuaian pada tombol dan DataGrid: cmdAdd, cmdDelete, cmdClear, cmdCancel, cmdOK, dan DGridItem. Dua DataGrid terbawah bernaman DGridPenjualan dan DGridBarang (boleh dibolakbalik). Isi adcBarang dengan data Barang, adcDetailPenjualan dengan data Detail Penjualan. adcPenjualan boleh dibiarkan saja, atau isi dengan data Penjualan. Set DataSource ke dari DGridPenjualan dan ke adcPenjualan, ke DGridItem adcBarang. Set nilai Visible (dari Window Properties) dari adcBarang, adcPenjualan, adcDetailPenjualan, DGridBarang, dan DGridItem menjadi False. adcDetailPenjualan DGridBarang

Form Penjualan (frmPenjualan)


1. Tambahkan kode berikut pada Form_Load().

Private Sub Form_Load() 25

Pemrograman Basis Data

clearText End Sub 2. Buat fungsi atau sub clearText. Private Sub clearText() txtKodeCustomer.Text = "" txtKodePenjualan.Text = "" txtNamaCustomer.Text = "" txtTanggal.Text = "" End Sub Fungsi diatas digunakan untuk membersihkan isi dari TextBox Jalankan Aplikasi untuk melihat hasilnya. Filter Record
3. Filter ini diperlukan untuk menyeleksi Detail Penjualan yang sesuai

dengan

Penjualannya.

Tambahkan

Filter jika

ini data

pada dalam

DGridPenjualan_RowColChange, mengikuti.

sehingga

DGridPenjualan di klik, data dalam DGridDetailPenjualan akan

Private Sub DGridPenjualan_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If (Not adcPenjualan.Recordset.BOF And Not adcPenjualan.Recordset.EOF) Then filterDetailPenjualan adcPenjualan.Recordset("kodePenjualan") End If Private Sub filterDetailPenjualan(kode As String) adcDetailPenjualan.Recordset.Filter = "kodePenjualan='" & kode & "'" End Sub

Bentuk sederhana dari Filter diatas adalah


adcDetailPenjualan.Recordset.Filter = "kodePenjualan='" & adcPenjualan.Recordset("kodePenjualan") ("kodePenjualan") & "'"

Artinya,

isi

dari kolom

adcDetailPenjualan.Recordset kodePenjualannya, dimana

akan

difilter

berdasarkan

parameternya

diambil dari adcPenjualan.Recordset ("kodePenjualan"). 26

Pemrograman Basis Data

Jalankan Aplikasi dan klik DGridPenjualan untuk melihat hasilnya.

Error Kontrol
4. Kode Penjualan, karena merupakan Primarykey, maka tidak boleh

terjadi duplikasi nilai pada tabel. Kontrol terhadap kondisi ini, dapat diletakkan pada txtKodePenjualan_LostFocus(). Ketika terjadi perpindahan kursor, nilai dari Kode Penjualan (txtKodePenjualan) (rsPenjualan, MessageBox.
Private Sub txtKodePenjualan_LostFocus() adcPenjualan.Recordset.MoveFirst adcPenjualan.Recordset.Find "kodePenjualan='" & txtKodePenjualan.Text & "'" If (Not adcPenjualan.Recordset.BOF And Not adcPenjualan.Recordset.EOF) Then MsgBox "Kode Penjualan sudah ada" txtKodePenjualan.Text = "" txtKodePenjualan.SetFocus End If End Sub

akan sama

dicari denga

pada

Data

Penjualan Jika

isinya

DGridPenjualan).

ditemukan, artinya terjadi duplikasi, maka akan muncul sebuah

27

Pemrograman Basis Data

Jika Kode Penjualan ditemukan, secara otomatis pointer record akan menunjuj pada Kode Penjualan tersebut. If (Not rsPenjualan.BOF And Not rsPenjualan.EOF) Then Terjemahan singkatnya adalah, jika rsPenjualan tidak berada dalam posisi BOF atau EOF (artinya kode Penjualan ditemukan). Jalankan Aplikasi untuk memeriksa hasilnya

5. Sama tetapi berbeda dengan Kode Penjualan, Kode Customer justru

harus

ada.

Pengecekan

kondisi

ini,

diletakkan

pada

txtKodeCustomer_LostFocus().
Private Sub txtKodeCustomer_LostFocus()

28

Pemrograman Basis Data

adcCustomer.Recordset.MoveFirst adcCustomer.Recordset.Find "kodeCustomer='" & txtKodeCustomer.Text & "'" If (adcCustomer.Recordset.BOF Or adcCustomer.Recordset.EOF) Then MsgBox "Kode Customer tidak ditemukan" txtKodeCustomer.Text = "" txtKodeCustomer.SetFocus Else txtNamaCustomer.Text = adcCustomer.Recordset("namaCustomer") End If End Sub

Bandingkan dengan yang dimiliki oleh Kode Penjualan. Pada kode diatas, jika Kode Customer ditemukan, otomatis nilai txtNamaCustomer akan diisi nilai Nama Customer dari Kode Customer yang bersesuaian.

Jalankan Aplikasi untuk memeriksa hasilnya.

Membuka Form Detail Penjualan

29

Pemrograman Basis Data

6. Detail Penjualan diinputkan pada Form yang berbeda dengan Form

Penjualan. Kode yang digunakan untuk membuka Form Detail Penjualan tersebut, diletakkan pada Private Sub cmdDetail_Click().
Private Sub cmdDetail_Click() adcPenjualan.Recordset.AddNew adcPenjualan.Recordset("kodePenjualan") = txtKodePenjualan.Text adcPenjualan.Recordset("kodeCustomer") = txtKodeCustomer.Text adcPenjualan.Recordset("tanggalPenjualan") = txtTanggal.Text adcPenjualan.Recordset.Update Dim frm As frmDetailPenjualan Set frm = New frmDetailPenjualan Set frm.adcPenjualan.Recordset = adcPenjualan.Recordset.Clone frm.txtKodePenjualan.Text = txtKodePenjualan.Text frm.kodeCustomer = txtKodeCustomer.Text frm.tanggalPenjualan = txtTanggal.Text frm.Show vbModal If (frm.state = False) Then adcPenjualan.Recordset.MoveFirst adcPenjualan.Recordset.Find "kodePenjualan = '" & txtKodePenjualan.Text & "'", 0, adSearchForward adcPenjualan.Recordset.Delete adcPenjualan.Recordset.MoveFirst End If adcDetailPenjualan.Recordset.Requery adcPenjualan.Recordset.Requery End Sub

Penjelasan: adcPenjualan.Recordset.AddNew adcPenjualan.Recordset("kodePenjualan") = txtKodePenjualan.Text adcPenjualan.Recordset("kodeCustomer") = txtKodeCustomer.Text adcPenjualan.Recordset("tanggalPenjualan") = txtTanggal.Text adcPenjualan.Recordset.Update

30

Pemrograman Basis Data

Simpan dulu data Penjualan ke dalam database. Dim frm As frmDetailPenjualan Set frm = New frmDetailPenjualan Merupakan deklarasi obyek Form Detail Penjualan (frmDetailPenjualan) frm.txtKodePenjualan.Text = txtKodePenjualan.Text Digunakan untuk memberi nilai awal pada variabel yang terdapat pada Form Detail Penjualan (frmDetailPenjualan). Kode diatas menunjukkan bahwa nilai txtKodePenjualan.Text dari frmDetailPenjualan diisi dengan nilai dari txtKodePenjualan.Text. frm.Show vbModal Digunakan untuk menampilkan Form dengan posisi diatas Form lain.
If (frm.state = False) Then adcPenjualan.Recordset.MoveFirst adcPenjualan.Recordset.Find "kodePenjualan = '" & txtKodePenjualan.Text & "'", 0, adSearchForward adcPenjualan.Recordset.Delete End If

Digunakan untuk menghapus data Penjualan yang sudah dimasukkan jika ternyata penambahan detail dibatalkan. frm.state = False artinya tombah Cancel pada Form Detail Penjualan telah ditekan. Jalankan Aplikasi dan klik tombol Tambah Detail (cmdDetail) untuk melihat hasilnya.

31

Pemrograman Basis Data

Form Detail penjualan (frmDetailPenjualan)


7. Tambahkan kode berikut pada deklarasi Form Detail Penjualan.

Option Explicit Public tanggalPenjualan As String Public kodeCustomer As String Dim totalItem As Integer Dim totalHarga As Currency Dim formState As Boolean tanggalPenjualan dan kodeCustomer digunakan untuk menampung nilai dari Form Penjualan. Perhatikan kode dalam Private Sub cmdDetail_Click() dari Form Penjualan diatas. formState 32

Pemrograman Basis Data

digunakan untuk menyimpan nilai ketika pengeklikan tombol Cancel atau OK. totalItem dan totalHarga digunakan untuk menyimpan nilai total dari detail transaksi.
8. Tambahkan kode berikut pada Form_Load().

Private Sub Form_Load() clearText adcDetailPenjualan.Recordset.Close adcDetailPenjualan.Recordset.Open End Sub Penjelasan: adcDetailPenjualan.Recordset.Close kemudian dibuka lagi dengan adcDetailPenjualan.Recordset.Open. 9. Buat fungsi atau sub clearText, gridToText, dan state.
Private Sub clearText() txtKodeBarang.Text = "" txtNamaBarang.Text = "" txtJumlahBarang.Text = "0" txtHarga.Text = "0" txtSubTotal.Text = "0" End Sub Private Sub gridToText() txtKodeBarang.Text = adcDetailPenjualan.Recordset("kodeBarang") txtJumlahBarang.Text = adcDetailPenjualan.Recordset("jumlahBarang") txtSubTotal.Text = adcDetailPenjualan.Recordset("hargaBarang") End Sub Public Property Get state() As Boolean state = formState End Property

digunakan

untuk

menutup

koneksi ADODC, sehingga DGridDetail menjadi kosong. Dan

33

Pemrograman Basis Data

state digunakan untuk menyimpan dati status penekanan tombol Cancel dan OK. Jalankan Aplikasi untuk memeriksa hasilnya.

Error Kontrol
10. Serupa dengan Customer pada Form Penjualan, Kode Barang juga

harus

ada.

Pengecekan

kondisi

ini,

diletakkan

pada

txtKodeBarang_LostFocus().
Private Sub txtKodeBarang_LostFocus() adcBarang.Recordset.MoveFirst adcBarang.Recordset.Find txtKodeBarang.Text & "'" If Then MsgBox "Kode Barang tidak ditemukan" txtKodeBarang.Text = "" txtKodeBarang.SetFocus Else txtNamaBarang.Text = adcBarang.Recordset("namaBarang") txtHarga = adcBarang.Recordset("hargaBarang") End If (adcBarang.Recordset.BOF Or adcBarang.Recordset.EOF) "kodeBarang='" &

34

Pemrograman Basis Data

End Sub

Bandingkan dengan txtKodeCustomer_LostFocus() pada Form Penjualan. txtNamaBarang dan txtHarga akan terisi otomatis berdasarkan Kode Barang yang bersesuaian. Perhitungan Sub Total
11. Perhitungan

subTotal akan dilakukan secara otomatis. Kode

ditetakkan pada txtJumlahBarang_Change(). Sehingga begitu nilai txtJumlahBarang berubah, nilai txtSubTotal juga akan berubah.
Private Sub txtJumlahBarang_Change() txtSubTotal = Val(txtHarga.Text) * Val(txtJumlahBarang.Text) End Sub

Kode

diatas

dapat

juga

diletakkan

pada

txtJumlahBarang_LostFocus(). Hanya saja nilai nilai txtSubTotal baru berubah setelah kursor pada txtJumlahBarang dipindah. Penambahan Data serta Penghapusan isi TextBox 12. Tambahkan kode berikut pada tombol yang bersesuaian.
adcDetailPenjualan.Recordset.AddNew adcDetailPenjualan.Recordset("kodePenjualan") = txtKodePenjualan.Text adcDetailPenjualan.Recordset("kodeBarang") = txtKodeBarang.Text adcDetailPenjualan.Recordset("jumlahBarang") = txtJumlahBarang.Text adcDetailPenjualan.Recordset("hargaBarang") = txtSubTotal.Text adcDetailPenjualan.Recordset.Update totalItem = totalItem + Val(adcDetailPenjualan.Recordset("jumlahBarang")) totalHarga = totalHarga + CCur(adcDetailPenjualan.Recordset("hargaBarang")) adcDetailPenjualan.Recordset.Requery adcDetailPenjualan.Recordset.Filter = "kodePenjualan='" & txtKodePenjualan.Text & "'" clearText End Sub Private Sub cmdAdd_Click()

35

Pemrograman Basis Data

Private Sub cmdClear_Click() clearText End Sub

Tambahkan data ke dalam adcDetailPenjualan kemudian ambil ulang data (Requery) dan Filter berdasarkan kodePenjualan. Data yang dimasukkan disini akan langsung masuk ke dalam database. Jalankan Aplikasi untuk mengetahui hasilnya

. Penghapusan Data yang Telah Dimasukkan


13. Ketika banyak data telah masuk ke dalam DataGrid (DGridItem),

penghapusan data tertentu harus dapat dilakukan. Tambahkan kode berikut, sesuaikan dengan event masing-masing.
Private Sub DGridItem_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If (Not adcDetailPenjualan.Recordset.BOF And Not adcDetailPenjualan.Recordset.EOF) Then gridToText End If

36

Pemrograman Basis Data

End Sub Private Sub cmdDelete_Click() totalItem = totalItem Val(adcDetailPenjualan.Recordset("jumlahBarang")) totalHarga = totalHarga CCur(adcDetailPenjualan.Recordset("hargaBarang")) adcDetailPenjualan.Recordset.Delete clearText End Sub

Jalankan Aplikasi untuk mengetahui hasilnya. Add beberapa item, pilih salah satu item yang sudah ada, kemudian Delete. Penyimpanan/Update Data 14. Penyimpanan data dilakukan kerika tombol OK ditekan.
formState = True adcPenjualan.Recordset.Find "kodePenjualan = '" & txtKodePenjualan.Text & "'", 0, adSearchForward adcPenjualan.Recordset("totalItemPenjualan") = totalItem adcPenjualan.Recordset("totalHargaPenjualan") totalHarga adcPenjualan.Recordset.Update Unload Me End Sub = Private Sub cmdOK_Click()

Penjelasan: Dalam proses ini, nilai formState diubah menjadi True. Update data dilakukan terhadap tabel Penjualan saja, karena Detail Penyimpanan telah masuk ketika tombol Add ditekan. Data yang dimasukkan dalam tabel Penjualan database adalah totalItem dan totalHarga. Jalankan Aplikasi untuk mengetahui hasilnya.

37

Pemrograman Basis Data

Pembatalan Detail
15. Jika tidak jadi melakukan penambahan data pada Form Detail

Penjualan, maka tekan Cancel.


Private Sub cmdCancel_Click() formState = False adcDetailPenjualan.Recordset.Filter = "kodePenjualan='" & txtKodePenjualan.Text & "'" If (adcDetailPenjualan.Recordset.RecordCount > 0) Then adcDetailPenjualan.Recordset.MoveFirst MsgBox (adcDetailPenjualan.Recordset("kodePenjualan")) While Not adcDetailPenjualan.Recordset.EOF adcDetailPenjualan.Recordset.Delete adcDetailPenjualan.Recordset.MoveNext Wend adcPenjualan.Recordset.MoveFirst adcPenjualan.Recordset.Find adcPenjualan.Recordset.Delete End If Unload Me End Sub "kodePenjualan = '" & txtKodePenjualan.Text & "'", 0, adSearchForward

Penjelasan: Dalam proses ini, nilai formState diubah menjadi False. Karena data sudah masuk harus terlebih ke dalam satu database, persatu, itu maka setelah dilakukan adcDetailPenjualan sebelumnya difilter dihapus dahulu.

Setelah

pencarian terhadap nilai kodePenjualan dalam adcPenjualan untuk dihapus. Update data dilakukan terhadap tabel Penjualan saja, karena Detail Penyimpanan telah masuk ketika tombol Add ditekan. Data yang dimasukkan dalam tabel Penjualan database adalah totalItem dan totalHarga. Jalankan Aplikasi untuk mengetahui hasilnya.

38

Pemrograman Basis Data

LATIHAN 2 1. Selesaikan Form Input Pembelian

39

Pemrograman Basis Data

BAB III REPORTS

Tujuan Materi: mahasiswa dapat memahami menu-menu utama Microsoft Excel 1.1 Menambahkan Data Environment
1. Kilik ProjectAdd Data Environment.

2. Klik DataEnvironment1, kemudian ubah namanya menjadi

DEDagang. Klik Connection1, kemudian ubah namanya menjadi DCDagang.

Setting Koneksi
3. Klik kanan DCDagang, kemudian klik Properties. Akan muncul

Data Link Properties dengan tampilan seperti ketika membuat Connectionstring pada ADODC.

40

Pemrograman Basis Data

Pilih Microsoft Jet OLE DB Provider kemudian klik Next.

Pilih database yang akan digunakan, misalnya dagang.mdb. Test Connection kemudian klik OK. Menambahkan Command atau DataMember
4. Klik kanan DCDagang, kemudian klik Add Command, sehingga

muncul

Command1.

Ubah

nama

Command1

menjadi

cmdDagang.

41

Pemrograman Basis Data

5. Pada

Properties

Window menjadi

dari

cmdDagang, dan

set pada

CommandType

adCmdTable

CommandText isikan Barang.

6. Pada Window Data Environment, dibawah cmdDagang akan

muncul kolom kolom dari tabel Barang.

Menambahkan Data Report


7. Klik

ProjectAdd

Data

Report.

Ubah

namanya

menjadi

DRBarang.

42

Pemrograman Basis Data

8. Pada Properties Window dari DRDagang, ubah DataSource

menjadi DEDagang dan DataMember menjadi cmdDagang.

9. Untuk memudahkan desain, susun layout seperti berikut

43

Pemrograman Basis Data

10. Drag cmdDagang atau kolom-kolom dibawahnya ke dalam

DRBarang. Misalnya seperti gambar dibawah ini.

11.

Susun ulang hingga berbentuk seperti gambar dibawah.

Jalankan Aplikasi untuk melihat hasilnya.

44

Pemrograman Basis Data

Tekan icon printer

untuk mencetak.

45

Pemrograman Basis Data

LATIHAN 3 1. Buat Report Untuk menampilkan daftar customer dan supplier.

46

Pemrograman Basis Data

PENILAIAN Bagian ini merupakan soal ujian Kegiatan Pembelajaran Pemrograman Basis Data untuk mengetahui capaian kemampun akhir mahasiswa. Soal Ujian 1. Penilaian yang pertama dilakukan setiap setelah menyelesaikan contoh soal yang sudah dilakukan 2. Penilaian yang kedua dilakukan setelah mahasiswa menyelesaikan Tugas Kegiatan pada masing-masing Bab 3. Penilaian yang ketiga dilakukan berdasarkan penyelesaian tugas mandiri yang sudah diberikan, dan didemonstrasikan dihadapan pengajar per Kelompok.

47

Pemrograman Basis Data

REFERENSI Petroutsos, Evangelos; Pemrograman Database dengan Visual Basic 6; Buku 1; Cetakan Kedua;Penerbit PT Elex Media Komputindo;2002 MADCOMS; Database Visual Basic 6.0 dengan Crystal Reports; Penerbit ANDI;2002

48

You might also like