Menggunakan
Database SQL Server
Bab ini akan secara langsung mengajak Anda
menggunakan database SQL Server. Ada 11 tutorial yang mengajarkan Anda untuk
langsung mempraktekkan penggunaan database SQL Server.
4.1 Dasar Database dan Menggunakan Kontrol
DataGridView
Tutorial 4.1: Menampilkan Tabel Database Pada Sebuah
Kontrol DataGridView
Pada tutorial ini, Anda akan menampilkan
baris-baris dan kolom-kolom dari sebuah tabel dengan nama StafPenjualan, yang ditempatkan pada sebuah database Perusahaan. Anda akan melihat bagaimana
mudahnya form Anda mengurutkan kolom, menghapus baris, dan menyisipkan baris
baru. Tabel StafPenjualan memuat
informasi yang terkumpul dari pekerja penjualan perusahaan. Perancangan tabel
ditampilkan pada Tabel 4.1, dan contoh-contoh baris ditampilkan pada Tabel 4.2.
Tabel 4.1 Perancangan tabel StafPenjualan
Nama Kolom
|
Tipe
|
ID
Nama_Belakang
Nama_Depan
Penuh_Waktu
Tanggal_Kerja
Gaji
|
int
(primary key)
varchar(40)
varchar(40)
bit
smalldatetime
decimal
|
Tabel 4.2 Baris-baris contoh di dalam tabel StafPenjualan
Sebelum Anda memulai tutorial ini, Anda perlu
menemukan file Perusahaan.mdf, yang
berada di dalam folder Contoh Database.
Langkah 1: Ciptakanlah sebuah aplikasi Windows Forms Application dengan nama Contoh Database.
Langkah 2: Tetapkan properti Text dari Form1 menjadi Contoh Database.
Langkah 3: Geret kontrol DataGridView dari jendela Toolbox
ke dalam form. Klik smart tag di pojok kanan-atas dari grid. Anda akan melihat
sebuah jendela kecil dengan nama DataGridView
Tasks, seperti ditunjukkan pada Gambar
4.1.
Gambar 4.1 Jendela DataGridView
Tasks
Langkah 4: Klik tanda-panah dropdown di dekat Choose Data Source. Pada dialog yang
ditampilkan (Gambar 4.2), klik pada Add
Project Data Source.
Gambar 4.2 Memilih sumber data pada Tutorial 4.1
Langkah 5: Ketika Data
Source Configuration Wizard ditampilkan (lihat Gambar 4.3a), pilih ikon Database dan klik tombol Next.
Gambar 4.3a Jendela dialog Data
Source Configuration Wizard
Langkah 6: Langkah Choose a Database Model akan ditampilkan selanjutnya. Pilih seleksi
default (Dataset) dan klik tombol Next, seperti ditampilkan pada Gambar
4.3b berikut:
Gambar 4.3b Jendela dialog Choose
a Database Model
Langkah 7: Wizard ini akan menanyakan Anda untuk
memilih koneksi data. Jika Anda telah memiliki koneksi data sebelumnya, Anda
bisa memilihnya dari dropdown list. Jika ini adalah koneksi data pertama Anda,
klik pada tombol New Connection.
Lihat Gambar 4.4.
Gambar 4.4 Memilih koneksi data
Langkah 8: Pada jendela Add Connection, jika entri Data
source tidak mengatakan Microsoft SQL Server Database File,
klik tombol Change dan pilih opsi
itu.
Gambar 4.5 Jendela Add Connection
Langkah 9: Klik tombol Browse dan cari database Perusahaan.mdf
pada folder projek. Gambar 4.10 menunjukkan path ke Perusahaan.mdf.
Langkah 10: Klik tombol Test Connection. Pastikan bahwa pesan Test Connection succeded ditampilkan, klik tombol OK dua kali untuk
kembali ke wizard, dan klik tombol Next.
Langkah 11: Anda akan melihat pesan yang ditunjukkan
pada Gambar 4.6, yang menanyakan apakah Anda ingin menyalin file database ke
direktori projek. Dengan menjawab ya, Anda dapat dengan mudah memindahkan
program Anda dan databasenya ke komputer lain. Klik tombol Yes untuk melanjutkan.
Gambar 4.6 Opsi untuk menyalin file database ke projek Anda
Langkah 12: Sekarang Anda diberikan opsi menyimpan
string koneksi pada file konfigurasi aplikasi (Lihat Gambar 4.7). Klik tombol Next untuk melanjutkan.
Gambar 4.7 Menyimpan string koneksi pada file konfigurasi aplikasi
Langkah 13: Selanjutnya, Anda diminta untuk memilih
objek-objek database yang Anda inginkan pada DataSet. Ekspansi entri di bawah Tables, tempatkan centang di samping StafPenjualan, dan ubah nama DataSet
menjadi StafPenjualanDataSet (Lihat
Gambar 4.8). Klik tombol Finish
untuk menyelesaikan wizard.
Gambar 4.8 Memilih objek-objek database
Langkah 14: Anda akan melihat kepala-kepala kolom pada
kontrol DataGridView (Lihat Gambar 4.9) yang sesuai denagn kolom-kolom StafPenjualan: ID, Nama_Belakang, Nama_Depan, Penuh_Waktu, Tanggal_Kerja,
dan Gaji. Jika jendela DataGridView Tasks masih terlihat, klik di mana saja di luar jendela untuk
menutupnya.
Gambar 4.9 Kepala-kepala kolom pada kontrol DataGridView
Langkah 15: Selanjutnya, Anda akan menyejajarkan kolom Tanggal_Kerja ke tengah. Pilih properti
Columns dan buka jendela Edit Columns, yang ditampilkan pada Gambar 4.10. Pilih kolom Tanggal_Kerja, dan pilih DefaultCellStyle. Ini akan menampilkan
jendela CellStyle Builder, yang ditampilkan pada Gambar
4.11. Pilih properti Alignment, dan
pilih MiddleCenter dari list
dropdown. Klik tombol OK sampai
jendela Edit Columns ditutup.
Gambar 4.10 Jendela dialog Edit
Columns
Langkah 16: Buka jendela Code dari form, dan periksa kode Visual Studio yang disisipkan ke
dalam event handler Load. Ia memanggil metode Fill dari StafPenjualanTableAdapter,
melewatkan kepadanya DataTable StafPenjualan di dalam StafPenjualanDataSet:
Me.StafPenjualanTableAdapter.Fill(Me.StafPenjualanDataSet.StafPenjualan)
Inilah bagaimana grid membaca datanya: TableAdapter membaca data dari
database, menggunakan metode Fill.
Metode Fill memuat sebuah query SQL
yang menentukan kolom-kolom mana dari tabel yang akan digunakan. DataTable StafPenjualan adalah sebuah kontainer yang memuat data ketika ia
ditampilkan pada kontrol DataGridView.
Gambar 4.11 Jendela CellStyle
Builder
Langkah 17: Simpan dan jalankan aplikasi. Anda akan
melihat semua baris dari tabel StafPenjualan,
seperti ditunjukkan pada Gambar 4.12.
Gambar 4.12 Menjalankan aplikasi, dan menampilka tabel StafPenjualan
Langkah 18: Sekarang baris-baris dicantumkan dengan
tatanan menaik berdasarkan nomor ID. Klik pada kolom Nama_Belakang dan amati bahwa grid sekarang diurutkan dengan
tatanan menaik berdasarkan nama belakang. Klik pada kolom Nama_Belakang kembali dan amati bahwa grid sekarang diurutkan
dengan tatanan menurun.
Langkah 19: Tempatkan mouse ke atas batas antar dua
kolom. Ketika kursor mouse berubah menjadi sebuah anak-panah horisontal,
gunakan mouse untuk menggeret batas tersebut ke kanan atau ke kiri.
Langkah 20: Coba hapus sebuah baris. Klik tombol di
kiri dari salah satu baris. Keseluruhan baris akan diseleksi (disorot). Tekan
kunci Del dan amati bahwa baris
tersebut akan menghilang. Baris tersebut telah dihapus dari memori, tetapi
bukan dari database.
Langkah 21: Selanjutnya, Anda akan menyisipkan sebuah
baris. Gulung ke baris bawah dari grid dan masukkan informasi berikut pada
sel-sel kosong: 847, Jekson, Sitogol,
(centang Waktu_Penuh), 6/1/2011, 5500000. Tekan kunci Enter untuk
menyimpannya.
Langkah 22: Urutkan grid pada kolom Nama_Belakang, dan lihat baris yang
Anda sisipkan.
Langkah 23: Tutup aplikasi dan jalankan kembali untuk
memverifikasi bahwa perubahan yang telah Anda lakukan pada DataSet tidak disimpan ke dalam database. Baris-baris gird tampak
sama seperti sebelumnya. Hentikan program kembali.
Langkah 24: Pada mode design, perhatikan tiga komponen
yang ditempatkan pada component tray di bawah form oleh Visual Studio ketika
Anda menambahkan koneksi ke tabel StafPenjualan:
- StafPenjualanDataSet adalah objek yang memuat salinan dari tabel database di memori.
- StafPenjualanBindingSource adalah objek yang memindahkan data dari dataset ke kontrol DataGridView.
- StafPenjualanTableAdapter adalah objek yang menyalin data dari database ke dalam dataset.
4.2 Memilih Baris-Baris DataSet
Pada bagian sebelumnya, Anda telah belajar
bagaimana menampilkan semua baris dari sebuah DataSet menggunakan kontrol DataGridView.
Aplikasi-aplikasi seringkali perlu menyeleksi (atau memilter) baris-baris
tertentu untuk ditampilkan. Dimisalkan bahwa Anda ingin menampilkan hanya
anggota-anggota staf penjualan yang bekerja penuh-waktu. Atau, Anda ingin
menampilkan pekerja-pekerja yang dikerjakan sebelum 2012. Anda bisa juga ingin
menampilkan pekerja-pekerja yang dikerjakan dalam lima tahun terakhir dengan
gaji kurang dari 4000000. Dengan menggunakan query SQL dan perangkat-perangkat
pada Visual Studio, hampir semua jenis pemilteran dapat dilakukan.
SQL
SQL (Structurer
Query Language) merupakan bahasa standar untuk bekerja dengan database. SQL
memuat sejumlah katakunci. Anda dapat menggunakannya untuk mengkonstruksi
statemen-statemen yang dikenal sebagai query. Query adalah instruksi yang
diberikan kepada database, yang kemudian database itu mengeksekusi query
tersebut.
Memodifikasi Query Pada Sumber Data
Untuk memodifikasi (mengedit) sebuah query
yang digunakan pada sumber data tertentu, Anda bisa melihat file skema DataSet pada jendela Solution Explorer. Dimisalkan bahwa Anda telah menciptakan sebuah sumber
data dengan nama StafPenjualanDataSet;
kemudian file skema itu diberikan nama StafPenjualanDataSet.xsd.
Anda kemudian mengklik ganda nama file tersebut untuk membuka perangkat Dataset Designer, seperti ditunjukkan pada Gambar 4.13. Baris atas
menunjukkan nama tabel (StafPenjualan).
Baris-baris berikutnya mencantumkan kolom-kolom pada tabel, yang
mengidentifikasi kolom ID sebagai primary
key. StafPenjualanTableAdapter
ditampilkan di bawahnya, diikuti dengan beberapa query database. Secara
default, ada satu query dengan nama Fill,
GetData() yang mengisi DataSet
ketika form dimuat.
Gambar 4.13 StafPenjualanDataSet, pada jendela DataSet Designer
Jika Anda mengklik-kanan pada DataSet dan memilih Configure dari menu yang dimunculkan,
Anda dapat memodifikasi query menggunakan TableAdapter
Configuration Wizard, seperti ditunjukkan pada Gambar 4.14. Jika teks query
cukup sederhana, Anda dapat memodifikasinya secara langsung pada jendela ini.
Jika query lebih kompleks, Anda bisa mengklik tombol Query Builder untuk
menampilkan jendela Query Builder, seperti ditunjukkan pada
Gambar 4.15.
Gambar 4.14 Jendela dialog TableAdapter Configuration Wizard
Query Builder
Query Builder adalah sebuah perangkat yang
disediakan oleh Visual Studio untuk menciptakan dan memodifikasi query SQL. Ia
memuat empat bagian, atau panel, seperti ditunjukkan pada Gambar 4.16:
- Panel diagram menampilkan semua tabel yang digunakan pada query, dengan sebuah tanda centang di samping setiap bidang yang akan digunakan dalam DataSet.
- Panel grid menampilkan query dengan format seperti spreadsheet, yang secara khusus cocok untuk memilih tatanan pengurutan dan memasukkan kriteria seleksi.
- Panel SQL menampilkan query SQL aktual yang berkaitan dengan tabel-tabel dan bidang-bidang yang diseleksi pada panel diagram dan panel grid. Pemrograma SQL berpengalaman akan menuliskan query-query secara langsung pada panel ini.
- Panel hasil menampilkan baris-baris yang dihasilkan dengan mengeksekusi query SQL. Untuk mengisi panel hasil, klik tombol Execute Query.
Gambar 4.15 Jendela Query
Builder
Gambar 4.16 Seleksi-seleksi pada jendela Query Builder
Untuk menambah tabel baru pada jendela Query Builder, klik kanan di dalam panel diagram dan pilih Add Table dari menu yang ditampilkan.
Menambah Query SELECT pada
DataGridView
Jika Anda ingin menambah sebuah query SELECT
pada suatu kontrol DataGridView,
cara termudah untuk melakukannya adalah dengan menggunakan TableAdapter yang dilekatkan pada grid. Dimisalkan bahwa StafPenjualanTableAdapter telah
dilekatkan pada sebuah DataGridView
yang menampilkan tabel StafPenjualan
dari database Perusahaan. Kemudian
pada mode Design, Anda dapat
mengklik kanan pada ikon TableAdapter
dan memilih Add Query. Jendela Search Criteria Builder akan ditampilkan, seperti ditunjukkan pada Gambar 4.17.
Anda dapat memodifikasi query sehingga menjadi berikut:
SELECT
ID, Nama_Belakang, Nama_Depan Penuh_Waktu, Tanggal_Kerja, Gaji
FROM
StafPenjualan
WHERE Gaji
< 4500000
Gambar 4.17 Jendela Search
Criteria Builder
Gambar 4.18 Baris-baris dataset yang difilter oleh Gaji_query
Gambar 4.18 menunjukkan jendela Search Crietria Builder setelah
penambahan klausa WHERE pada
statemen SELECT. Anda dapat
memberikan nama pada query tersebut, seperti Gaji_query. Ketika Anda mengklik tombol OK, sebuah kontrol ToolStrip akan ditambahkan pada form,
dengan sebuah tombol query. Hasilnya ditampilkan pada Gambar 4.19. Hanya
baris-baris dengan gaji kurang dari Rp. 4500000 yang ditampilkan.
Tutorial 4.2: Memfilter Baris pada Tabel StafPenjualan
Pada tutorial ini, Anda menciptakan beberapa
query yang mengubah cara baris-baris dari tabel StafPenjualan ditampilkan pada sebuah kontrol DataGridView.
Langkah-Langkah
Tutorial
Langkah 1: Salin folder Contoh Database yang
telah Anda ciptakan pada Tutorial 4.1 ke sebuah folder baru dengan nama Contoh Database 2.
Langkah 2: Buka projek dari folder Contoh Database 2.
Langkah 3: Klik kanan pada nama projek pada jendela Solution Explorer, dan pilih Rename.
Namai-ulang projek menjadi Contoh
Database 2.
Langkah 4: Pada jendela Design untuk Form1, klik
kanan pada kontrol StafPenjualanTableAdapter
pada component tray dan pilih Add Query dari menu yang dimunculkan.
Langkah 5: Pada jendela Search Criteria Builder, nama query Penuh_Waktu. Tetapkan teks query menjadi berikut:
SELECT
ID, Nama_Belakang, Nama_Depan, Penuh_Waktu, Tanggal_Kerja, Gaji
FROM StafPenjualan
WHERE
(Penuh_Waktu = ‘True’)
Langkah 6: Klik pada tombol OK untuk menutup jendela Search Criteria Builder.
Langkah 7: Jika kepala-kepala kolom grid Anda
tersembunyi di balik kontrol ToolStrip,
geser grid ke bawah untuk menampakkannya. Tetapkan properti Anchor ke empat sisi form.
Langkah 8: Simpan projek dan jalankan aplikasi. Klik
tombol Penuh_Waktu dan amati bahwa
hanya para pekerja penuh-waktu yang ditampilkan. Tutup aplikasi dan kembali ke
mode Design.
Langkah 9: Lihat kode sumber yang dihasilkan oleh
Visual Studio ketika Anda menambahkan ToolStripButton.
Ia memanggil sebuah metode dengan nama Penuh_Waktu,
menggunakan objek StafPenjualanTableAdapter.
Argumen yang dilewatkan kepada metode tersebut adalah tabel StafPenjualan yang berada di dalam StafPenjualanDataSet:
Private
Sub Penuh_WaktuToolStripButton_Click(…)
Handles Penuh_WaktuToolStripButton.Click
Try
Me.StafPenjualanTableAdapter.Penuh_Waktu
(Me.StafPenjualanDataSet.StafPenjualan)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End
Sub
Jika sebuah eksepsi dilemparkan, sebuah kotak
akan menampilkan pesan eksepsi. Sebagai alternatifnya, Anda dapat mengganti
pemanggilan terhadap MessageBox.Show
dengan sebuah statemen yang menugaskan suatu nilai kepada kontrol ErrorProvider.
Langkah 10: Sekarang, Anda akan menambahkan tombol lain
pada ToolStrip yang menampilkan
semua baris pada tabel. Klik kanan pada kontrol StafPenjualanTableAdapter, dan pilih Add Query.
Langkah 11: Pada jendela Search Criteria Builder, nama query dengan Semua_Baris, dan pertahankan teks query
yang ada. Klik tombol OK untuk
menutup jendela dan ciptakan query. Perhatikan bahwa kontrol ToolStrip kedua akan diciptakan pada
form, seperti ditunjukkan pada Gambar 4.20.
Gambar 4.20 Tabel StafPenjualan
pada sebuah kontrol DataGridView,
dengan dua tombol query
Langkah 12: Sekali lagi, Anda perlu membenahi atas dari
grid sehingga kepala-kepala kolom tetap terlihat.
Langkah 13: Simpan projek. Jalankan aplikasi dan klik
pada kedua tombol query.
Langkah 14: Akhiri aplikasi dan tutup projek.
Pada bagian ini, Anda akan belajar bagaiman
mengikat sumber data ke kontrol-kontrol seperti TextBox, Label, dan ListBox. Anda menamakan kontrol semacam
itu sebagai kontrol data-bound karena ia memperbarui kontennya secara otomatis
ketika Anda berpindah dari satu baris ke baris berikutnya pada sebuah DataSet. Kontrol data-bound dapat pula
memperbarui konten dari bidang-bidang. Anda akan belajar bagaimana mengikat
sebuah DataGridView pada DataSet yang telah ada. Anda juga akan
belajar bagaimana menggunakan kontrol ListBox
untuk menavigasi dari satu baris DataSet
ke baris lainnya.
Visual Studio Menyalin Fila Database
Ketika sebuah sumber data adalah sebuah file
SQL Server, jendela dialog yang ditampilkan pada Gambar 4.21 akan ditunjukkan
dan meminta Anda untuk menyalin file database ke projek Anda. Secara umum,
pembuatan salinan lokadi dari suatu database adalah hal baik.
Gambar 4.21 Penyalinan sebuah file database ke folder
projek
Jika Anda menjawab Yes pada kotak dialog tersebut, Visual Studio akan menyalin file
database ke folder akar dari projek Anda. Setiap kali Anda membangun aplikasi,
database itu secara otomatis disalin ke direktori keluaran dari projek. Ini
adalah file database yang akan ditampilkan dan diperbarui oleh aplikasi Anda.
Lokasi bergantung pada bagaimana Anda menjalankan program.
- Jika Anda menjalankan program dengan mode Debug, maka direktori keluaran adalah \bin\Debug.
- Jika Anda menjalankan tanpa debugging, maka direktori keluaran adalah \bin\Release.
Mendistribusikan Aplikasi Database
Terkompilasi
Visual Basic mempermudah Anda untuk
mendistribusikan sebuah aplikasi terkompilasi berikut dengan databasenya.
Tekniknya dinamakan dengan penyebaran xcopy. Apa yang perlu Anda lakukan adalah
menyalin file EXE dari aplikasi dan file database dari direktori \bin\Debug, atau dari folder
\bin\Release. Pada Gambar 4.22, misalnya, aplikasi dengan nama Contoh Database
dan file database Perusahaan.mdf.
Gambar 4.22 Dengan Visual Basic, Anda dapat mendistribusikan aplikasi terkompilasi dengan
databasenya
Memodifikasi String Koneksi Database
Untuk memodifikasi string koneksi database,
klik kanan pada entri dengan nama My
Project pada jendela Solution Explorer. Kemudian klik Open. Pada jendela yang ditampilkan,
pilih tab Settings. Baris pertama
pada grid adalah string koneksi database. Klik tombol dengan tiga dot pada
kolom Value, seperti ditunjukkan
pada Gambar 4.28.
Gambar 4.23 Memodifikasi string koneksi database
Mengganti Nama dan Menghapus Sumber
Data
Anda tidak bisa mengganti nama sebuah sumber
data karena sumber data merepresentasikan nama dari sebuah kelas DataSet yang dihasilkan oleh Visual
Studio. Pada dasarnya, kelas DataSet
memuat beberapa kelas inner (kelas-kelas yang dideklarasikan di dalam
kelas-kelas lain). Penggantian nama sebuah kelas DataSet, berikut dengan semua kelas yang berelasi dan semua objek
yang menggunakan nama-nama kelas itu adalah hal yang mustahil. Oleh karena itu,
Anda sebaiknya memilih nama untuk sumber data Anda yang Anda sendiri tidak
berencana untuk mengubahnya.
Anda dapat menghapus sebuah sumber data
dengan mudah: Pilih file XSD pada jendela Solution
Explorer dan tekan kunci Delete. Namun, jika program Anda
memiliki satu atau lebih form yang memuat BindingSources
yang terkondeksi dengan sumber data itu, Anda sebaiknya hati-hati. Setelah
menghapus sumber data, Anda tidak akan bisa membuka form apapun pada jendela
Designer yang memuat BindingSources.
Anda akan menemukan pesan error seperti yang ditunjukkan pada Gambar 4.24. Anda
direkomendasikan untuk membuat salinan pendukung untuk projek Anda.
Gambar 4.24 Pesan error yang dihasilkan oleh Visual
Studio setelah sumber data dihapus
Mengikat Sumber Data Ke Sebuah
Kontrol DataGridView
Pada Tutorial 4.1, Anda telah menggunakan
jendela DataGridView Taks untuk memandu Anda menciptakan BindingSource, TableAdapter, dan DataSet.
Jika projek Anda telah memuat sumber data yang diperlukan, Anda dapat mengikatnya
pada sebuah kontrol DataGridView
dengan menggeret tabel StafPenjualan
dari jendela Data Source. Visual Studio akan menambahkan
batang navigasi pada form, seperti ditunjukkan pada Gambar 4.25. Jika batang
navigasi tidak diberikan secara otomatis oleh Visual Studio, Anda bisa
menggeret kontrol BindingNavigator
ke dalam form, dan menetapkan properti BindingSource-nya
menjadi StafPenjualanBindingSource.
Setelah grid diikat pada sebuah DataSet, Anda dapat menetapkan properti
Dock-nya agar ia selalu mengisi
batas-batas form. Untuk melakukannya, pilih grid, lihat jendela Properties, pilih properti Dock, dan klik pada tombol tengah. Grid
akan mengekspansi dan mengisi form. Gambar 4.26 menunjukkan tabel StafPenjualan pada sebuah kontrol DataGridView dengan sebuah toolbar pada
saat aplikasi dijalankan.
Mengikat Bidang-Bidang Pada
Kontrol-Kontrol
Jika jendel Data Sources memuat
sebuah sumber data yang telah ada, Anda dapat dengan mudah menciptakan sebuah
kontrol data-bound untuk tiap kolom dengan menggeret suatu tabel dari sumber
data ke form Anda. Pertama, pilih Details pada dropdown list yang berkaitan
dengan tabel, seperti ditunjukkan pada Gambar 4.27. (Tipe kontrol default
adalah DataGridView, yang telah Anda
gunakan). Ketika Anda menggeret nama tabel ke form, sebuah kontrol diciptakan
untuk setiap bidang. Seperti ditunjukkan pada Gambar 4.28, sebuah toolbar
navigasi juga ditambahkan pada form.
Gambar 4.25 Setelah menggeret tabel StafPenjualan dari jendela Data
Sources pada sebuah form
Gambar 4.26 Form setelah aplikasi dijalankan
Gambar 4.27 Menyeleksi kontrol binding dari sebuah tabel
pada jendela Data Sources
Kadangkala nama-nama kolom pada sumber data
seperti Nama_Depan memuat karakter
garis bawah. Ketika Anda mengikat sumber data ke kontrol-kontrol, Visual Studio
menghapus karakter itu.
Gambar 4.28 Setelah menggeret sebuah sumber data ke
dalam form
Anda bisa jadi ingin memodifikasi tampilan
atau properti dari kontrol. Sebagai contoh, jika Anda ingin kolom Tanggal_Kerja untuk menampilkan format mm/dd/yyyy, Anda bisa menetapkan
properti Format-nya menjadi Short.
Gambar 4.29 Menyeleksi tipe pengikatan kontrol untuk
bidang ID pada jendela Data Sources
Gambar 4.30 Menampilkan salah satu baris dari tabel StafPenjualan pada kontrol-kontrol
terikat
Secara default, kolom-kolom database Text dan Numeric diikat ke kontrol TextBox,
bidang Yes/No diikat ke kotak
periksa, dan bidang DateTime diikat
ke kontrol DateTimePicker. Jika Anda
ingin agar user tidak memodifikasi bidang terproteksi seperti ID, Anda bisa
mengubah tipe kontrol pengikatan pada jendela Data Source. Sebagai
contoh, jika Anda mengklik bidang ID pada tabel StafPenjualan pada jendela Data
Source, maka sejumlah tipe kontrol
akan ditampilkan (Lihat Gambar 4.29). Jika Anda memilih tipe kontrol Label, user dapat melihat bidang itu
tetapi tidak dapat memodifikasi kontennya.
Gambar 4.30 menunjukkan sebuah contoh form
dengan kontrol Label untuk bidang ID
dan beberapa pemodifikasian pada tampilan dari kontrol-kontrol lain.
Mengenalkan Database Karate
Database yang akan digunakan pada beberapa
contoh ke depan dinamakan dengan Karate (Karate.mdf), yang dirancang untuk
keanggotaan dan penjadwalan kelas untuk sekolah bela diri. Sebuah tabel dengan
nama Anggota memuat informasi tentang anggota-anggota, seperti nama depan, nama
belakang, nomor telepon, dan seterusnya. Lihat Tabel 4.3.
Yang berelasi dengan tabel Anggota adalah
tabel Pembayaran, yang ditampilkan
pada Tabel 4.4. Ia menunukkan pembayaran yang dilakukan oleh anggota. Setiap
baris pada tabel Pembayaran memuat Id_Anggota yang mengidentifikasi
anggota (dari tabel Anggota) yang melakukan pembayaran. Relasi ditunjukkan oleh
diagram pada Gambar 4.36. Garis menghubungkan bidang ID pada tabel Anggota
dengan bidang Id_Anggota pada tabel Pembayaran.
Tabel 4.3 Tabel Anggota
dari database Karate
Gambar 4.4 Tabel Pembayaran
Gambar 4.31 Relasi antara tabel Anggota dan tabel Pembayaran,
dilakukan dengan mengklik-ganda pada ikon KarateDataSet
di bawah form
Mengikat Sumber Data Ke Kontrol
Tipe-List
ListBox dan ComboBox
merupakan perangkat ideal untuk menampilkan daftar item dan membiarkan user
memilih item-item. Apa yang perlu Anda lakukan adalah menetapkan
properti-properti berikut:
- Properti DataSource mengidentifikasi sebuah tabel data yang akan menyediakan data database.
- Properti DisplayMember mengidentifikasi kolom di dalam tabel yang akan ditampilkan pada ListBox atau ComboBox.
Properti ValueMember
mengidentidikasi kolom di dalam tabel yang menyediakan nilai pengidentifikasi
ketika sebuah item diseleksi pada kotak list. Nilai pengidentifikasi dihasilkan
pada properti SelectedValue dari
kotak list. Umumnya, properti ValueMember
memuat nama dari kunci primer (primary
key) dari tabel karena bidang itu secara unik mengidentifikasi setiap entri
tabel.
Ketika Anda menggunakan mouse untuk menggeret
sebuah kolom tabel dari jendela Data
Source pada sebuah ListBox atau ComboBox, Visual Studio secara otomatis menciptakan
komponen-komponen data yang diperlukan: sebuah DataSet, sebuah BindingSource,
dan sebuah Table Adapter. Ketika Anda mengklik smart tag
di atas dari sebuah ListBox atau ComboBox, sebuah dialog akan
mempermudah menetapkan sejumlah properti. Contohnya ditampilkan pada Gambar
4.32.
Gambar 4.32 Menetapkan sejumlah opsi pengikatan-data
dari sebuah kontrol ListBox
ListBox atau ComboBox
data-bound merupakan perangkat navigasi yang sangat berguna. Ketika user
menyeleksi sebuah item di dalam list, BindingSource
dari form akan mereposisi dirinya pada baris DataSet yang cocok dengan nilai terseleksi. Semua bidang lain yang
terikat pada DataSet yang sama pada
form akan diperbarui secara otomatis. Tutorial 4.3 akan menunjukkan bagaimana
ini dilakukan.
Tutorial 4.3: Menampilkan Tabel Anggota Pada Sebuah
ListBox
Pada tutorial
ini, Anda menampilkan sejumlah nama belakang dari anggota dari tabel Anggota pada database Karate. Ketika user mengklik nama dari
seorang anggota, program akan menampilkan tanggal kapan anggota itu bergabung.
Langkah-Langkah Tutorial
Langkah 1: Ciptakanlah sebuah aplikasi Windows Forms Application dengan nama Daftar Anggota.
Langkah 2: Klik Add New
Data Source pada jendela Data
Sources. (Jika Anda tidak dapat melihat jendela Data Sources, pilih menu VIEW
dan klik Other Windows dan kemudian klik Data
Sources.
Langkah 3: Ikuti langkah-langkah pada Data Source Configuration Wizard untuk menciptakan sebuah koneksi
ke tabel Anggota pada file database
Karate.mdf. Namai DataSet dengan KarateDataSet.
Langkah 4: Tetapkan properti Text
dari form menjadi Daftar Anggota.
Langkah 5: Tambahkan sebuah kontrol ListBox pada form dan namai dengan listAnggota.
Langkah 6: Tambahkan sebuah kontrol Label di atas kotak list dan tetapkan properti Text-nya menjadi Nama-Nama Anggota. Form Anda akan tampak seperti ditunjukkan pada Gambar 4.33.
Gambar 4.33 Program Daftar
Anggota dengan sebuah kotak list
Langkah 7: Klik pada smart tag dari ListBox, yang menyebabkan jendela ListBox Tasks ditampilkan, seperti ditunjukkan pada Gambar 4.34.
Pilih kotak periksa Data Bounds Items.
Gambar 4.34 Jendela ListBox
Tasks
Jendela ListBox Tasks, yang ditunjukkan pada Gambar 4.35, sekarang memuat beberapa
bidang databinding.
Gambar 4.35 Jendela ListBox
Tasks
Langkah 8: Pilih dropdown list Data Source, ekspansi
grup Other Data Source, ekspansi Project Data Sources, ekspansi KarateDataSet, dan pilih tabel Anggota
(ditunjukkan pada Gambar 4.36). Perhatikan bahwa Visual Studio telah
menambahkan tiga komponen pada component tray di bawah form: sebuah DataSet, sebuah BindingSource, dan sebuah TableAdapter.
Langkah 9: Ketika masih pada jendela ListView Tasks, tetapkan
properti DisplayMember menjadi Nama_Belakang.
Langkah 10: Simpan dan jalankan aplikasi. Kotak list sekarang telah
memuat nama belakang dari tiap anggota seperti ditunjukkan pada Gambar 4.37.
Tutup jendela dan kembali ke mode Design.
Langkah 11: Selanjutnya, Anda menambahkan sebuah label data-bound
pada form yang menampilkan nomor telepon dari anggota. Klik bidang Telepon pada jendela Data Source, pilih Label dari
dropdown list, dan geret bidang Telepon
dengan mouse ke form. Tetapkan properti BorderStyle
menjadi Fixed 3D.
Langkah 12: Simpan dan jalankan aplikasi. Ketika Anda mengklik nama
dari tiap anggota, perhatikan bagaimana nomor telepon ditampilkan. Sebagai
contoh, lihat Gambar 4.38. Analisa apa yang terjadi di sini. Ketika user
menyeleksi sebuah nama di dalam kotak list, mekanisme pengikatan-data pada form
akan memindahkan baris DataSet yang
memuat nama anggota. Kontrol Label
terikat pada bidang Telepon, jadi ia
menampilkan nomor telepon dari anggota yang diseleksi pada kotak list.
Langkah 13: Untuk setiap bidang lain pada jendela Data Sources, pilih dropdown list dan pilih tipe kontrol Label. Kemudian geret tiap bidang
tersebut ke form. Tetapkan properti BorderStyle
dari tiap label menjadi Fixed 3D. Ketika Anda menjalankan aplikasi,
ia akan ditampilkan seperti pada Gambar 4.39.
Langkah 14: Simpan projek dan jalankan aplikasi. Klik pada sejumlah
nama anggota, dan verifikasi bahwa kontrol-kontrol Label mengubah nilainya.
Langkah 15: Tutup aplikasi.
Menambahkan Baris-Baris Pada
DataTable Menggunakan Metode NewRow
Kelas DataTable
memiliki dua metode yang membantu Anda untuk menambahkan baris-baris pada tabel
dalam DataSet: NewRow dan Add. Metode NewRow menciptakan dan menghasilkan
sebuah baris kosong baru yang memiliki struktur sama seperti baris-baris lain
pada tabel. Metode ini dideklarasikan sebagai berikut:
NewRow()
As DataRow
Berikut adalah contoh pemanggilan sederhana
terhadap NewRow, menggunakan tabel
Pembayaran di dalam sebuah DataSet
dengan nama PembayaranDataSet:
Dim
baris As DataRow
baris
= PembayaranDataSet.Pembayaran.NewRow()
Karena NewRow
menghasilkan sebuah tipe DataRow
umum, nilai baliknya harus dikonversi menjadi sebuah tipe PembayaranRow sebelum Anda mengakses setiap bidang pada tabel
Pembayaran. Kode berikut mendefinisikan-ulang baris dan menunjukkan bagaimana
konversi dilakukan:
Dim baris As PembayaranDataSet.PembayaranRow
baris = CType (PembayaranDataSet.Pembayaran.NewRow,
PembayaranDataSet. PembayaranRow)
Selanjutnya, Anda dapat menugaskan nilai
kepada tiap kolom di dalam tabel. Nama kolom adalah properti-properti pada
kelas PembayaranDataSet.PembayaranRow.
With
baris
.Id_Anggota = 5
.Tanggal_Pembayaran = '5/15/2015'
.Jumlah = 50000
End
With
Langkah terakhir adalah menambahkan baris
baru pada tabel dengan memanggil metode Add
dari koleksi Rows. Berikut adalah
bagaimana metode ini dideklarasikan:
Function
Add(baris As DataRow) As DataRow
Dengan melanjutkan contoh yang sama, statemen
berikut menambahkan baris pada tabel Pembayaran:
PembayaranDataSet.Pembayaran.Rows.Add(baris)
Menggunakan Metode Rows.Add
Metode Rows.Add
menambahkan sebuah baris pada suatu DataTable.
Ketika memanggil metode Rows.Add,
Anda melewatkan nilai-nilai dari kolom baru kepada metode itu. Kode berikut
menambahkan sebuah entri baru pada tabel Anggota
dari AnggotaDataSet:
AnggotaDataSet.Anggota.Rows.Add(15,
Joni, Samy, 111-2222, ‘5/15/2015’)
Jika kunci primer dari tabel pada database
adalah sebuah bidang oto-generasi, Anda sebaiknya melewatkan nilai Nothing pada argumen terkait pada
metode Add. Berikut adalah sebuah
contoh dari tabel Pembayaran, di
mana di dalamnya kolom pertama adalah oto-generasi:
PembayaranDataSet.Pembayaran.Rows.Add(Nothing,
5, ‘5/15/2015’, 50000)
Memperbarui DataTable
Penambahan sebuah baris pada suatu DataTable tidak memengaruhi database.
Jika Anda ingin menyalin perubahan yang ada ke dalam database, Anda perlu
memanggil metode Update dari TabelAdapter yang berkaitan dengan DataTable. Statemen berikut, misalnya,
menuliskan semua perubahan pada tabel Pembayaran (di dalam PembayaranDataSet) ke dalam database:
PembayaranTableAdapter.Update(PembayaranDataSet.Pembayaran)
Karena sebuah DataSet dapat memuat sejumlah tabel, pembaruan sebuah DataSet dapat menyebabkan perubahan
pada semua tabel. Statemen berikut memperbarui semua tabel di dalam PembayaranDataSet:
PembayaranTableAdapter.Update(PembayaranDataSet)
Penyisipan Langsung Menggunakan
TableAdapter
Untuk menambahkan sebuah baris pada suatu
tabel database, Anda memanggil metode Insert dari TableAdapter. Anda melewatkan kepadanya nilai-nilai kolom yang
diperlukan, dengan mengabaikan bidang-bidang oto-generasi. Pada contoh
selanjutnya, PembayaranTableAdapter
menambahkan sebuah baris pada tabel Pembayaran,
yang melewatkan ID, tanggal pembayaran, dan jumlah pembayaran:
PembayaranTableAdapter.Insert(5,
‘5/15/2015’, 50000)
Menghapus Sebuah Baris Dari DataTable
Penghapusan sebuah baris dari suatu DataTable dilakukan dalam dua langkah.
Pertama, Anda membaca suatu referensi terhadap baris yang ingin dihapus; kedua,
Anda memanggil metode Rows.Remove,
melewatkan kepadanya referensi baris. Sebagai contoh, kode berikut memanggil FindByID, melewatkan kepadanya ID dari
pembayaran yang akan dihapus. Kemudian, objek baris yang dihasilkan oleh FindByID dilewatkan kepada metode Rows.Remove:
Dim
baris As DataRow = PembayaranDataSet.Pembayaran.FindByID(36)
PembayaranDataSet.Payments.Rows.Remove(baris)
Pada Tutorial 4.4, Anda akan menuliskan sebuah program yang menambahkan baris-baris pada suatu tabel database.
Tutorial 4.4: Menyisipkan Baris-Baris Ke Tabel Pembayaran
Pada tutorial
ini, Anda akan menciptakan sebuah aplikasi yang menambahkan baris-baris pada
tabel Pembayaran di dalam database Karate.
Langkah-Langkah Tutorial
Langkah 1: Ciptakanlah sebuah aplikasi Windows Forms Application dengan nama Sisipkan Pembayaran.
Langkah 2: Pada jendela Data
Sources, tambahkan sebuah sumber
data baru, menggunakan tabel Pembayaran
dari database Karate. Pilih Karate.mdf. Namai DataSet dengan PembayaranDataSet.
Langkah 3: Ketika ditanya apakah Anda ingin menyalin file database
ke dalam projek Anda, jawab Yes.
Langkah 4: Tambahkan tiga kontrol TextBox pada form dengan label-label yang sesuai. Satu kontrol
dengan nama teksIdAnggota, yang lain
teksTanggal, dan yang ketiga dengan
nama teksJumlah. Gunakan Gambar 4.40
sebagai panduan.
Langkah 5: Tambahkan sebuah kontrol Button dengan nama tombolSisipkan
dan tetapkan properti Text-nya
dengan Sisipkan.
Langkah 6: Tambahkan sebuah kontrol DataGridView pada form dan tetapkan properti-properti berikut: Name = dgvPembayaran; BorderStyle: None;
BackgroundColor = Control; ReadOnly = True; RowHeadersVisible = False; Anchor =
Top, Bottom, Left, Right.
Langkah 7: Buka jendela DataGridView
Tasks dari grid dan tetapkan properti DataSource-nya
menjadi tabel Pembayaran dari PembayaranDataSet.
Langkah 8: Pilih properti Columns
dari grid, yang membuka jendela Edit
Columns. Hapus kolom ID. Kolom-kolom
tersisa ditampilkan pada Gambar 4.41a.
Langkah 9: Masih pada jendela Edit
Columns, pilih kolom Id_Anggota, dan buka properti DefaultCellStyle pada kotak list
sebelah kanan. Jendela CellStyle Builder akan ditampilkan.
Langkah 10: Pada jendela CellStyle
Builder, tetapkan properti-properti
berikut: Alignment = MiddleCenter;
ForeColor = Blue. Klik tombol OK untuk menutup jendela.
Langkah 11: Pada jendela Edit
Columns, pilih kolom Jumlah dan buka properti DefaultCellStyle-nya.
Langkah 12: Buka properti Format
dan pilih Numeric.
Langkah 13: Klik tombol OK
untuk menutup jendela CellStyle Builder.
Langkah 14: Lakukan eksperimen dengan tiga tombol, ubah warna dan
format yang Anda inginkan. Ketika selesai, klik OK untuk menutup jendela Edit
Columns.
Langkah 15: Simpan dan jalankan aplikasi. Anda akan melihat form
seperti ditampilkan di bawah ini:
Langkah 16: Selanjutnya, Anda akan menambahkan kode untuk event
handler Click dari tombol Sisipkan sehingga user dapat
menciptakan dan menyimpan pembayaran baru. Pada mode Design, klik ganda tombol Sisipkan
dan tambahkan kode berikut:
Private Sub tombolSisipkan_Click(…) Handles
tombolSisipkan.Click
Try
PembayaranTableAdapter.Insert(Nothing,
CShort(teksIdAnggota.Text),
CDate(teksPembayaran.Text),
CInt(teksJumlah.Text))
Me.PembayaranTableAdapter.Fill(Me.PembayaranDataSet.Pembayaran)
Catch
ex As Exception
MessageBox.Show(ex.Message, "Error Database")
End
Try
End Sub
Anda
menggunakan statemen Try-Catch di sini untuk menangani eksepsi
yang dilempar oleh database. Kode yang Anda tambahkan memanggil metode Insert dari TableAdapter, melewatkan kepadanya nilai-nilai dari ketiga kolom:
Id Anggota, tanggal pembayaran, dan jumlah pembayaran. Setiap argumen harus
dikonversi menjadi sebuah tipe yang cocok dengan tipe kolom DataSet. Kemudian perintah Fill
dipanggil sehingga user dapat melihat pembayaran barus pada grid.
Langkah 17: Tambahkan kode berikut pada event handler Load dari form. Anda ingin kotak teks
menampilkan tanggal hari ini:
'menetapkan tanggal sekarang pada kotak teks
teksPembayaran.Text = FormatDateTime(Today,
DateFormat.ShortDate)
Langkah 18: Simpan projek dan jalankan aplikasi. Tambahkan sebuah
pembayaran baru, menggunakan nilai Id_Anggota
antara 1 dan 9. Verifikasi bahwa pembayaran Anda ditampilkan pada grid setelah
Anda mengklik tombol Sisip.
Perhatikan Gambar 4.41c.
Gambar 4.42 Pesan error ditampilkan ketika user mencoba
menambahkan sebuah baris pembayaran, dengan Id_Anggota yang tidak ada
Langkah 19: Tambahkan sebuah pembayaran dengan Id_Anggota 134. Id_Anggota
ini tidak ada pada tabel Anggota, sehingga Anda akan melihat pesan error
(seperti ditunjukkan pada Gambar 4.42) yang mengatakan bahwa Anda melanggar
kekangan kunci primer. Pembayaran tidak disimpan.
Langkah 20: Tambahkan sebuah pembayaran menggunakan format tanggal
yang tak valid atau menggunakan nilai tak-numerik untuk jumlah pembayaran.
Ketika Anda mengklik tombol Sisip, amati pesan error yang dihasilkan oleh
database.
Langkah 21: Tutup aplikasi.
Menggunakan Loop pada DataSet
Teknik-teknik yang telah Anda pelajari
tentang loop dan koleksi pada bab-bab terdahulu juga berlaku untuk DataSet. Anda dapat beriterasi pada
koleksi Rows dari sebuah DataTable
menggunakan statemen For Each.
Loop berikut beriterasi pada tabel Pembayaran dari PembayaranDataSet, yang menambahkan kolom Jumlah pada suatu total. DataSet dibangun dari tabel Pembayaran di dalam database Karate:
Dim baris As PembayaranDataSet.PembayaranRow
Dim decTotal As Decimal = 0
For Each baris In PembayaranDataSet.Pembayaran.Rows
decTotal +=
baris.Jumlah
Next
Pada Tutorial 4.5, Anda akan memodifikasi
aplikasi Sisipkan Pembayaran.
Tutorial 4.5: Menambahkan Sebuah Total Pada Aplikasi
Sisipkan Pembayaran
Pada tutorial
ini, Anda akan menambahkan beberapa statemen yang menghitung jumlah total dari
pembayaran-pembayaran oleh siswa-siswa di sekolah karate.
Langkah-Langkah Tutorial
Langkah 1: Salin program Sisipkan
Pembayaran yang telah Anda ciptakan
pada Tutorial 4.4. Berikan nama baru Sisipkan
Pembayaran Total.
Langkah 2: Tambahkan sebuah tombol baru pada form. Tetapkan
properti-propertinya sebagai berikut: Name
= tombolTotal; Text = Total Pembayaran.
Langkah 3: Klik ganda pada tombol baru tersebut dan modifikasi
handler Click-nya sehingga ia memuat
kode berikut:
Private Sub tombolTotal_Click(…) Handles
tombolTotal.Click
Dim decTotal As Decimal = 0
Dim baris As PembayaranDataSet.PembayaranRow
For Each baris In
PembayaranDataSet.Pembayaran.Rows
decTotal += baris.Jumlah
Next
MessageBox.Show("Total
pembayaran sebesar " &
"Rp.
" & decTotal.ToString(), "Total")
End Sub
Langkah 4: Simpan projek dan jalankan aplikasi. Klik pada tombol Total
Pembayaran dan amati hasilnya.
Contoh keluaran program ditampilkan pada Gambar 4.43.
Langkah 5: Akhiri aplikasi.
4.3 Fokus Pada Penyelesaian Permasalahan: Manajer
Sekolah Karate
Di sini, Anda akan merancang aplikasi Manajer Sekolah Karate, dengan
form startup sebagai berikut:
Berikut adalah seleksi-seleksi yang
disajikan:
File
Keluar
Membership
Tampilkan Semua
Cari Anggota
Tambahkan Anggota Baru
Payments
Semua
Satu Anggota
Berikut adalah form Tampilkan Semua pada aplikasi ini:
Berikut adalah form Cari Anggota pada aplikasi ini:
Berikut adalah form Tambahkan Anggota Baru pada aplikasi ini:
Berikut adalah form Semua Pembayaran pada aplikasi ini:
Berikut adalah form Pembayaran Satu Anggota pada aplikasi ini:
Tutorial 4.6: Menciptakan Form Startup Manajer Sekolah
Karater
Pada tutorial
ini, form akan memuat nama program, informasi versi, dan sebuah kontrol MenuStrip. Ia akan selalu menjadi form
pertama dibuka dan form terakhir ditutup ketika aplikasi dihentikan.
Langkah-Langkah Tutorial
Langkah 1: Ciptakanlah sebuah Windows
Forms Application dengan nama Manajer
Sekolah Karate.
Langkah 2: Namai form dengan nama FormUtama.vb.
Langkah 3: Buka FormUtama
dan tetapkan properti-properti berikut: Size
= 530, 275; Text = Manajer Sekolah Karate, StartPosition = CenterScreen;
MaximizeBox = False; FormBorderStyle = FixedSingle.
Langkah 4: Sisipkan sebuah kontrol Panel pada form dan tetapkan properti Size menjadi 390, 115. Sisipkan kontrol Panel lain di dalam panel pertama dan tetapkan properti Size menjadi 360, 80. Tetapkan properti
BorderStyle untuk kedua panel
menjadi Fixed3D.
Langkah 5: Sisipkan sebuah kontrol Label di dalam panel yang lebih kecil dan tetapkan properti Text menjadi Sekolah Karate Tarabunga. Anda menggunakan 24-point,
bold, italic Monotype Corsiva.
Langkah 6: Tambahkan kontrol Label
lain di sekitar bawah form dan tetapkan properti Text menjadi Sistem
Manajemen 1.0. Anda menggunakan 11.25-point, bold Arial font.
Langkah 7: Tambahkan sebuah kontrol MenuStrip pada form dan sisipkan item-item menu berikut:
&File
K&eluar
&Keanggotaan
T&ilkan
Semua
&Cari
Anggota
&Tambahkan
Anggota Baru
&Pembayaran
&Semua
Sat&u
Anggota
Langkah 8: Klik ganda pada item menu File | Keluaran dan sisipkan kode berikut ke dalam event handler Click-nya:
Me.Close()
Langkah 9: Simpan projek dan jalankan aplikasi. Verifikasi bahwa
form menutup ketika Anda mengklik item menu File | Keluar.
Anda selasai.
Tutorial 4.7 akan fokus pada penambahan subsistem Keanggotaan pada aplikasi.
Tutorial 4.7: Manajer Sekolah Karate: Menampilkan Semua
Anggota
Pada tutorial
ini, Anda akan menggunakan sebuah kontrol DataGridView
untuk menampilkan semua anggota pada sekolah karater. Sebuah sumber data baru
akan ditambahkan pada projek, dan DataGridView
akan diikat dengan sumber data tersebut.
Langkah-Langkah Tutorial
Langkah 1: Buka projek Manajer
Sekolah Karate.
Langkah 2: Tambahkan sebuah form baru dengan nama FormSemuaAnggota.vb pada projek.
Tetapkan properti MinimizeBox dan MaximizeBox menjadi False. Tetapkan properti Text menjadi Semua Anggota.
Langkah 3: Pada FormUtama,
ciptakan sebuah handler Click untuk
item menu Keanggotaan | Tampilkan Semua
dan sisipkan kode berikut:
Langkah 4: Pada jendela Data
Sources, pilih Add New Data Sources.
Ciptakan sebuah koneksi ke database Karate.
Pada jendela Choose Your Database
Objects, pilih tabel Anggota dan
namai DataSet sebagai KarateDataSet. Klik tombol Finish untuk menyimpan DataSet.
Langkah 5: Tempatkan sebuah kontrol DataGridView pada form FormSemuaAnggota
dan namai dengan dgvAnggota. Tetapkan
properti Anchor ke semua sisi form.
Tetapkan properti-properti berikut: BackGroundColor
= Control; BorderStyle = None; RowHeadersVisible = False.
Langkah 6: Pada form yang sama, buka jendela DataGridView Tasks. Pada
Choose Data Source, pilih tabel
Anggota dari KarateDataSet. Centang kotak periksa Enable Editing dan Enable Deleting. Jika kepala-kepala kolom tidak terlihat seperti pada
Gambar 4.50, edit properti Columns
dan gunakan tombol anak-panah di samping daftar nama kolom untuk
memperbaikinya.
Langkah 7: Ketika masih mengedit properti Columns, pilih kolom Tanggal_Bergabung,
dan pilih properti DefaultCellStyle.
Masukkan d ke dalam properti Format. (Format ini akan menetapkan
format tanggal pendek, dengan format m/d/yyyy. Klik tombol OK dua kali untuk
menutup editor Columns.
Langkah 8: Tambahkan sebuah kontrol MenuStrip pada form. Tambahkan sebuah item menu File, dengan satu subitem: Tutup. Pada handler Click dari item Tutup, sisipkan statemen Me.Close().
Langkah 9: Simpan projek dan jalankan aplikasi. Dari menu form
startup, pilih Keanggotaan | Tampilkan
Semua. Anda akan melihat seperti ditunjukkan pada Gambar 4.51.
Langkah 10: Akhiri aplikasi.
Tutorial 4.8: Manajer Sekolah Karate: Menambahkan Anggota
Baru
Pada tutorial
ini, Anda akan menambahkan sebuah form baru pada program Manajer Sekolah Karate yang membiarkan user menambahkan
baris-baris baru pada tabel Anggota.
Form akan menggunakan pengikatan data dan menuliskan perubahan secara langsung
pada database.
Langkah-Langkah Tutorial
Langkah 1: Buka projek Manajer
Sekolah Karate.
Langkah 2: Tambahkan sebuah form baru pada projek dengan nama FormTambahAnggota.vb. Tetapkan properti
Text-nya menjadi Menambah Anggota Baru. Tetapkan
nilai-nilai properti berikut: Maximize =
False; Minimize = False; FormBorderStyle = FixedDialog.
Langkah 3: Pada FormUtama,
lihat pada item menu Keanggotaan |
Tambahkan Anggota Baru; klik ganda pada item itu dan sisipkan statemen
berikut di dalam event handler Click-nya:
FormTambahAnggota.ShowDialog()
Langkah 4: Pada jendela Data
Sources, cari tabel Anggota di bawah entri KarateDataSet. Dengan mengklik anak-panah
yang ada di kanannya, pilih Details.
Langkah 5: Geret tabel Anggota
ke form. Visual Studio akan secara otomatis menciptakan bidang-bidang
data-bound dan sebuah ToolStrip
dengan nama AnggotaBindingNavigator.
Tetapkan properti Format dari
kontrol DateTimePicker menjadi Short. Gunakan Gambar 4.52a sebagai
panduan.
Langkah 6: Hapus komponen AnggotaBindingNavigator
dari component tray di bawah form.
Buka jendela Code dari form dan
hapus metode AnggotaBindingNavigatorSaveItem_Click.
Langkah 7: Ganti kode di dalam event handler Load dari form dengan sebuah statemen yang memanggil metode AddNew.
AnggotaBindingSource.AddNew()
Statemen ini
membersihkan bidang-bidang masukan form dan menunggu user memasukkan data untuk
anggota baru.
Langkah 8: Tambahkan sebuah kontrol MenuStrip pada form. Tambahkan item menu File denga satu sub item: Tutup.
Di dalam event handler Click untuk
item pertama, sisipkan statemen Me.Close().
Langkah 9: Ciptakan sebuah event handler FormClosing untuk form dan sisipkan statemen berikut:
AnggotaBindingSource.CancelEdit()
Statemen ini
membatalkan semua operasi edit yang sedang terjadi. User bisa saja membuka
form, mulai mengisi bidang-bidang, tetapi mengubah pikirannya, dan memutuskan
menutup form.
Langkah 10: Ganti nama kontrol DateTimePicker
menjadi dtpTanggal. Selain itu,
tambahkan baris berikut pada event handler Load
dari form:
dtpTanggal.Value = Today
Ini
diperlukan untuk memastikan bahwa nilai tanggal akan disimpan dalam database
meskipun user secara eksplisit tidak memilih tanggal.
Langkah 11: Tambahkan sebuah tombol pada form dengan nama tombolSimpan. Ubah properti Text-nya menjadi Simpan dan Tutup. Ciptakan sebuah handler untuk tombol itu. Ia
memanggil EndEdit untuk
menyempurnakan operasi penambahan baris baru. Kemudian ia memanggil Update untuk menyimpan modifikasi DataSet ke dalam database aktual.
Terakhir, ia menutu form, sebagai berikut:
Private Sub tombolSimpan_Click(…) Handles
tombolSimpan.Click
Try
AnggotaBindingSource.EndEdit()
AnggotaTableAdapter.Update(KarateDataSet.Anggota)
Me.Close()
Catch
ex As Exception
MessageBox.Show(ex.Message, "Error")
End
Try
End Sub
Baris 12: Simpan projek dan jalankan aplikasi. Klik item menu Keanggotaan | Tambahkan Anggota Baru dan tambahkan anggota
baru. Pilih nomor ID yang tidak ada di dalam daftar anggota. Jika Anda tidak
yakin, tampilkan lebih dahulu semua daftar anggota. Perhatikan gambar di bawah
ini.
Menggunakan Parameter Query
Dalam mencari query terhadap rekaman-rekaman
terseleksi di dalam tabel-tabel database, Anda tidak mengetahui nilai-nilai apa
yang ingin dicari oleh user. Meskipun dimungkinkan untuk membangun sebuah query
dari suatu statemen SELECT yang
telah ada, tetapi hasilnya tidak baik. Dimisalkan bahwa user telah memasukkan
sebuah nama di dalam kontrol teksNamaBelakang,
dan Anda ingin menuliskan sebuah query yang mencari semua baris pada tabel
Anggota yang memiliki nama belakang yang sama. Anda dapat membangun query
berikut:
Dim
query As String
query
= “SELECT ID, Nama_Belakang, Nama_Depan, Telepon, Tanggal_Bergabung” & “FROM
Anggota WHERE Nama_Belakang = ‘” & teksNamaBelakang.Text & “’”
Ketika menuliskan kode semacam ini, Anda
dapat dengan mudah melakukan kesalahan. Pendekatan yang lebih baik adalah
dengan menyisipkan sebuah nama parameter secara langsung ke dalam query SQL.
Pada contoh berikut, sebuah parameter dengan nama @Nama_Belakang akan ditugasi suatu nilai spesifik pada saat
aplikasi dijalankan:
SELECT ID, Nama_Belakang,
Nama_Depan, Telepon, Tanggal_Bergabung
FROM Anggota
WHERE
Nama_Belakang = @Nama_Belakang
Ketika metode Fill dari TableAdapter
dipanggil, Anda melewatkannya argumen kedua. Nilai argumen itu secara otomatis
ditugaskan kepada parameter query:
AnggotaTableAdapter.Fill(Me.CariAnggotaDataSet.Anggota,
teksNamaBelakang.Text)
Jika sebuah query memuat lebih dari satu
parameter, nilai-nilai parameter menjadi argumen-argumen tambahan bagi metode Fill. Query berikut memuat dua
parameter, @Nama_Belakang dan @Tanggal_Bergabung:
SELECT ID, Nama_Belakang,
Nama_Depan, Telepon, Tanggal_Bergabung
FROM Anggota
WHERE
Nama_Belakang = @Nama_Belakang AND Tanggal_Bergabung <= @Tanggal_Bergabung
Perhatikan bagaimana memanggil metode Fill:
AnggotaTableAdapter.Fill(Me.CariAnggotaDataSet.Anggota,
teksNamaBelakang.Text,
teksTanggalBergabung.Text)
Kecocokan Wildcard pada Query SQL
Ketika melakukan pencarian pada baris-baris
yang cocok di dalam suatu tabel database, Anda tidak selalu mengetahui nilai
persis dari apa yang ingin Anda cari. SQL memberikan katakunci spesial dengan
nama LIKE yang menggunakan karakter
wildcard untuk melakukan pencocokan. SQL Server menggunakan tanda persen (%)
untuk mencocokkan sembarang string karakter. Sebagai contoh, klausa WHERE
berikut menghasilkan semua baris yang memuat sebuah nama yang diawali dengan
huruf G:
WHERE
Nama_BElakang LIKE 'G%'
Database akan menghasilkan baris-baris yang
memuat nama-nama belakang seperti Gono, Gini, Gina, dan lainnya.
Pada Tutorial 4.9, Anda akan menciptakan
sebuah form yang membiarkan user untuk melakukan pencarian terhadap
karakter-karakter wildcard.
Tutorial 4.9: Manajer Sekolah Karate: Mencari Anggota
Berdasarkan Nama
Pada tutorial
ini, Anda akan menciptakan sebuah form untuk aplikasi Manajer Sekolah Karater yang membiarkan user untuk melakukan
pencarian anggota menggunakan nama belakangnya. Query yang melakukan pencarian
akan menerima string parsial, jadi jika user tidak mengetahui ejaan eksak untuk
nama anggota, ia dapat melihat sejumlah nama anggota dengan nama-nama yang
hampir sama.
Langkah-Langkah Tutorial
Langkah 1: Buka projek Manajer Sekolah Karate.
Langkah 2: Tambahkan sebuah form baru pada projek dengan nama FormCariAnggota.vb. Tetapkan
properti-propertinya sebagai berikut: Text
= Cari Anggota Dengan Nama Belakang; MaximizeBox = False; MinimizeBox = False;
StartPosition = CenterScreen; FormBorderStyle = FixedDialog.
Langkah 3: Pada FormUtama.vb,
klik ganda pada item menu Keanggotaan |
Cari Anggota dan sisipkan kode berikut di dalam event handlernya:
FormCariAnggota.ShowDialog()
Langkah 4: Buka FormCariAnggota
pada mode Design, tambahkan sebuah
kontrol MenuStrip pada form dan
ciptakan sebuah submenu File dengan
satu seleksi: Tutup. Di dalam event
handler Click-nya, sisipkan statemen
Me.Close().
Langkah 5: Tambahkan sebuah kontrol Label, sebuah TextBox
dengan nama teksNamaBelakang, dan
sebuah Button dengan nama tombolGo pada form. Gunakan Gambar 4.53
sebagai panduan. (Kontrol DataGridView
akan ditambahkan pada langkah nanti).
Langkah 6: Buka file KarateDataSet.xsd,
klik kanan pada AnggotaTabelAdapter,
pilih Add, dan kemudian pilih Query. Sisipkan query SQL berikut:
SELECT ID, Nama_Belakang, Nama_Depan,
Telepon, Tanggal_Bergabung
From Anggota
WHERE (Nama_Belakang LIKE @nama + ‘%’)
Setelah
menciptakan query SQL, klik tombol Next.
Pada langkah Choose Methods to Generate
yang ditunjukkan pada Gambar 4.54, pilih hanya opsi Fill a DataTable dan beri nama metode dengan CariAnggota. Setelah Anda selesai menambahkan query, AnggotaTabelAdapter akan ditampilkan
seperti pada Gambar 4.55.
Langkah 7: Tempatkan sebuah kontrol DataGridView pada form dan namai dengan dgvAnggota. Tetapkan properti-propertinya sebagai berikut: BackGroundColor = Control; BorderStyle =
None; Anchor = Bottom, Left, Right; RowHeadersVisible = False.
Langkah 8: Dengan menggunakan smart tag di pojok kanan-atas,
tetapkan sumber data menjadi tabel Anggota
dari KarateDataSet. Nonaktifkan
penambahan, pengeditan, dan penghapusan baris.
Langkah 9: Selanjutnya, Anda menambahkan pemanggilan terhadap
metode Fill di dalam event handler
untuk tombol yang mengaktifkan pencarian. Klik ganda pada tombol Go! dan sisipkan kode ini di dalam
event handlernya:
'melakukan pencarian wildcard untuk nama
belakang
Me.AnggotaTableAdapter.CariAnggota(KarateDataSet.Anggota,
teksNamaBelakang.Text)
Normalnya,
metode Fill hanya memiliki satu
parameter, yaitu tabel dari DataSet.
Tetapi di sini Anda melewatkan dua parameter, yang merupakan nilai yang akan
ditugaskan kepada parameter query.
Langkah 10: Pilih form dengan mouse dan tetapkan properti AcceptButton dari form menjadi tombolGo. Ini akan memampukan user
untuk menekan kunci Enter ketika mengaktivasi pencarian.
Langkah 11: Hapus semua statemen yang ada di dalam event handler Load dari form (Anda tentu tidak ingin
mengisi data sebelum nama anggota dimasukkan untuk dicari).
Langkah 12: Simpan projek dan jalankan aplikasi. Dari form startup,
klik Keanggotaan | Cari Anggota dari
menu. Ketika form Cari Anggota
ditampilkan, masukkan nama parsial dari menu, seperti si, dan klik tombol Go!. Keluaran akan tampak seperti
ditunjukkan pada Gambar 4.56.
Pada Tutorial 4.10, Anda akan mampu menjejak
pembayaran-pembayaran untuk sekolah Karate.
Tutorial 4.10: Manajer Sekolah Karate: Menampilkan Semua
Pembayaran
Pada tutorial
ini, Anda akan menggunakan tabel Pembayaran,
yang memuat tanggal, ID anggota, dan jumlah pembayaran. Ia tidak memuat nama
anggota. Anda akan menggabungkan tabel Pembayaran
dan tabel Anggota sehinga Anda dapat
menampilkan nama anggota berikut dengan pembayaran yang telah dilakukan. Anda
akan menciptakan sebuah DataSet yang
memuat tabel-tabel tergabung. Aplikasi ini akan menampilkan DataSet pada sebuah kontrol DataGridView.
Langkah-Langkah Tutorial
Langkah 1: Buka program Manajer
Sekolah Karate.
Langkah 2: Tambahkan sebuah form baru pada projek dengan nama FormSemuaPembayaran.vb. Tetapkan
properti-propertinya sebagai berikut: Text
= Semua Pembayaran; MaximizeBox = False; MinimizeBox = False; StartPosition =
CenterScreen.
Langkah 3: Tambahkan sebuah kontrol MenuStrip pada form, dan ciptakan submenu File dengan satu item: Tutup.
Pada handler Click dari item Tutup, sisipkan statemen Me.Close().
Langkah 4: Pada FormUtama,
klik ganda pada item menu Pembayaran |
Semua dan sisipkan kode di dalam event handlernya:
FormSemuaPembayaran.ShowDialog()
Langkah 5: Selanjutnya, Anda akan menciptakan sebuah TableAdapter yang menggabungkan tabel Anggota dan tabel Pembayaran. TableAdapter
ini akan diasosiasikan dengan sebuah DataTable
dengan nama Pembayaran. Buka file KarateDataSet.xsd dari jendela Solution Explorer. Klik kanan pada area terbuka dari jendela designer, pilih
Add, dan kemudian pilih TableAdapter. Ketika TableAdapter Configuration Wizard
ditampilkan, pertahankan koneksi yang sama, dan klik tombol Next dua kali. Ketika Anda melihat
langkah dengan judul Specify a SQL
Select Statemen, sisipkan query SQL berikut:
SELECT Pembayaran.ID,
Anggota.Nama_Belakang + ', ' + Anggota.Nama_Depan AS NamaLengkap,
Pembayaran.Tanggal_Pembayaran, Pembayaran.Jumlah
FROM Anggota INNER JOIN Pembayaran
ON
Anggota.ID = Pembayaran.Id_Anggota
ORDER BY Nama_Belakang
Query ini
menggabungkan tabel Anggota dan tabel Pembayaran, menggunakan nilai ID bersama
yang ditemukan pada Anggota.ID dan Pembayaran.Id_Anggota. Selain itu,
query ini juga menggabungkan nama depan dan nama belakang, menggunakan ekspresi
berikut:
Anggota.Nama_Belakang + ', ' + Anggota.Nama_Depan
AS NamaLengkap
Anda bisa
menggunakan dialog Query Builder, seperti ditunjukkan berikut:
Langkah 6: Klik pada tombol Query
Builder ,dan pada jendela yang
ditampilkan, klik pada tombol Execute
Query. Jika ada error, periksa
pengejaan dan sintaksis query. Klik tombol OK
untuk menutup jendela Query Builder.
Langkah 7: Klik pada tombol Advanced
Options. Pada jendela dialog, yang
ditunjukkan pada Gambar 4.57b, dan batalkan centang pada opsi Generate Insert, Update, and Delete
statements. Anda melakukan ini karena umumnya Anda tidak melakukan pembaruan
tabel ketika Anda menggabungkan dua tabel. Klik tombol OK.
Langkah 8: Klik tombol Next.
Pada langkah Choose Methods to Generate,
pilih hanya opsi Fill a DataTable
dan namai metode dengan SemuaPembayaran.
Selain itu, batalkan centang kotak periksa ketiga karena Anda tidak ingin
menciptakan metode-metode yang mengirim pembaruan ke database secara langsung.
Klik tombol Finish untuk menutup
wizard. Setelah Anda selesai menambahkan query, PembayaranTableAdapter akan ditampilkan seperti ditunjukkan pada
Gambar 4.58.
Langkah 9: Tempatkan sebuah kontrol DataGridView pada form dan namai dengan dgvPembayaran. Tetapkan properti-properitnya sebagai berikut: BackGroundColor = Control; BorderStyle =
None; Dock = Fill, RowHeadersVisible = False.
Langkah 10: Klik pada smart tag dari dgvPembayaran untuk membuka jendela DataGridView. Untuk sumber data, pilih tabel Pembayaran pada KarateDataSet.
Batalkan centang pada kotak periksa untuk penambahan, pengeditan, dan
penghapusan.
Langkah 11: Simpan projek dan jalankan aplikasi. Tampilkan jendela Semua Pembayaran. Contoh keluaran ditampilkan pada Gambar 4.59.
Langkah 12: Tutup aplikasi.
Tutorial 4.11: Manajer Sekolah Karate: Menampilkan
Pembayaran Per Anggota
Dalam
tutorial ini, Anda akan menciptakan sebuah form yang menampilkan sejarah
pembayaran per anggota. Sebuah kontrol ComboBox
akan merepresentasikan suatu list yang memuat nama-nama depan dan nama-nama
belakang. Ketika user menyeleksi sebuah nama, kontrol DataGridView akan mengisi pembayaran oleh anggota.
Langkah-Langkah Tutorial
Langkah 1: Buka program Manajer Sekolah Karate.
Langkah 2: Tambahkan sebuah form baru pada projek dengan nama FormPembayaranAnggota.vb. Tetapkan
properti-propertinya sebagai berikut: Text
= Pembayaran Oleh Satu Anggota. MaximizeBox = False; MinimizeBox = False;
StartPosition = CenterScreen.
Langkah 3: Tambahkan sebuah kontrol MenuStrip pada form, dan ciptakan sebuah submenu File dengan satu seleksi: Tutup. Pada handler Click dari Tutup, sisipkan statemen Me.Close().
Langkah 4: Pada form FormUtama,
klik ganda pada item menu Pembayaran |
Satu Anggota dan sisipkan kode berikut pada event handlernya:
FormPembayaranAnggota.ShowDialog()
Langkah 5: Selanjutnya, Anda akan menciptakan sebuah TableAdapter yang menampilkan nama-nama
anggota. Buka file KarateDataSet.xsd
dari jendela Solution Explorer. Klik kanan pada area terbuka
pada jendela designer, pilih Add,
kemudian pilih TableAdapter. Ketika TableAdapter Configuration Wizard
ditampilkan, pertahankan koneksi yang sama, dan klik tombol Next dua kali. Ketika Anda melihat
langkah dengan judul Specify an SQL
Select Statemen, sisipkan query SQL berikut:
Langkah 6: Klik tombol Query
Builder, dan pada jendela Query Builder, klik tombol Execute
Query. Jika pesan error ditampilkan,
periksa ejaan dan sintaksisnya. Klik tombol OK untuk menutup jendela Query Builder.
Langkah 7: Buka jendela Advanced
Options dan batalkan centang pada
opsi Generate Insert, Update, and Delete
statements. Klik tombol OK untuk menutup jendela.
Langkah 8: Klik tombol Next.
Pada langkah Choose Methods to Generate,
batalkan centang pada kotak periksa ketiga karena Anda tidak ingin menciptakan
metode-metode untuk mengirim pembaruan secara langsung ke database. Klik tombol
Finish untuk menutup wizard.
Langkah 9: Ganti nama tabel dan TableAdapter seperti ditunjukkan pada Gambar 4.60. Anda
menggantinya dengan mengklik kanan batang abu-abu dan pilih Rename dari menu yang ditampilkan.
Serangkaian
langkah berikutnya adalah mengikat sebuah kontrol ComboBox pada tabel NamaAnggota.
Ketika user menyeleksi sebuah nama anggota, Anda ingin ID anggota tersebut
diberikan pada properti SelectedValue
dari ComboBox.
Langkah 10:
Tambahkan sebuah kontrol ComboBox
pada form dan namai dengan cboNamaAnggota.
Langkah 11: Buka jendela ComboBox
Tasks. Pilih opsi Use data bound items. Tetapkan properti
DataSource menjadi tabel NamaAnggota pada KarakterDataSet. Tetapkan properti DisplayMember menjadi Nama.
Tetapkan properti ValueMember
menjadi ID. Jika Anda menjalankan
program sekarang, Anda hanya akan melihat sebuah list yang memuat nama-nama
depan dan nama-nama belakang pada ComboBox
ini. Anda perlu menambahkan sebuah grid pada form dan menggunakannya untuk
menampilkan pembayaran-pembayaran yang dilakukan oleh anggota terseleksi di
dalam ComboBox.
Langkah 12: Pertama, Anda akan menciptakan sebuah query yang
menyeleksi anggota berdasarkan nomor ID. Buka file KarateDataSet.xsd dari jendela Solution
Explorer. Klik kanan pada PembayaranTableAdapter, pilih Add, dan kemudian pilih Query. Pada langkah Specify a SQL Select Statemen, sisipkan
query SQL berikut:
SELECT Pembayaran.ID,
Anggota.Nama_Depan + ' ' + Anggota.Nama_Belakang AS NamaLengkap,
Pembayaran.Tanggal_Pembayaran, Pembayaran.Jumlah
FROM Anggota INNER JOIN
Pembayaran
ON Anggota.ID = Pembayaran.Id_Anggota
WHERE (Id_Anggota = @IdAnggota)
ORDER BY Tanggal_Pembayaran
Langkah 13: Klik tombol Query
Builder, dan pada jendela Query Builder, klik tombol Execute
Query. Jika pesan error ditampilkan,
periksa ejaan dan sintaksisnya. Klik tombol OK untuk menutup jendela Query Builder.
Langkah 14: Klik tombol Next.
Pada langkah Choose Methods to Generate,
pilih hanya opsi Fill a Data Table
dan namai metode dengan PembayaranAnggota.
Klik tombol Finish, yang akan
menutup wizard. Anda akan melihat sebuah versi baru dari PembayaranTableAdapter di dalam DataSet pada jendela designer, seperti ditunjukkan pada Gambar 4.61.
Langkah 15: Tambahkan sebuah kontrol Label pada FormPembayaranAnggota
tepat di atas kontrol ComboBox dan
tetapkan properti Text-nya menjadi Pilih Satu Anggota:. Tambahkan
kontrol Label kedua di bawah ComboBox dan tetapkan properti Text-nya menjadi Sejarah Pembayaran.
Selanjutnya, Anda akan menambahkan sebuah grid pada form, dan menuliskan kode
event handler SelectedIndexChanged
dari ComboBox yang mengisi grid
dengan pembayaran-pembayaran yang dilakukan oleh anggota terseleksi.
Langkah 16: Tempatkan sebuah kontrol DataGridView pada form dan namai dengan dgvPembayaran. Tetapkan properti-propertinya berikut: BackGroundColor = Control; BorderStyle =
None; Anchor = Top, Bottom, Left, Right; RowHeadersVisible = False.
Langkah 17: Buka jendela DataGridView
Tasks dengan mengklik smart tag. Tetapkan sumber data menjadi
tabel Pembayaran pada KarateDataSet. Batalkan centang pada
kotak perisak penambahan, pengeditan, dan penghapusan.
Langkah 18: Klik ganda pada ComboBox
dan sisipkan kode berikut di dalam event handler SelectedIndexChanged-nya:
Private Sub
cblNamaAnggota_SelectedIndexChanged(…)
Handles
cboNamaAnggota.SelectedIndexChanged
If
cboNamaAnggota.SelectedIndex = -1 Then Exit Sub
'Membaca nilai Id_Anggota yang berkaitan dengan anggota terseleksi
Dim
IDAnggota As Short = CShort(cboNamaAnggota.SelectedValue)
'mengisi grid pembayaran, melewatkan kepadanya ID anggota
PembayaranTableAdapter.PembayaranAnggota(KarateDataSet.Pembayaran,
IDAnggota)
End Sub
Langkah 19: Modifikasi event handler Form_Load sehingga menjadi berikut:
Private Sub
cblNamaAnggota_SelectedIndexChanged(…)
Handles
cboNamaAnggota.SelectedIndexChanged
If cboNamaAnggota.SelectedIndex = -1 Then
Exit Sub
'Membaca nilai Id_Anggota yang berkaitan
dengan anggota terseleksi
Dim
IDAnggota As Short = CShort(cboNamaAnggota.SelectedValue)
'mengisi
grid pembayaran, melewatkan kepadanya ID anggota
PembayaranTableAdapter.PembayaranAnggota(KarateDataSet.Pembayaran,
IDAnggota)
End Sub
Langkah 20: Simpan projek dan jalankan aplikasi. Pilih item menu Pembayaran | Satu Anggota. Keluaran
program ditampilkan seperti pada Gambar 4.61.
No comments:
Post a Comment