Spesifikasi: Ukuran: 14x21 cm Tebal: 264 hlm Harga: Rp 44.800 Terbit pertama: Februari 2005 Sinopsis singkat: Selain membahas topik multiaplikasi, dalam buku ini Anda juga akan menemukan topik disconnected fashion recordset, alasan agar kita meninggalkan kontrol ADO DC, serta F1 – Online Help. Sebagai kelanjutan dari buku Pemrograman Client-Server Menggunakan SQL Server 2000 dan Visual Basic 6, buku ini juga membahas topik pembuatan laporan menggunakan Data Report dan Crystal Reports versi 10. Pada bagian akhir akan dibahas mengenai topik konversi aplikasi ke dalam bentuk multiaplikasi – multiproject, serta contoh Aplikasi Program Penjualan Barang, yang merupakan upgrading dari aplikasi yang sama yang disertakan pada buku sebelumnya. Sebagai pelengkap, disertai pula dengan CD berisi contoh program dan Aplikasi Program Penjualan Barang dari buku sebelumnya baik itu dalam VB6, VB.NET/ASP.NET – aplikasi Web, dan VB.NET,
Daftar Isi Kata Pengantar ............................................................................. v Daftar Isi ..................................................................................... vii Bab 1
Membangun Multiaplikasi ......................................... 1
1.1 1.2 1.3 1.4 1.5
Latar Belakang Penulisan ............................................. 1 Crystal Reports ............................................................. 3 SQL Server ................................................................... 5 VB 6 pada Era Teknologi .NET..................................... 6 CD Pendamping ........................................................... 7
Bab 2
Multiaplikasi – Multiproject ....................................... 9
2.1 2.2 2.3 2.4 2.5
SingleAplikasi – SingleProject..................................... 12 Multiaplikasi – Multiproject.......................................... 16 ActiveX Component ................................................... 20 Membuat Komponen ActiveX - DLL ........................... 22 Multiaplikasi – Multiproject dalam Satu Logika Program ..................................................................... 28
Bab 3
RecordSet Terputus dan Good Bye Control ADO DC......................................................................... 35
3.1 3.2
RecordSet Terputus .................................................... 36 Good Bye Control ADO DC ........................................ 38
Bab 4
F1 – Online Help .................................................... 49
4.1 4.2 4.3 4.4
Membuat File Online Help .......................................... 50 Membuat File Help (.HLP) .......................................... 52 Membuat File Help (.CHM) ......................................... 55 Menyertakan File Online Help..................................... 60
Bab 5
Data Report ........................................................... 61
5.1 5.2 5.3
Data Report – AlbumList............................................. 62 Data Report – Penjualan ............................................. 69 Data Report – via Form dan Print Report..................... 78 vii
Bab 6
Membuat Laporan dengan Crystal Reports .............. 83
6.1 6.2 6.3 6.4 6.5 6.6
Persiapan Sebelum Membuat Laporan........................ 84 Membuat Cetakan Laporan......................................... 89 Menampilkan Laporan ................................................ 94 Menyiapkan Sumber Data Laporan........................... 100 Memformat Laporan ................................................. 105 Meng-update Objek RecordSet ................................. 113
Bab 7
Laporan Bertingkat via Crystal Reports ................. 117
7.1 7.2 7.3
7.4
Membuat Cetakan Laporan Penjualan ...................... 117 Menyiapkan Sumber Data ........................................ 121 Permasalahan pada Penyiapan Sumber Data dan Solusinya.................................................................. 130 7.3.1 Via SubQuery ............................................. 131 7.3.2 Via SubQuery dan Tabel Sementara ........... 132 7.3.3 Via SubQuery dan Tabel Tetap................... 135 7.3.4 Via Join_All dan Tabel Tetap...................... 138 7.3.5 Via Variasi SubQuery dan Tabel Tetap ....... 140 7.3.6 Via Variasi SubQuery dan Tabel Sementara.................................................. 146 7.3.7 Mempercepat Eksekusi Laporan................. 149 Menghitung Nilai Total.............................................. 150
Bab 8
Konversi ke Multiaplikasi – Multiproject ................. 155
8.1 8.2 8.3
Menjadi Multiaplikasi – Multiproject .......................... 155 Merawat Multiaplikasi – Multiproject ......................... 160 Aplikasi Program ...................................................... 165 8.3.1 Accounting dan Payroll Project ................... 165 8.3.2 Project Penjualan ........................................ 168 8.3.3 Project Login (Project Utama)..................... 171
Bab 9
Aplikasi Program Penjualan Barang ...................... 189
9.1 9.2 9.3 9.4 9.5
Tabel_Penjualan ....................................................... 191 Pelanggan (Customer).............................................. 197 Daftar Album (AlbumList) ........................................ 201 Penjualan (Sale) ....................................................... 220 Laporan .................................................................... 242
viii
Lampiran: A
Instalasi CD Program ..................................................243
B
SQL Server 2000 ........................................................249
Daftar Pustaka ..........................................................................253
ix
BAB 5
Data Report
Data Report adalah fasilitas program (module) yang disertakan pada aplikasi Visual Basic (VB6) untuk membuat suatu laporan, di mana sumber datanya berasal dari Data Environment Designer (DED). Sedangkan Data Environment adalah suatu objek yang menspesifikasikan hubungan ke sumber data (database) serta mendekripsikan pernyataan (kriteria) dari data/record yang ingin diperoleh. Pada aplikasi program sesungguhnya, Data Report jarang digunakan, lebih umum digunakan aplikasi program Crystal Reports. Hal ini disebabkan spesifikasi (pernyataan) yang dideklarasikan pada DED tidak dapat dimodifikasi lewat kode program sehingga informasi yang ditampilkan melalui Data Report terkesan kaku (tidak fleksibel), jadi tidak banyak manfaatnya. Walaupun manfaat Data Report sangat minim, tidak ada salahnya untuk mempelajari Data Report sebagai salah satu cara untuk menampilkan data/laporan dalam bentuk yang lebih terformat. Untuk itu penulis akan membimbing Anda melihat bagaimana record dari tabel AlbumList ditampilkan. Dilanjutkan dengan contoh laporan transaksi penjualan sebagai ilustrasi untuk memperlihatkan bagaimana record dari beberapa tabel disatukan dalam suatu laporan. Mari kita mulai!
61
5.1 Data Report - AlbumList Untuk mengetahui bagaimana menampilkan record dari tabel AlbumList, dapat dilakukan dengan membuka project baru, menspesifikasikan hubungan ke database pada objek DED, kemudian mengaitkan kolom yang akan ditampilkan pada Data Report, dan diakhiri dengan menjalankan program. Untuk itu diperlukan langkahlangkah berikut ini: 1. Buka project baru VB. 2. Melalui menu Project, pilih opsi Add Data Environment untuk menambahkan Data Environment ke dalam project. Selanjutnya Anda akan melihat jendela Data Environment. Gantilah nama objek Connection1 menjadi objConnection (Gambar 5.1). Kemudian lanjutkan dengan mengaktifkan shortcut menu dengan cara mengklik tombol kanan mouse dari icon bersangkutan.
Gambar 5.1 Jendela Data Environment1
3. Selanjutnya pilih opsi Properties dari icon objConnection, dan Anda akan melihat jendela Data Link Properties. Isilah sumber data/konfigurasi yang diperlukan, yakni data provider yang akan digunakan yaitu Microsoft OLE DB Provider for SQL Server Dilanjutkan dengan pengisian informasi pada tab Connection 62
yakni nama server, nama user dan password, serta nama database yang akan digunakan. Tentunya jangan lupa untuk memberi tanda cek agar kode password disimpan juga (Gambar 5.2 dan Gambar 5.3).
Gambar 5.2 Jendela Data Link Properties
4. Selanjutnya tambahkan objek Command di bawah icon objConnection melalui pilihan Add Command. Maka Anda akan melihat icon Command1 ditambahkan tepat di bawah icon objConnection. Lanjutkan dengan mengganti nama Command1 menjadi objComm_AlbumList (Gambar 5.4).
63
Gambar 5.3 Jendela Data Link Properties (Connection)
Gambar 5.4 Objek Command pada DataEnvironment1
5. Berikutnya, buka properti objek objComm_AlbumList melalui pilihan pada menu shortcut. Anda akan melihat jendela objComm_AlbumList Properties. Masukkan pernyataan SQL yang akan digunakan sebagai sumber data, yakni Select * from AlbumList (Gambar 5.5). 64
Gambar 5.5 Mengkonfigurasi sumber data objek objComm_AlbumList
6. Pindah ke tab Advanced untuk menset properti recordset, type cursor: static, lokasi cursor: client, dan lock type: read only (lihat Gambar 5.6).
Gambar 5.6 Mengkonfigurasi recordset dari objek objComm_AlbumList
65
7. Tekan tombol OK untuk menyimpan konfigurasi dan Anda telah selesai mengkonfigurasi objek Data Environment. Klik tanda (+) di depan icon objComm_AlbumList dan akan terlihat daftar nama kolom milik tabel AlbumList, seperti tampak pada Gambar 5.7. 8. Langkah selanjutnya yaitu membuka jendela Data Report melalui pilihan Project > Add Data Report. 9. Kemudian tambahkan kolom yang ingin ditampilkan pada layout Data Report dengan cara menyeret (drag) kolom tersebut dari jendela DED dan letakkan pada area/section Detail. Akan ada dua kontrol disertakan lewat proses ini, salah satunya yaitu judul field/kolom. Hapus saja kontrol judul (label) agar hanya nilai kolom saja yang ditampilkan. Anda dapat melihat jenis kontrol/ nama kontrol melalui jendela Property.
Gambar 5.7 Tampilan kolom objComm_AlbumList
10. Lakukan penambahan untuk kolom Album_ID dan Album_Title, lalu perbaiki tata letak dari kontrol tersebut. Anda dapat juga memanfaatkan mouse untuk mengatur (memperbesar/memperkecil) area Detail Section. Lihat Gambar 5.8.
66
Gambar 5.8 Jendela Data Report
11. Spesifikasikan sumber data bagi Data Report yakni DataEnvironment1 dan juga DataMember yang akan digunakan yakni objek objComm_AlbumList, seperti tampak pada Gambar 5.9.
Gambar 5.9 Properties DataReport1
67
12. Terakhir, set Startup Object dari project tersebut melalui jendela Project Properties dengan objek DataReport1 (Gambar 5.10) dan akhiri proses dengan menjalankan program. Maka Anda akan melihat tampilan record (laporan) seperti pada Gambar 5.11.
Gambar 5.10 Menset Startup Object
Gambar 5.11 Tampilan record AlbumList
68
5.2 Data Report - Penjualan Proses penyiapan laporan penjualan tidaklah sulit. Prosesnya hampir sama dengan yang telah dijelaskan sebelumnya, bedanya ada pada proses penambahan objek ‘anak command/sub record.’ Jika pada laporan AlbumList, pernyataan SQL-lah yang menjadi sumber data, maka pada laporan penjualan, sumber data berasal dari pernyataan Shape yang berisi pernyataan SQL dan deskripsi lainnya seperti relationship dan agregasi/agregate. Anda tidak perlu khawatir dalam menyiapkan pernyataan Shape, karena pernyataan Shape dapat dilakukan dengan memanfaatkan menu yang tersedia. Untuk jelasnya mari kita ikuti langkah-langkah berikut ini: 1. Anda dapat memulai proses dengan membuka project VB baru kemudian mendeskripsikan objConnection seperti telah dijelaskan di atas. Cara lain yaitu dengan mengkopikan semua file yang telah dibuat sebelumnya pada folder lain, dilanjutkan dengan membuat objek Command atau langsung membuat objek Command baru pada projek yang telah dibuat sebelumnya. 2. Silakan menambahkan objek Command di bawah icon objConnection melalui pilihan Add Command, maka Anda akan melihat icon Command1 ditambahkan tepat di bawah icon objConnection. Gantilah nama Command1 menjadi objComm_Customer, karena Anda akan mengambil data field dari tabel Customer (Gambar 5.12). 3. Berikutnya, buka properti objek objComm_Customer, dan Anda akan melihat jendela objComm_Customer Properties (Gambar 5.13). Pada tab General, pilih opsi sumber data berasal dari pernyataan SQL, kemudian ketik pernyataan SQL seperti berikut: Select cus_id, cus_name from customer, klik tombol OK untuk menyimpannya (Anda tidak perlu ke tab Advance, gunakan saja setting yang tersedia). 4. Klik icon objComm_Customer, melalui menu shortcut pilih opsi Add Child Command, lalu ganti namanya dari Command1 menjadi objComm_Sale.
69
Gambar 5.12 objComm_Customer
5. Klik icon objComm_Sale, aktifkan objek properti (Gambar 5.14), kemudian ketik pernyataan SQL: select sale_id, sale_date, cus_id, sale_amount from sale sebagai sumber datanya.
Gambar 5.13 Mengkonfigurasi sumber data objComm_Customer
70
Gambar 5.14 Mengkonfigurasi sumber data objek objComm_Sale
6. Pindah ke tab Relation (Gambar 5.15) untuk mengaitkan hubungan objek induk (objComm_Customer) dengan objek anak (objComm_Sale). Pilih field cus_id sebagai penghubung, kemudian tekan tombol Add dan klik OK untuk menyimpannya.
Gambar 5.15 Mengaitkan objComm_Customer dengan objComm_Sale
71
7. Klik icon objComm_Sale, melalui shortcut menu pilih opsi Add Child Command, kemudian ganti nama command1 menjadi objComm_Sale_Detail. 8. Klik icon objComm_Sale_Detail, aktifkan objek properti. Selanjutnya Anda bisa mengetik pernyataan SQL seperti yang dilakukan pada objek objComm_Sale atau membuat pernyataan melalui tombol SQL Builder. Mari kita coba membuatnya melalui SQL Design, tekan tombol SQL Builder, Anda akan melihat jendela SQL Design (Gambar 5.17) dan jendeka DataView ditampilkan (Gambar 5.16). 9. Lakukan proses penambahan tabel ke dalam panel diagram dengan cara menyeret icon tabel (sale_detail dan albumlist) dari folder Tables pada jendela Data View. Kemudian pilih field yang diinginkan (dari tabel sale_detail: sale_id, album_id, sd_quantity, sd_price dan album_title dari tabel albumlist). Jalankan program dan Anda akan mendapatkan pernyatan SQL yang diinginkan. Keluar dari jendela SQL Design dan simpan/kaitkan pernyataan tersebut pada jendela properti objComm_Sale_Detail.
Gambar 5.16 Jendela DataView
72
Gambar 5.17 Membuat perintah SQL
10. Pindah ke tab Relation (Gambar 5.18) untuk mengaitkan hubungan objek induk (objComm_Sale) dengan objek anak (objComm_Sale_Detail). Pilih field Sale_id sebagai pengikat, kemudian tekan tombol Add, dan klik OK untuk menyimpannya.
Gambar 5.18 Mengaitkan objComm_Sale dengan objComm_Sale_Detail
73
11. Langkah selanjutnya adalah menghitung total nilai penjualan untuk setiap pelanggan (mCus_Total_Sale). Untuk itu, klik icon objComm_Customer, kemudian aktifkan jendela properti dan pilih tab Aggregates (Gambar 5.19). Klik tombol Add, masukkan nama variabel (mCus_Total_Sale), pilih fungsi Sum dari opsi yang tersedia, lanjutkan dengan memilih objComm_Sale sebagai sumber field kemudian pilih field yang ingin dijumlahkan (sale_amount). 12. Untuk menghitung jumlah faktur pembelian per pelanggan (mCus_Total_Invoice), lakukan hal yang serupa. Tekan tombol Add, masukkan nama variabel (mCus_Total_Invoice), fungsi yang diinginkan (Count), sumber data (objComm_Sale), dan jumlah faktur yang ingin dihitung (sale_id). Kemudian klik OK untuk menyimpannya (Gambar 5.20).
Gambar 5.19 Mengkonfigurasi variabel mCus_Total_Sale
13. Klik icon objComm_Customer, Anda akan melihat mCus_Total_Sale dan mCus_Total_Invoice disertakan di sana. Aktifkan jendela Hierarchy Information. Anda akan melihat perintah penjumlahan telah disertakan dalam pernyataan Shape (Gambar 5.21).
74
Gambar 5.20 Mengkonfigurasi variabel mCus_Total_Invoice
Gambar 5.21 Jendela Shape Command
14. Langkah selanjutnya adalah membuka jendela Data Report melalui pilihan Project > Add Data Report.
75
15. Spesifikasikan sumber data bagi Data Report yakni DataEnvironment1 dan juga DataMember yang akan digunakan yakni objek objComm_Customer, seperti tampak pada Gambar 5.22.
Gambar 5.22 Mengaitkan objek DED ke dalam form
16. Sisipkan group Header/Footer pada Data Report, kemudian tambahkan kolom yang ingin ditampilkan sesuai dengan area group Header atau Footer bersangkutan (lihat Gambar 5.23). Anda dapat menambahkan label lainya untuk memperjelas informasi yang ditampilkan. 17. Terakhir, set Startup Object dari project tersebut melalui jendela Project Properties dan akhiri proses dengan menjalankan program. Anda akan melihat tampilan record (laporan) seperti pada Gambar 5.24.
76
Gambar 5.23 Mengkonfigurasi field yang akan ditampilkan
Gambar 5.24 Penampilan Laporan Penjualan
77
5.3 Data Report – via Form dan Print Report Pada awal pembahasan, penulis telah mengatakan bahwa informasi yang ditampilkan melalui Data Report bersifat kaku. Hal ini disebabkan karena pernyataan untuk memperoleh data tidak dapat diubah. Untuk lebih jelasnya coba simak penjelasan berikut ini. Coba Anda awali observasi dengan melihat properti dari objek objComm_DataList, maka pada kategori CommandText akan terlihat pernyataan SQL yang dibuat melalui jendala objComm_AlbumList Properties (Gambar 5.25). Selanjutnya Anda dapat melihat sumber pernyataan (Data Member) yang digunakan oleh Data Report pada Gambar 5.26, yakni objComm_AlbumList.
Gambar 5.25 Properties objComm_AlbumList
Gambar 5.26 Sumber Record Data Report
78
Setelah Anda meletakkan kolom yang ingin ditampilkan pada layout Data Report, maka pada properti txtAlbum_ID akan terlihat sumber data berasal dari data member objComm_AlbumList (Gambar 5.27). Silahkan menjalankan program dan Anda akan melihat hasilnya seperti telah dijelaskan di atas.
Gambar 5.27 Properti Kolom Album_ID
Mari kita coba melakukan perubahan dengan dua cara. Cara pertama dengan membuat sebuah objek command baru, namai saja newComm_AlbumList (Gambar 5.28), dan isi pernyataan SQL-nya: Select * from AlbumList where Album_ID = ‘AL0001’. Selanjutnya ganti properti Data Member dari DataReport menjadi newComm_AlbumList (Gambar 5.29). Anda telah meletakkan kolom pada layout Data Report, bukan? Jadi tidak perlu meletakkan kolom lagi. Coba jalankan program maka Anda akan mendapat pesan kesalahan – data tidak ditemukan! Kenapa? Karena jika Anda lihat properti dari kolom yang ditampilkan, maka data member yang digunakan masih berasal dari objComm_AlbumList, bukan berasal dari newComm_AlbumList. Hal ini terjadi karena pada proses peletakan kolom data member berasal dari objComm_AlbumList. Tentunya adalah hal yang aneh jika kita harus mengganti nilai data member dari setiap kolom yang ingin ditampilkan seandainya kita mengganti sumber dari data member (objek Command). Hal itulah yang dimaksud dengan kekakuan dalam menampilkan record via Data Report. 79
Gambar 5.28 Objek newComm_AlbumList
Gambar 5.29 Mengganti Data Member
Cara kedua yaitu dengan membuat form untuk menerima pernyataan SQL yang dimasukkan oleh pengguna, kemudian mencoba menset pernyataaan itu pada objek data environment maupun objek Data Report. Dan hasilnya tetap nihil, baik disebabkan karena perbedaan tipe data maupun objek properti tidak dapat diset. Walaupun kegunaan Data Report agak minim tidak berarti tidak ada gunanya. Karena paling tidak Anda dapat menggunakannya untuk mencetak sesuatu yang bersifat rutin, misalnya struk pembelian yang dicetak setelah proses penjualan dilakukan. Karenanya tidak ada salahnya jika kita meluangkan waktu sedikit untuk melihat proses pencetakan laporan yang dihasilkan dari Data Report. Proses pencetakan laporan yang dihasilkan melalui Data Report, dapat dilakukan melalui fasilitas Print yang ada pada tampilan 80
jendela preview data report. Seandainya Anda ingin langsung mencetaknya maka Anda dapat menambahkan kode program berikut DataReport1.PrintReport False atau memberi batasan halaman yang akan dicetak lewat perintah berikut: DataReport1.PrintReport False, rptRangeFromTo, 1, 2. Berikut adalah tampilan form untuk (mencoba) mengubah perintah objek Command dan listing program yang menyertainya.
Gambar 5.30 Mengganti Perintah Objek Commandr Private Sub Command1_Click() ' coba lakukan perubahan menggunakan nilai dari ' text1.text pada objek ...?? agar hanya satu ' record yang ditampilkan ' test setting berikut gagal: ' DataEnvironment1.objComm_AlbumList = Text1.Text ' DataReport1.DataMember = Text1.Text ' DataReport1.DataMember = DataEnvironment1.newComm_AlbumList ' DataEnvironment1.objComm_AlbumList = DataEnvironment1.newComm_AlbumList DataReport1.Show End Sub Private Sub Command2_Click() ' Langsung cetak DataReport1.PrintReport False ' langsung cetak + batasan halaman yang akan dicetak ' DataReport1.PrintReport False, rptRangeFromTo, 1, 2 End Sub Private Sub Form_Load() Text1.Text = "select * from albumlist where album_id = 'AL0001'" End Sub
81