APLIKASI PENGEMBANGAN INFORMASI KOMPOSISI KIMIA PAKAN HASIL ANALISA PROKSIMAT MENGGUNAKAN BAHASA PEMROGRAMAN VISUAL BASIC 6.0
SKRIPSI JUPRI SUWIGNYO
PROGRAM STUDI ILMU NUTRISI DAN MAKANAN TERNAK FAKULTAS PETERNAKAN INSTITUT PERTANIAN BOGOR 2008
RINGKASAN Jupri Suwignyo. D24103022. 2008. Aplikasi Pengembangan Informasi Komposisi Kimia Pakan Hasil Analisa Proksimat Menggunakan Bahasa Pemrograman Visual Basic 6.0. Skripsi. Program Studi Ilmu Nutrisi dan Makanan Ternak, Fakultas Peternakan, Institut Pertanian Bogor. Pembimbing Utama Pembimbing Angota
: Dr. Ir. Nahrowi, M. Sc. : Sri Suharti, S. Pt, M. Si.
Perkembangan teknologi informasi akan mempermudah masyarakat memperoleh informasi dengan cepat, tepat dan mudah. Teknologi pakan sebagai salah satu cabang ilmu dalam bidang peternakan telah menghasilkan banyak produk, salah satunya adalah informasi komposisi kimia bahan pakan. Informasi tersebut sangat penting dalam pengembangan peternakan sehingga informasi tersebut perlu dikemas ke dalam suatu program komputer agar mudah digunakan dan diperbarui. Penelitian ini bertujuan untuk mengevaluasi dan menganalisa kualitas komposisi kimia bahan pakan dari tahun 1999 sampai 2005 yang dibandingkan dengan standar bahan pakan yaitu NRC dan SNI. Selain itu, penelitian ini juga bertujuan untuk mengembangkan aplikasi informasi bahan pakan dengan menggunakan bahasa pemrograman Visual Basic 6.0 dan ditunjang dengan basis data (database) dari Microsoft Access serta tampilan report data dari Crystal Report 9. Data sekunder yang digunakan adalah dari hasil analisa proksimat bahan pakan Laboratorium Ilmu dan Teknologi Pakan. Penelitian dilakukan di Laboratorium Komputer dan Laboratorium Ilmu dan Teknologi Pakan, Departemen Ilmu Nutrisi dan Teknologi Pakan, Fakultas Peternakan IPB. Metode yang digunakan pada penelitian ini, dimulai dari pengumpulan data dan informasi, pembuatan basis data (database), pembuatan diagram alir (flowchart), dan selanjutnya pembuatan aplikasi. Pembuatan aplikasi dapat dilakukan dengan beberapa tahap diantaranya yaitu desain tampilan (interface) aplikasi, penulisan kode program, debugging dan kompilasi program. Setelah aplikasi terbentuk, program dihubungkan dengan database menggunakan file UDL dan ODBC Driver. Penelitian yang telah dilakukan menghasilkan program aplikasi pengembangan informasi komposisi kimia pakan hasil analisa proksimat. Pada tampilan menu utama program terdiri dari menu settings, menu data, menu analisa dan menu help. Komposisi kimia bahan pakan sangat bervariasi dari tahun ke tahun. Informasi tersebut dapat dengan mudah diakses dan diperbarui setelah dikemas dengan bahasa pemrograman Visual Basic 6.0. Kata-kata kunci : aplikasi, kualitas komposisi kimia, analisa proksimat, Visual Basic 6.0
ABSTRACT Information Development Application of Chemical Composition From Proximate Analysis Using Language Programming Visual Basic 6.0 J. Suwignyo, Nahrowi, and S. Suharti Development of information technology will facilitate society get information quickly, effectively and easily. Feed technology as a branch of animal science was produced many product, such as chemical composition of feed. The information is very important to develop animal business so it is essential to pack the information in a computer program. The research aim was to evaluate and analyze quality of feed chemical composition from the year of 1999 untill 2005 and to compare its with feeding standards produced by NRC and SNI. Besides that, the aim was to develop application of feed information by using Ianguage programming Visual Basic 6.0. Proximate data from Feed Science and Technology laboratory were used. The method used in this research consisted of information and data collecting, design of database, design of flowchart and application development. Development of the application was done with some phase consist of design interface application, writing of program code, debugging and compilation program. After application formed, program was connected with database using file UDL and ODBC Driver. The research produced application program of chemical composition of feed based on proximate analysis. At display program of primary menu consist of menu settings, menu analysis and menu help. Chemical composition of feed varied from year to year. The information of chemical composition can be accessed and updated easily after packed with language programming Visual Basic 6.0. Keywords : Application, Quality of Chemical Composition, Proximate Analysis, Visual Basic 6.0
APLIKASI PENGEMBANGAN INFORMASI KOMPOSISI KIMIA PAKAN HASIL ANALISA PROKSIMAT MENGGUNAKAN BAHASA PEMROGRAMAN VISUAL BASIC 6.0
JUPRI SUWIGNYO D24103022
Skripsi ini merupakan salah satu syarat untuk memperoleh gelar Sarjana Peternakan pada Fakultas Peternakan Institut Pertanian Bogor
PROGRAM STUDI ILMU NUTRISI DAN MAKANAN TERNAK FAKULTAS PETERNAKAN INSTITUT PERTANIAN BOGOR 2008
APLIKASI PENGEMBANGAN INFORMASI KOMPOSISI KIMIA PAKAN HASIL ANALISA PROKSIMAT MENGGUNAKAN BAHASA PEMROGRAMAN VISUAL BASIC 6.0
Oleh : JUPRI SUWIGNYO D24103022
Skripsi ini telah disetujui dan disidangkan dihadapan Komisi Ujian Lisan pada tanggal 25 April 2008
Pembimbing Utama
Pembimbing Anggota
Dr. Ir. Nahrowi, M. Sc NIP. 131 625 429
Sri Suharti, S. Pt, M. Si NIP. 132 311 906
Dekan Fakultas Peternakan Institut Pertanian Bogor
Dr. Ir. Luki Abdullah, M.Sc.Agr NIP. 131 955 531
KATA PENGANTAR Alhamdulillahirabbil’allamiin, segala puji dan syukur Penulis panjatkan kehadirat Allah SWT yang telah memberikan rahmat, hidayah dan lindungan-Nya sehingga Penulis dapat menyelesaikan kuliah dan penelitian serta menyusun tugas akhir dalam bentuk skripsi dengan judul “Aplikasi Pengembangan Informasi Komposisi Kimia Pakan Hasil Analisa Proksimat Menggunakan Bahasa Pemrograman Visual Basic 6.0”. Tujuan dari penelitian ini adalah untuk menghasilkan sebuah program aplikasi yang dapat memudahkan dalam mengakses informasi mengenai komposisi kimia bahan pakan dari hasil analisa proksimat dengan menggunakan bahasa pemrograman Visual Basic 6.0. Penelitian ini dilakukan mulai dari bulan Januari sampai April 2007. Tempat penelitian di Laboratorium Komputer dan Laboratorium Ilmu dan Teknologi Pakan, Departemen Ilmu Nutrisi dan Teknologi Pakan, Fakultas Peternakan, Institut Pertanian Bogor. Skripsi ini, semoga dapat bermanfaat bagi orang-orang yang membutuhkan terutama sebagai acuan dalam informasi pelaksanaan pembangunan di bidang peternakan, khususnya mengenai informasi komposisi kimia bahan pakan dari hasil analisa proksimat.
Bogor, April 2008
Penulis
RIWAYAT HIDUP Penulis dilahirkan pada tanggal 14 September 1984 di Tangerang Banten. Penulis adalah putra ke dua dari tiga bersaudara dari pasangan Bapak Ngadimin dan Ibu Sariyem. Pendidikan taman kanak-kanak diselesaikan pada tahun 1991 di TK. Arya Kamuning, pendidikan dasar diselesaikan pada tahun 1997 di SDN Gembor I Tangerang dan antara pendidikan dasar dan lanjutan menengah pertama, diselesaikan pada tahun 1999 di Madrasah Diniyah Nurul Hidayah, pendidikan lanjutan menengah pertama diselesaikan pada tahun 2000 di SLTPN 8 Tangerang dan pendidikan lanjutan tingkat atas diselesaikan pada tahun 2003 di SMUN 1 Curug Tangerang. Penulis diterima sebagai mahasiswa pada Program Studi Ilmu Nutrisi dan Makanan Ternak, Fakultas Peternakan, Institut Pertanian Bogor melalui jalur USMI pada tahun 2003. Selama mengikuti pendidikan, Penulis aktif di Badan Eksekutif Mahasiswa Keluarga Mahasiswa (BEM-KM), Institut Pertanian Bogor. Selain aktif di organisasi, Penulis juga aktif dalam beberapa kegiatan seperti mengikuti pelatihan, seminar dan PKM (Program Kegiatan Mahasiswa).
DAFTAR ISI Halaman RINGKASAN ………………………………………………………………
ii
ABSTRACT ………………………………………………………………..
iii
RIWAYAT HIDUP ………………………………………………………...
vi
KATA PENGANTAR ……………………………………………………...
vii
DAFTAR ISI ……………………………………………………………….
viii
DAFTAR TABEL ………………………………………………………….
x
DAFTAR GAMBAR ……………………………………………………….
xi
DAFTAR LAMPIRAN …………………………………………………….
xii
PENDAHULUAN …………………………………………………………
1
Latar Belakang …………………………………………………….. Perumusan Masalah ……………………………………………….. Tujuan …………………………………………………...................
1 2 2
TINJAUAN PUSTAKA …………………………………………………...
3
Pakan Ternak .................................................................................... Analisa Proksimat ............................................................................. Standar Bahan Pakan ........................................................................ Database Bahan Pakan ...................................................................... Program Aplikasi .............................................................................. Sistem Basis Data ............................................................................. Bahasa Pemrograman Visual Basic 6.0 ………………..................... Aplikasi Sistem Informasi pada Bidang Peternakan .........................
3 4 5 6 6 6 7 8
METODE …………………………………………………………………..
9
Lokasi dan Waktu …………………………………………………. Materi ……………………………………………………………... Prosedur …………………………………………………………….
9 9 9
HASIL DAN PEMBAHASAN …………………………………………….
13
Aplikasi Pengembangan Informasi Komposisi Kimia Pakan Hasil Analisa Proksimat …………………………………………… Keunggulan dan Kelemahan Aplikasi …………………………….. Manfaat Aplikasi …………………………………………………..
13 28 28
KESIMPULAN DAN SARAN …………………………………………….
30
Kesimpulan ………………………………………………………... Saran ………………………………………………………………..
30 30
UCAPAN TERIMAKASIH ………………………………………………..
31
DAFTAR PUSTAKA ……………………………………………………..
32
LAMPIRAN ………………………………………………………………..
35
DAFTAR TABEL Nomor
Halaman
1. Format Tabel Database Data1999 ……………………………
17
2. Format Tabel Database Jenis_Bahan .......................................
17
3. Format Tabel Database Data2000 ……………………………
18
4. Format Tabel Database Data2001 ……………………………
18
5. Format Tabel Database Bahan_Pakan ……………………….
18
6. Format Tabel Database Data2002 ……………………………
19
7. Format Tabel Database Data2003 ……………………………
19
8. Format Tabel Database tbl_users .............................................
19
9. Format Tabel Database Data2004 ……………………………
20
10. Format Tabel Database Data2005 ……………………………
20
11. Format Tabel Database Komposisi …………………………..
20
12. Format Tabel Database Standar_Deviasi …………………….
21
13. Standar Bahan Pakan Dedak Padi ……………………………
24
DAFTAR GAMBAR Nomor
Halaman
1. Skema Analisa Proksimat Bahan Pakan ...............................
4
2. Diagram Alir (Flowchart) Aplikasi ………………………...
11
3. Skema Pembuatan Kompilasi Aplikasi Program dari Visual Basic 6.0 ……………………………... 4. Tampilan Splash Screen Form Selamat Datang ……………
12 13
5. Tampilan Login Aplikasi …………………………………..
14
6. Tampilan Menu Utama Aplikasi …………………………...
14
7. Tampilan Menu Settings (Users dan Wallpaper) …………...
15
8. Tampilan Sub Menu Bahan Pakan …………………………
16
9. Skema Relasi Antar Tabel…………………………………….
21
10. Tampilan Sub Menu Komposisi …………………………....
22
11. Tampilan Sub Menu Standar Deviasi ……………………....
23
12. Tampilan Sub Menu Grafik Komposisi Aplikasi …………..
25
13. Tampilan Sub Menu Grafik Standar Deviasi Aplikasi ……..
26
14. Tampilan Sub Menu Penelusuran Aplikasi ………………...
26
15. Tampilan Sub Menu Report Aplikasi ……………………....
27
16. Tampilan Sub Menu Petunjuk Aplikasi …….........................
27
17. Tampilan Sub Menu Penutup …………………....................
28
DAFTAR LAMPIRAN Nomor
Halaman
1. List Source Code Aplikasi …………………………................
36
2. Diagram Alir Data…………………………………………….
52
PENDAHULUAN Latar Belakang Perkembangan teknologi informasi yang semakin cepat, akan membantu masyarakat memperoleh akses informasi yang dibutuhkan dengan cepat, tepat dan akurat. Sebagai salah satu cabang ilmu dalam bidang peternakan, ilmu pakan telah menghasilkan banyak pengetahuan penting seperti komposisi kimia bahan pakan. Pengetahuan ini perlu dikemas dalam suatu sistem agar dapat dikembangkan dan mudah diakses. Potensi sumber bahan baku pakan yang dimiliki negara Indonesia sangat besar karena keanekaragaman hayati yang tinggi baik flora maupun fauna. Menurut Bapedalda (2004), di Indonesia terdapat sekitar 27.500 jenis tumbuhan berbunga (10 % dari jenis seluruh jenis tumbuhan berbunga di dunia), 515 jenis satwa mamalia (12 % dari seluruh jenis mamalia di dunia), 511 jenis satwa reptilia dan 270 jenis satwa amfibia (16 % dari seluruh jenis di dunia). Sebagian besar dari flora dan fauna tersebut dapat dijadikan sebagai sumber bahan baku pakan. Sehingga, pengembangan informasi bahan pakan akan sangat membantu dan berguna dalam pengembangan usaha peternakan di Indonesia. Pengembangan informasi mengenai bahan pakan yang telah dihasilkan oleh suatu lembaga di Indonesia masih sangat terbatas dan hanya berfungsi sebagai laporan yang dipakai dalam lingkungan tertentu. Sedangkan di negara maju, data tentang pakan telah dibuat dan dievaluasi secara berkala terhadap perkembangan kebutuhan data bahan pakan. Laboratorium Ilmu dan Teknologi Pakan, Departemen Ilmu Nutrisi dan Teknologi Pakan, Fakultas Peternakan IPB telah lama berdiri dan melayani pengujian mengenai analisa komposisi bahan pakan serta telah banyak menghasilkan laporan dari hasil analisa komposisi bahan pakan yang belum dimanfaatkan secara optimal untuk kepentingan secara luas. Hal ini, terjadi karena data-data yang dihasilkan belum dikemas ke dalam bentuk yang mudah diakses oleh masyarakat. Oleh karena itu, pengembangan sistem informasi khususnya mengenai informasi komposisi kimia bahan pakan sangat diperlukan untuk kepentingan pengembangan peternakan.
1
Perumusan Masalah Aplikasi pengembangan informasi komposisi kimia pakan hasil analisa proksimat memerlukan data dan informasi mengenai komposisi kimia bahan pakan dari hasil analisa proksimat dalam bahan kering yang dikelompokkan berdasarkan jenis bahan pakan dan tahun serta berbagai faktor yang mendukung dalam pengembangan informasi komposisi kimia bahan pakan. Keberadaan aplikasi mengenai informasi bahan pakan dengan menggunakan komputerisasi masih jarang digunakan. Oleh karena itu, dibutuhkan suatu media dalam bentuk program aplikasi yang dapat dikemas untuk membantu dan mempermudah pengguna dalam mengakses serta menelusuri informasi mengenai perkembangan dan kualitas komposisi kimia bahan pakan. Sehubungan dengan hal tersebut maka dilakukan penelitian dengan menggunakan bahasa pemrograman Visual Basic 6.0 untuk merancang, membuat dan mengevaluasi perangkat lunak yang dapat memudahkan dalam mengevaluasi dan menganalisa komposisi kimia bahan pakan tersebut dibandingkan dengan standar bahan pakan yaitu SNI dan NRC. Tujuan Penelitian yang dilakukan bertujuan untuk menghasilkan sebuah program aplikasi yang dapat memudahkan dalam mengakses informasi mengenai komposisi kimia bahan pakan dari hasil analisa proksimat dengan menggunakan bahasa pemrograman Visual Basic 6.0. Selain itu, tujuan lain dari penelitian yang dilakukan adalah untuk dapat mengevaluasi dan menganalisa komposisi kimia bahan pakan hasil analisa proksimat dari tahun 1999-2005 dibandingkan dengan standar bahan pakan yaitu SNI dan NRC.
2
TINJAUAN PUSTAKA Pakan Ternak Makanan adalah bahan yang dapat dimakan, dicerna dan diserap di dalam saluran pencernaan makanan serta digunakan oleh seluruh tubuh (McDonald et al., 2002). Pakan adalah suatu bahan (bahan-bahan yang dimakan oleh hewan, yang mengandung energi dan zat-zat gizi (atau keduanya) didalam makanan tersebut (Hartadi et al., 1997). Nutrien adalah komponen yang ditemukan di dalam makanan serta dapat digunakan untuk kebutuhan hidup pokok, produksi dan kesehatan ternak (Ensminger, 1991). Makanan ternak dapat digolongkan berdasarkan keperluan yang umum. Cheeke (1999) mengklasifikasikan bahan makanan berdasarkan penggunaan di dalam industri makanan ternak yaitu: 1) konsentrat (sumber energi), diantaranya : bijian sereal, hasil ikutan biji-bijian, hasil ikutan industri pengolahan makanan dan hasil ikutan industri manufaktur; 2) konsentrat (sumber protein), diantaranya: protein hewani dan bungkil biji-bijian legume; 3) hijauan (roughages) diantaranya: hijauan pastura, legume, silase dan hay; 4) aditif pakan diantaranya: suplemen mineral, suplemen vitamin, enzim, probiotik, obat-obatan dan aroma. Menurut Williamson dan Payne (1993), kebanyakan makanan ternak dapat dikelompokkan menjadi dua jenis, yaitu hijauan dan konsentrat. Hijauan (roughages) merupakan pakan bulky yang berat per satuan volumenya rendah, mengandung serat kasar lebih dari 18 % dan rendah kandungan energinya meliputi pastura, hijauan kering dan silase. Konsentrat merupakan bahan pakan yang memiliki kandungan energi tinggi dan rendah serat kasar (serat kasar kurang dari 18 %) (Ensminger, 1991). Sedangkan menurut Rasyaf (1994), bahan makanan ternak terbagi atas : 1) sumber protein (protein hewani dan nabati), 2) sumber energi dan 3) sumber vitamin dan mineral. Deskripsi bahan pakan tersebut dalam tabel komposisi bahan pakan secara lengkap terdiri dari 6 aspek secara berurutan dan ditulis dalam bentuk linier. Aspek tersebut terdiri dari 1) nama bahan pakan tersebut terdiri dari nama ilmiah (genus, spesies, varietas) dan nama umum (nama secara umum, rumus kimia, asal); 2) bahan pakan tersebut dipengaruhi oleh ternak; 3) proses dan perlakuan pada bahan pakan tersebut; 4) tahap pengembangan bahan pakan; 5) cutting (berlaku untuk hijauan makanan ternak) dan 6) grade/ standar bahan pakan (Board on Agriculture, 2008). 3
Selain itu, secara internasional bahan pakan diklasifikasikan ke dalam 8 kelompok yang terdiri dari 1) hay dan hijauan makanan ternak; 2) padang rumput atau pastura; 3) silase; 4) energi bahan pakan; 5) suplemen protein; 6) suplemen mineral; 7) suplemen vitamin; 8) aditif (Board on Agriculture, 2008). Sedangkan, bahan pakan yang mengandung lebih dari 18 % serat kasar atau 35 % dinding sel (DM Basis) diklasifikasikan sebagai hijauan makanan ternak, bahan pakan yang mengandung lebih dari 20 % protein diklasifikasikan sebagai suplemen protein dan bahan pakan yang mengandung kurang lebih 20 % protein dan kurang lebih 18 % serat kasar diklasifikasikan sebagai energi bahan pakan (Harris et al., 1968). Analisa Proksimat Informasi umum mengenai kualitas bahan pakan dapat diketahui dari hasil analisa proksimat yang telah digunakan lebih dari 100 tahun yang lalu. Analisa tersebut disebut sebagai analisa Weende atau analisa proksimat yang dikembangkan pada tahun 1860 oleh Henneberg dan Stohmann di Jerman (Aquaculture, 2008). Analisa proksimat merupakan uji analisa suatu bahan pakan yang telah lama ada dan dapat digunakan untuk menduga nilai nutrien dan nilai energi dari bahan atau campuran pakan yang berasal dari bagian komponen bahan pakan tersebut (NRC, 1994). Analisa proksimat dibagi ke dalam enam fraksi zat makanan yaitu kadar air, abu, protein kasar, lemak, serat kasar dan bahan ekstrak tanpa nitrogen (Mc. Donald et al., 2002). Adapun skema analisa proksimat bahan pakan ditampilkan pada Gambar 1.
Gambar 1. Skema Analisa Proksimat Bahan Pakan 4
Pakan yang baik dapat diketahui dari komposisi nutrien yang dikandung, kecernaan nutrien dan kemampuan dalam menyediakan energi serta ada tidaknya penghambat dalam pakan tersebut. Cheeke (1999) menyatakan bahwa terdapat beberapa metode yang biasa digunakan untuk mendapatkan informasi mengenai komposisi nutrien diantaranya adalah analisis pakan. Metode analisis pakan tersebut meliputi penentuan bahan kering, protein kasar, ekstrak eter, abu, serat kasar dan bahan ekstrak tanpa nitrogen. Selanjutnya, menurut Wiseman dan Cole (1990) menyatakan bahwa kebanyakan data kimia bahan pakan merupakan data komposisi kimia bahan pakan berdasarkan hasil analisa proksimat. Ensminger (1991) menyatakan bahwa komposisi hasil analisis kimia pakan merupakan acuan mendasar untuk evaluasi pakan. Selain itu, berdasarkan hasil analisa proksimat suatu bahan pakan yang memiliki nilai komposisi kimia yang bervariasi akan lebih mudah diketahui, jika disusun kedalam sebuah tabel sehingga menjadi sebuah data tabulasi untuk keperluan pembuatan ransum (Parakkasi, 1999). Kebanyakan penetapan hasil analisis tersebut berdasarkan bahan kering (dry matter basic). Hal tersebut dikarenakan secara alamiah kandungan air (moisture) dari bahan pakan, jaringan tubuh hewan dan sampel bahan yang dianalisis beragam (Church dan Pond, 1988). Standar Bahan Pakan Pada tahun 1810 belum mengenal adanya standar bahan pakan untuk hewan domestik. Oleh karena itu, pada tahun itu digunakan hay sebagai standar bahan pakan tetapi hanya setengah abad karena masih sementara. Pada tahun 1859, dasar standar bahan pakan di indikasikan pada kandungan protein, lemak dan karbohidrat yang digunakan untuk analisa. Kandungan bahan pakan yang dapat dicerna, dapat digunakan sebagai pertimbangan nilai kandungan pada protein, lemak dan karbohidrat, sehingga pada tahun 1864 lebih dikenal sebagai standar Wolff. Setelah adanya modifikasi standar tersebut, para ahli pakan menyebutnya sebagai nilai nutrisi ransum atau standar nutrien bahan pakan (Morse, 1915).
5
Database Bahan Pakan Data bahan pakan banyak diperoleh dari hasil analisis laboratorium dan data tersebut akan tidak banyak manfaatnya jika tidak ditangani dengan benar. Oleh karena itu, peran bank data pakan (Feed Data Banks) sangat diperlukan untuk menghasilkan kualitas data yang dapat dipertanggungjawabkan. Selain itu juga menghasilkan data-data pakan yang konstan nilainya untuk dapat memenuhi kebutuhan pengguna (Rechaussat, 1976). Tran dan Lapierre (2001) menyatakan bahwa data komposisi kimia dan nilai nutrisi beberapa bahan mentah yang biasa digunakan sebagai pakan dikoleksi, di simpan dan di sebarkan ke dalam bentuk database. Data tersebut di diseminasikan melalui bantuan komputer dalam bentuk tabel komposisi. Data tersebut dihitung berdasarkan tahun dengan parameter rataan, minimal dan maksimal sebelum dimasukan ke dalam tabel komposisi. Tabel komposisi tersebut meliputi metode analisis, deskripsi sampel yang digunakan, asal bahan pakan (tumbuhan, hewan atau materi dasar lainnya) dan sumber data yang didapat. Program Aplikasi Program adalah sekumpulan instruksi yang memungkinkan perangkat keras untuk dapat memproses data dengan cara menambah data, menghapus data, memperbarui data, menampilkan data dalam bentuk grafik, menampilkan data dalam bentuk tabel atau menampilkan data dalam bentuk report yang terdapat pada program aplikasi. Jadi, pengertian aplikasi atau program aplikasi atau aplikasi program adalah suatu program yang dibuat oleh pemakai yang ditujukan untuk melakukan suatu tugas khusus (Kadir, 2003). Termasuk dalam kategori aplikasi program yaitu sebagai berikut pengolahan kata (word processor), program database, web browser, pengembangan tools, desain grafis dan program komunikasi. Aplikasi program menggunakan pelayanan sistem operasi (operating system) komputer dan program lain yang mendukung aplikasi (Techtarget, 2007). Sistem Basis Data Sistem adalah sebuah tatanan yang terdiri dari komponen-komponen yang saling berhubungan dan secara bersama-sama bertujuan untuk memenuhi suatu 6
proses / perkerjaan tertentu (Fathansyah, 2004). Sedangkan, basis data (database) merupakan sekumpulan data terpadu yang disusun dan disimpan dalam suatu tabel sehingga mudah dipanggil atau diakses. Jadi secara umum, sistem basis data (database) merupakan suatu sistem yang terdiri atas sekumpulan file (tabel) yang saling berhubungan atau sekumpulan program (DBMS) yang memungkinkan pengguna mengakses dan memanipulasi file-file (tabel) tersebut (Fathansyah, 2004). Sedangkan
menurut
McLeod
(1995)
menyatakan
bahwa
Database
Management System (DBMS) adalah perangkat lunak yang memberikan fasilitas untuk melakukan fungsi pengaturan, pengawasan, pengendalian, pengolahan dan koordinasi terhadap semua proses atau operasi manipulasi mengenai data seperti manambah, menghapus dan mengambil data yang dilakukan oleh user yang terjadi pada sistem basis data (database) tersebut. Data terdiri dari fakta-fakta dan angka-angka yang secara relatif tidak berarti bagi pemakai. Artinya fakta-fakta tersebut harus diolah dan diubah. Hasil dari pengolahan data tersebut disebut informasi, maka informasi didefinisikan sebagai data yang telah diproses atau data yang telah memiliki arti. Informasi mengungkap sesuatu yang sebelumnya tidak diketahui, digunakan dalam membuat keputusan dan disajikan dalam bentuk lisan ataupun tertulis (Margianti dan Suryadi, 1994). Bahasa Pemrograman Visual Basic 6.0 Visual Basic merupakan salah satu bahasa pemrograman yang berbasis visual (grafis) dan berorientasi objek atau dikenal dengan istilah OOP-Object Oriented Programming di dalam sistem operasi Windows. Bahasa pemrograman ini, memiliki konsep modular programming, di mana kode-kode program letaknya tersebar di dalam modul-modul (objek-objek) yang terpisah-pisah. Selain itu, Visual Basic merupakan bahasa pemrograman hasil pengembangan dari bahasa BASIC (Beginner’s All-purpose Symbolic Instruction Code) yang dirancang oleh perusahaan Microsoft pada tahun 1950-an (Kurniadi, 2001). Visual Basic kini telah mencapai versi yang ke-6 dengan versi diantaranya Standard Edition, Professional Edition dan Enterprise Edition (Holzner, 2001). Adapun manfaat kelebihan program Visual Basic di antaranya seperti untuk membuat program aplikasi berbasis Windows, untuk membuat objek-objek 7
pembantu program (seperti kontrol ActiveX, file Help, aplikasi Internet dan sebagainya) dan menguji program (debugging) dan menghasilkan program dengan file berektensi .exe yang bersifat executable, atau program dapat berdiri sendiri (Kurniadi, 2001). Aplikasi Sistem Informasi pada Bidang Peternakan Ada beberapa perangkat lunak sistem informasi yang telah diaplikasikan pada bidang peternakan sebagai penelitian, diantaranya adalah SIKAP, EzFeed dan FeedFor. SIKAP (Sistem Informasi Komposisi Kimia Pakan) merupakan perangkat lunak yang menyajikan informasi mengenai komposisi kimia pakan, pendugaan energi TDN dan kecernaan zat makanan berdasarkan dengan kategori ternak. Aplikasi tersebut menyajikan hasil-hasil penelitian yang berhubungan dengan komposisi kimia pakan (Rismawan, 2003). EzFeed merupakan program formulasi ransum ternak unggas yang dibuat dengan menggunakan metode program linier yang bertujuan untuk meminimalkan harga ransum (Kusnandar, 2004). Sedangkan, FeedFor merupakan program formulasi ransum sapi pedaging yang dibuat dengan metode program linier yang bertujuan meminimalkan harga ransum (Andre, 2004). Sedangkan, perangkat lunak sistem informasi yang ada didunia mengenai pakan sebagai sampel diantaranya yaitu Feed Mill Manager, Feed Ration Balancer, Feed Tags dan FeedWatch (Vas dan Engormix, 2008).
8
METODE Lokasi dan Waktu Penelitian telah dilakukan mulai dari bulan Januari sampai April 2007. Tempat penelitian di Laboratorium Komputer dan Laboratorium Ilmu dan Teknologi Pakan, Departemen Ilmu Nutrisi dan Teknologi Pakan, Fakultas Peternakan, Institut Pertanian Bogor. Materi Penelitian ini menggunakan data hasil analisa proksimat Laboratorium Ilmu dan Teknologi Pakan, sistem operasi Microsoft Windows Me®, software Microsoft Visual Basic® 6.0, File UDL (Universal Data Link), ODBC Driver, Microsoft Office Access, Crystal Report 9 dan satu unit komputer dengan spesifikasi: Prosessor Intel Pentium II 350 MHz, memori (RAM) 64 MB dan Harddisk dengan kapasitas 20 Gigabyte. Prosedur Dalam mendesain program Aplikasi Pengembangan Informasi Komposisi Kimia Pakan Hasil Analisa Proksimat diperlukan beberapa prosedur diantaranya terdiri dari pengumpulan data dan informasi, pembuatan basis data (database), pembuatan diagram alir (flowchart) aplikasi dan pembuatan aplikasi. Pengumpulan Data dan Informasi Kegiatan pengumpulan data laboratorium dan informasi yang dibutuhkan dilakukan secara berkala. Pengumpulan data dan informasi tersebut didapatkan dari laboratorium Ilmu dan Teknologi Pakan. Setelah itu, dilakukan penyortiran dan seleksi data sehingga didapatkan data yang mudah diolah dan dihitung. Data dan informasi tersebut terdiri dari data sekunder dan informasi umum yang mendukung penelitian ini. Data sekunder berupa data laboratorium dari tahun 1999-2005 yang dikelompokkan berdasarkan jenis bahan pakan dan tahun dari hasil analisa proksimat yang terdiri dari bahan kering, abu, protein kasar, serat kasar, lemak kasar, BETN, kalsium, NaCl, dan gross energy. Informasi umum tersebut, terdiri dari deskripsi suatu bahan pakan, pengelompokan sumber bahan pakan berdasarkan bahan baku, nama latin bahan pakan berdasarkan sumber bahan baku dan standar bahan pakan yaitu SNI dan NRC. Adapun diagram alir data dapat dilihat pada lampiran 2. 9
Pembuatan Basis Data (Database) Perancangan basis data program aplikasi dilakukan dengan membuat tabel dan relasi antar tabel. Data dan informasi yang di input ke dalam tabel database terdiri dari data laboratorium dan informasi umum yang mendukung penelitian ini. Setelah itu, data dan informasi tersebut di input ke dalam database aplikasi dalam format file berekstensi mdb menggunakan perangkat lunak Microsoft Access dengan nama ”apikkp.mdb”. Sebelum di input dilakukan perhitungan dari data tersebut. Adapun, perhitungan komposisi kimia/ nutrien bahan pakan dalam bahan kering, perhitungan nilai rataan komposisi kimia bahan pakan dan perhitungan standar deviasi komposisi kimia bahan pakan, dapat ditampilkan sebagai berikut : a. Perhitungan Komposisi Nutrien Bahan Pakan dalam Bahan Kering (Equianalytical, 2008) Keterangan : 100 Xi = xP Xi = Kandungan Nutrien dalam Bahan Kering BK BK = Bahan Kering Pakan Hasil Analisa P
= Kandungan Nutrien Hasil Analisa
b. Perhitungan Rataan Komposisi Kimia Bahan Pakan (Ni, 2008)
X =
1 n
n
Σ
Keterangan : Xi
i=n
X
= Rataan Data/ Mean
n
= Banyaknya Data
∑Xi = Jumlah Keseluruhan Data c. Perhitungan Standar Deviasi Komposisi Kimia Bahan Pakan (Pinkney, 2008) Keterangan : δ
Σ (X-X)2 √ = n
δ
= Standar Deviasi
Σ
= Jumlah
X
= Mean
Pembuatan Diagram Alir (flowchart) Aplikasi Pembuatan diagram alir bertujuan untuk menggambarkan urutan logika aplikasi atau kegiatan aplikasi dari prosedur yang telah direncanakan dalam perancangan pembuatan aplikasi dari awal sampai akhir yang dapat mengurangi 10
kemungkinan terjadinya penyimpangan dari tujuan awal dalam penggunaan aplikasi program. Selain itu, diagram alir aplikasi tersebut dapat menggambarkan struktur dan fungsi dari tiap-tiap komponen dalam aplikasi yang saling berkaitan serta membentuk suatu sistem yang saling terintegrasi. Adapun diagram alir aplikasi dapat ditampilkan pada Gambar 2.
Gambar 2. Diagram Alir (Flowchart) Aplikasi Pembuatan Aplikasi Pembuatan aplikasi program dibuat dengan memperhatikan kemudahan dan daya tarik yang sesuai dengan kebutuhan aplikasi. Secara garis besar terdiri dari empat bagian yaitu (1) desain tampilan aplikasi, yaitu pengaturan tampilan form dengan menggunakan objek kontrol yang dibutuhkan dari beberapa komponen program. (2) penulisan kode aplikasi, yaitu tahap pembuatan instruksi coding aplikasi yang memungkinkan komputer mengerjakan instruksi yang sesuai dengan tujuan dalam pembuatan aplikasi. (3) debugging, yaitu proses mencari dan memperbaiki kesalahan instruksi kode aplikasi pada waktu kode aplikasi dieksekusi / running. (4) kompilasi aplikasi program, yaitu tahap penyusunan file project yang terdiri dari file-file form, file-file kontrol, file-file report dan database yang kemudian dikompilasi menjadi suatu file aplikasi (*.exe) dengan nama “apikkp.exe” 11
sehingga aplikasi program tersebut dapat berdiri sendiri dan dapat dijalankan dalam lingkungan Windows tanpa bantuan program Microsoft Visual Basic 6.0. Adapun tampilan skema pembuatan kompilasi aplikasi program dapat ditampilkan pada Gambar 3.
Gambar 3. Skema Pembuatan Kompilasi Aplikasi Program dari Visual Basic 6.0
12
HASIL DAN PEMBAHASAN Aplikasi Pengembangan Informasi Komposisi Kimia Pakan Hasil Analisa Proksimat Aplikasi pengembangan informasi komposisi kimia pakan hasil analisa proksimat (APIKKP) merupakan suatu aplikasi program yang dirancang dan dibuat untuk mempermudah pengguna dalam mengakses serta menelusuri informasi mengenai perkembangan dan kualitas komposisi kimia bahan pakan dari tahun ke tahun yang dibandingkan dengan standar SNI dan NRC bahan baku pakan. Aplikasi ini dibuat dengan menggunakan bahasa pemrograman Visual Basic 6.0, report data dengan menggunakan Crystal Report 9 dan database dengan menggunakan
Microsoft
Access
serta
koneksi
database
aplikasi
dengan
menggunakan ODBC Driver dan file UDL (Universal Data Link). Jika program APIKKP dijalankan maka akan muncul tampilan splash screen. Splash screen program APIKKP menampilkan form selamat datang. Tampilan splash screen dapat dilihat sebelum menampilkan form login aplikasi. Setelah itu, pada form login aplikasi ini, pengguna diharuskan mengisi login aplikasi dengan benar. Hal ini, bertujuan sebagai sistem keamanan aplikasi. Sistem keamanan aplikasi ini, berguna untuk menjamin keamanan data yang ada pada aplikasi tersebut. Selain itu, pengguna akan merasa nyaman menggunakan aplikasi tersebut. Adapun tampilan form Splash Screen dan form login aplikasi dapat ditampilkan pada Gambar 4 dan 5.
Gambar 4. Tampilan Splash Screen Form Selamat Datang
13
Gambar 5. Tampilan Login Aplikasi Pada form login aplikasi tersebut, pengguna diminta memasukkan user name dan password dengan benar. Jika pengguna tidak memasukkan user name dan password pada form login tersebut, maka akan muncul kotak dialog dengan tulisan “Isi User Name dan Password”. Selain itu, jika pengguna salah memasukkan user name dan password pada form login aplikasi tersebut, maka akan muncul kotak dialog dengan tulisan “User Name dan Password salah” serta jika pengguna melakukan secara berulang-ulang maka akan muncul kotak dialog dengan tulisan “Jangan coba-coba menjebol User Name dan Password orang lain”. Bila pengguna memasukkan user name dan password pada login aplikasi tersebut dengan benar misalnya user name dan password adalah “Jupri” maka aplikasi tersebut dapat diakses secara optimal dan pengguna dapat masuk ke bagian menu utama program aplikasi. Menu utama aplikasi ini, terdiri dari Menu Settings, Menu Data, Menu Analisa dan Menu Help. Adapun tampilan menu utama aplikasi dapat dilihat pada Gambar 6.
Gambar 6. Tampilan Menu Utama Aplikasi
14
Menu Settings Menu settings merupakan menu yang terdiri dari sub menu users, sub menu wallpaper, dan sub menu exit. Sub menu users yaitu sub menu yang berfungsi untuk mengatur penggunaan pengguna aplikasi sehingga aplikasi tersebut dapat digunakan secara optimal oleh pengguna yang telah memiliki user name dan password pada aplikasi program tersebut. Sehingga, disarankan sebelum menggunakan aplikasi ini, pengguna diharapkan sudah membuat user name dan password aplikasi ini oleh pengguna aplikasi sebelumnya. Pada sub menu users terdapat fasilitas yang menyajikan informasi daftar pengguna aplikasi yang dapat diperbarui atau update oleh admin. Daftar penggunaan aplikasi dapat diperbarui oleh admin dengan cara mengisi form yang telah tersedia dan menyimpannya ke dalam database program aplikasi. Selain itu, daftar pengguna aplikasi yang sudah tidak digunakan dapat dihapus (delete) atau pengguna program aplikasi yang ingin mengganti user name atau password dapat dilakukan dengan cara diperbarui (edit) pada aplikasi tersebut. Sehingga dengan adanya fasilitas ini, aplikasi akan terlihat interaktif dan dinamis. Sub menu wallpaper yaitu sub menu yang berfungsi untuk mengatur tampilan gambar background aplikasi sehingga aplikasi dapat terlihat dinamis pada tampilan gambar background aplikasi tersebut. Sedangkan sub menu exit yaitu berfungsi untuk keluar dari aplikasi. Adapun tampilan menu settings aplikasi dapat dilihat pada Gambar 7.
Gambar 7. Tampilan Menu Settings (Users dan Wallpaper)
15
Menu Data Menu data yaitu menu yang terdiri dari sub menu bahan pakan, sub menu komposisi dan sub menu standar deviasi. Sub menu bahan pakan merupakan sub menu yang menyajikan informasi mengenai bahan pakan yang terdiri dari nama bahan pakan, nama latin bahan pakan, sumber bahan pakan dan deskripsi mengenai bahan pakan. Pada sub menu bahan pakan terdapat fasilitas aplikasi yang dapat menampilkan informasi mengenai bahan pakan dalam bentuk tabel dan juga menyediakan fasilitas aplikasi yang dapat memperbarui atau update informasi pada program aplikasi tersebut oleh pengguna. Fasilitas untuk memperbarui atau update informasi dapat dilakukan pengguna dengan cara menekan tombol edit sehingga akan muncul tampilan form edit data bahan pakan yang berguna untuk memperbarui informasi yang ada pada aplikasi tersebut. Selain itu, pada fasilitas sub menu bahan pakan terdapat fasilitas aplikasi yang dapat berguna untuk menghapus data atau informasi yang terdapat pada aplikasi tersebut dan juga, terdapat fasilitas yang berguna untuk menambah informasi atau data pada aplikasi tersebut dengan cara menekan tombol add yang dapat dilakukan oleh pengguna aplikasi. Selain itu, pada form add dan edit terdapat tampilan informasi pengguna (Last User) dan waktu (Last Update) pada waktu database diperbarui atau ditambah. Sehingga dengan adanya fasilitas ini, aplikasi akan terlihat interaktif, konsisten dan dinamis. Selain itu, antarmuka (interface) aplikasi yang bersifat user friendly akan lebih mempermudah pengguna menggunakan program tersebut. Adapun tampilan sub menu bahan pakan dapat dilihat pada Gambar 8.
Gambar 8. Tampilan Sub Menu Bahan Pakan 16
Data dan informasi tersebut, diolah dan disimpan ke dalam database aplikasi dengan menggunakan program Microsoft Access. Microsoft Access merupakan suatu program yang berfungsi sebagai pengelola data yang bersifat RDBMS (Relational Database Management System). Pemilihan Microsoft Access sebagai database dikarenakan kemudahan dan kemampuan yang dimiliki oleh program tersebut. Selain itu, waktu yang dibutuhkan dalam membuat database lebih singkat serta proses pencarian, pengurutan dan pengelompokan data lebih mudah. Database tersebut dibuat dan dikelompokan ke dalam dua belas tabel yang berguna sebagai penyimpan data aplikasi dan data report aplikasi. Dua belas tabel database aplikasi tersebut, terdiri dari Bahan_Pakan, Data1999, Data2000, Data2001, Data2002, Data2003, Data2004, Data2005, Jenis_Bahan, Komposisi, Standar_Deviasi dan tbl_users. Setelah itu, tabel tersebut dibuat relasi antar tabel atau disebut juga hubungan antara entitas. Hubungan antara entitas tersebut terdiri dari hubungan satu ke banyak (one to many) dan satu ke satu (one to one). Adapun format tabel database dan skema relasi antar tabel dapat disajikan pada Tabel 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 dan 12 serta Gambar 9. Tabel 1. Format Tabel Database Data1999 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 2. Format Tabel Database Jenis_Bahan Field Name ** ID_Bahan Jenis_Bahan
Data Type
Field Size
AutoNumber Text
Long Integer 50
Keterangan: ** Kunci primer (Primary Key)
17
Tabel 3. Format Tabel Database Data2000 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 4. Format Tabel Database Data2001 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 5. Format Tabel Database Bahan_Pakan **
Field Name ID_Bahan Jenis_Bahan Deskripsi Sumber Nama_Latin LastUser LastUpdate
Data Type Number Text Memo Text Text Text Date / Time
Field Size Integer 50 50 50 50
Keterangan: ** Kunci primer (Primary Key)
18
Tabel 6. Format Tabel Database Data2002 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 7. Format Tabel Database Data2003 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 8. Format Tabel Database tbl_users Field Name
Data Type
Field Size
username password nama usergroup
Text Text Text Text
15 30 50 5
19
Tabel 9. Format Tabel Database Data2004 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 10. Format Tabel Database Data2005 Field Name ** ID Tahun Nama_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
AutoNumber Number Text Number Number Number Number Number Number Number Number Number
Long Integer Double 255 Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key)
Tabel 11. Format Tabel Database Komposisi Field Name * Tahun ** ID_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
Number Number Number Number Number Number Number Number Number Number Number
Double Integer Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key) dan * Kunci tabel lain (Foreign Key)
20
Tabel 12. Format Tabel Database Standar_Deviasi Field Name * Tahun ** ID_Bahan Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Data Type
Field Size
Number Number Number Number Number Number Number Number Number Number Number
Double Long Integer Single Single Single Single Single Single Single Single Single
Keterangan: ** Kunci primer (Primary Key) dan * Kunci tabel lain (Foreign Key) Komposisi
∞ Bahan_Pakan ID_Bahan Jenis_Bahan Deskripsi Sumber Nama_Latin LastUser LastUpdate
Tahun ID_Bahan Bahan_Kering Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
Jenis_Bahan ID_Bahan Jenis_Bahan
Standar_Deviasi Tahun ID_Bahan Bahan_Kering Abu Protein_Kasar Serat_Kasar Lemak_Kasar BETN Kalsium Phosphor Natrium_Chlorida Gross_Energy
∞
Gambar 9. Skema Relasi Antar Tabel Sub menu komposisi merupakan sub menu yang menyajikan informasi mengenai data komposisi bahan pakan dalam bahan kering dari hasil analisa proksimat. Dari sub menu tersebut tidak terdapat fasilitas untuk menambah, menghapus dan memperbarui data tetapi terdapat fasilitas untuk mencari data dengan cara mengetik nama bahan pakan tersebut setelah itu menekan tombol cari maka akan muncul tampilan data dari bahan pakan tersebut. Oleh karena itu, pengguna dapat melakukan updating atau memperbarui data dengan cara diblok pada tabel tersebut untuk menambah, menghapus dan memperbarui data pada aplikasi tersebut.
21
Sub menu standar deviasi merupakan sub menu yang menyajikan informasi mengenai hasil perhitungan data standar deviasi komposisi bahan pakan dari hasil analisa proksimat. Dari sub menu tersebut tidak terdapat fasilitas untuk menambah, menghapus dan memperbarui data tetapi terdapat fasilitas untuk mencari data dengan cara mengetik nama bahan pakan tersebut setelah itu menekan tombol cari maka akan muncul tampilan data dari bahan pakan tersebut. Oleh karena itu, pengguna dapat melakukan updating atau memperbarui data pada aplikasi tersebut, dengan cara diblok pada tabel tersebut untuk menambah, menghapus dan memperbarui data pada aplikasi tersebut. Sehingga pada sub menu komposisi dan sub menu standar deviasi, dengan tidak adanya fasilitas tampilan form untuk menambah, menghapus dan memperbarui data aplikasi maka aplikasi program tersebut terlihat kurang interaktif. Oleh karena itu, dari kelemahan pada program aplikasi ini, dapat dilakukan penelitian lebih lanjut untuk dapat memperbarui data dan antarmuka aplikasi yang bersifat lebih interaktif, konsisten dan dinamis. Adapun tampilan sub menu komposisi dan sub menu standar deviasi dapat ditampilkan pada Gambar 10 dan 11.
Gambar 10. Tampilan Sub Menu Komposisi
22
Gambar 11. Tampilan Sub Menu Standar Deviasi Data yang pada sub menu komposisi dan standar deviasi digunakan sebagai sampel pada aplikasi ini berasal dari data sekunder laboratorium Ilmu dan Teknologi Pakan. Data tersebut merupakan data hasil analisa proksimat bahan pakan dalam bahan kering. Namun, dari data tersebut masih terdapat kekurangan yaitu terdapat data yang hanya diketahui oleh orang tertentu (seperti pemberian kode pada nama bahan pakan tersebut) dan ada beberapa data yang tidak ada. Dari sampel data program aplikasi tersebut, dapat di analisa kualitas komposisi kimia bahan pakan tersebut dengan standar SNI dan NRC bahan pakan maka akan diperoleh hasil analisa sebagai berikut : Jika dilihat pada tabel sub menu komposisi dan sub menu standar deviasi pada komposisi kimia dedak padi pada tahun 1999-2005 maka secara umum terlihat bahwa kualitas dedak padi sangat bervariasi dari tahun ke tahun. Hal ini, dari data tersebut dapat dilihat kisaran pada abu 12,72-15,75 %, protein kasar 11,17-13,94 %, serat kasar 15,07-25,13 %, lemak kasar 2,93-14,57 %, Ca 0,23-1,76 %, P 0,61-2,83 % dan gross energy 4001,18-4644,28 kkal. Jika dibandingkan data tersebut dengan standar SNI dan NRC khususnya pada protein kasar dan serat kasar maka akan terlihat adanya perbedaan nilai komposisi kimia bila dilihat dengan standar NRC dan jika diklasifikasikan ke dalam standar SNI maka bahan pakan dedak padi tersebut dapat digolongkan sebagai standar mutu III. Hal ini, dapat diperkirakan adanya faktor yang mempengaruhi bahan pakan tersebut di antaranya 1) jenis padi, 2) tipe dan jenis mesin giling dan 3) pemalsuan. Dari beberapa faktor tersebut, yang paling 23
berpengaruh yaitu pemalsuan. Pemalsuan
tersebut dapat disebabkan, adanya
kesengajaan pencampuran bahan pakan tersebut dengan sekam. Hal ini, dapat mengakibatkan adanya perbedaan nilai komposisi kimia bahan pakan khususnya protein kasar dan serat kasar yang tidak sesuai dengan standar NRC bahan pakan tersebut. Adapun data standar komposisi kimia bahan pakan dapat ditampilkan pada Tabel 13. Tabel 13. Standar Bahan Pakan Dedak Padi Standar Bahan Pakan Klasifikasi Komposisi a. Abu (%) b. Protein Kasar (%) c. Serat Kasar (%) d. Lemak Kasar (%) e. Ca (%) f. P (%)
NRC 12,8 14,1 12,8 15,1 0,08 1,70
Sumber : NRC (1982) dan SNI (1997).
I 11 12 11 15 0,04-0,3 0,6-1,6
SNI II
III
13 10 14 20 0,04-0,3 0,6-1,6
15 8 16 20 0,04-0,3 0,6-1,6
Jika dilihat pada sub menu standar deviasi dan sub menu grafik standar deviasi bahan pakan tersebut, khususnya serat kasar, maka akan terlihat variasi standar deviasi terbesar pada tahun 1999 dan terendah pada tahun 2000. Hal ini, disebabkan adanya variasi komposisi bahan pakan yang sangat rendah pada tahun 1999 dan variasi komposisi bahan pakan yang tinggi pada tahun 2000. Selain itu, dapat diperkirakan pada tahun 1999 mencerminkan terjadinya banyak kasus pemalsuan pada dedak padi tersebut. Menu Analisa Menu analisa merupakan menu yang terdiri dari sub menu grafik komposisi, sub menu grafik standar deviasi, sub menu penelusuran dan sub menu report. Sub menu grafik komposisi merupakan sub menu yang menyajikan informasi mengenai data komposisi bahan pakan dalam bahan kering yang dikelompokkan berdasarkan tahun dan jenis bahan pakan dalam bentuk grafik. Komposisi nutrien setiap bahan pakan dalam bahan kering dari hasil analisa proksimat pada aplikasi ini, terdiri dari abu, protein kasar, serat kasar, lemak kasar, BETN, kalsium, NaCl dan gross energy. Pada sub menu grafik komposisi terdapat fasilitas untuk menampilkan grafik dengan cara memilih jenis bahan pakan dan komposisi bahan pakan yang akan ditampilkan dalam bentuk grafik. Setelah, memilih jenis bahan pakan dan komposisi yang akan 24
ditampilkan, pengguna dapat menekan tombol view untuk melihat tampilan grafik data dan standar bahan pakan pada aplikasi tersebut. Adapun tampilan sub menu grafik komposisi aplikasi dapat ditampilkan pada Gambar 12.
Gambar 12. Tampilan Sub Menu Grafik Komposisi Aplikasi Sub menu grafik standar deviasi merupakan sub menu yang menyajikan informasi mengenai data standar deviasi bahan pakan dalam bahan kering yang dikelompokkan berdasarkan tahun dan jenis bahan pakan dalam bentuk grafik. Standar deviasi komposisi nutrien setiap bahan pakan dalam bahan kering dari hasil analisa proksimat pada aplikasi ini, terdiri dari abu, protein kasar, serat kasar, lemak kasar, BETN, kalsium, NaCl dan gross energy. Pada sub menu grafik standar deviasi terdapat fasilitas untuk menampilkan grafik dengan cara memilih jenis bahan pakan dan komposisi bahan pakan yang akan ditampilkan dalam bentuk grafik. Setelah, memilih jenis bahan pakan dan komposisi yang akan ditampilkan, pengguna dapat menekan tombol view untuk melihat tampilan grafik pada aplikasi tersebut. Adapun tampilan sub menu grafik standar deviasi aplikasi dapat ditampilkan pada Gambar 13. Sub menu penelusuran aplikasi merupakan sub menu yang menyajikan informasi secara menyeluruh yang terdiri dari nama bahan pakan, sumber nutrien bahan pakan, nama latin bahan pakan berdasarkan bahan baku pakan, deskripsi bahan pakan dan data komposisi kimia bahan pakan dalam bahan kering yang dikelompokkan berdasarkan tahun. Pada sub menu penelusuran terdapat fasilitas untuk menampilkan data dan informasi secara menyeluruh, yang dapat dilakukan pengguna dengan cara mengetikkan nama jenis bahan pakan. Setelah, mengetikkan 25
nama jenis bahan pakan, pengguna dapat menekan tombol cari maka akan muncul tampilan data dan informasi tersebut. Adapun tampilan sub menu penelusuran aplikasi dapat ditampilkan pada Gambar 14.
Gambar 13. Tampilan Sub Menu Grafik Standar Deviasi Aplikasi
Gambar 14. Tampilan Sub Menu Penelusuran Aplikasi Sub menu report yaitu sub menu yang menyajikan informasi mengenai laporan data komposisi nutrien bahan pakan yang dikelompokan berdasarkan tahun dari tahun 1999 sampai tahun 2005. Pada sub menu report, terdapat fasilitas yang menyediakan laporan data bahan pakan yang dikelompokkan berdasarkan tahun. Laporan data komposisi kimia bahan pakan dapat ditampilkan dengan cara memilih data berdasarkan tahun. Setelah itu, pengguna dapat menekan tombol open tersebut maka akan tampil laporan dari data komposisi kimia bahan pakan tersebut. Laporan data komposisi nutrien bahan pakan tersebut, dapat dicetak dan juga dapat di eksport
26
ke dalam bentuk file dengan format pdf, xls, doc, rtf, ttx dan txt. Adapun tampilan sub menu report aplikasi dapat disajikan pada Gambar 15.
Gambar 15. Tampilan Sub Menu Report Aplikasi Menu Help Menu help merupakan menu yang terdiri dari sub menu petunjuk dan sub menu penutup. Sub menu petunjuk yaitu sub menu yang menyajikan informasi mengenai cara penggunaan aplikasi yang terdiri dari tahap awal pembukaan sampai tahap penutupan aplikasi, sehingga pengguna dapat dengan mudah menggunakan aplikasi tersebut. Pada sub menu petunjuk aplikasi ini, pengguna dapat menggunakan sub menu ini dengan cara menekan tombol yang tersedia sehingga dengan cara ini akan muncul tampilan gambar petujuk penggunaan aplikasi tersebut. Adapun tampilan sub menu petunjuk aplikasi dapat ditampilkan pada Gambar 16.
Gambar 16. Tampilan Sub Menu Petunjuk Aplikasi
27
Sub menu penutup yaitu sub menu yang menampilkan form terima kasih. Adapun tampilan sub menu penutup dapat ditampilkan pada Gambar 17.
Gambar 17. Tampilan Sub Menu Penutup Keunggulan dan Kelemahan Aplikasi Keunggulan yang diberikan pada aplikasi pengembangan informasi komposisi kimia pakan hasil analisa proksimat antara lain adalah mampu menampilkan data, grafik, tabel dan teks secara sinkron serta dapat diakses ke dalam jaringan (network) secara server side dan client side. Selain itu, aplikasi dapat dijalankan pada sistem operasi Windows 98/ Me sampai versi Windows XP. Kelemahan aplikasi pengembangan informasi komposisi kimia pakan hasil analisa proksimat ini yaitu pada tampilan sub menu komposisi dan sub menu standar deviasi tidak terdapat fasilitas tampilan form untuk menambah, menghapus dan memperbarui data sehingga dari kelemahan ini pengguna dapat menambah, menghapus dan memperbarui data secara langsung dengan cara diblok pada tampilan tiap tabel pada aplikasi tersebut. Selain itu, tampilan data dalam bentuk grafik belum bisa di cetak. Manfaat Aplikasi Aplikasi pengembangan informasi komposisi kimia pakan hasil analisa proksimat merupakan aplikasi berbasis komputerisasi yang bertujuan untuk memberikan kemudahan dalam mengevaluasi dan menganalisa komposisi kimia bahan pakan dengan standar bahan pakan. Selain itu, aplikasi tersebut memudahkan dalam menelusuri informasi bahan pakan dan sebagai acuan dalam informasi pelaksanaan pembangunan di bidang peternakan, khususnya mengenai informasi komposisi kimia bahan pakan dari hasil analisa proksimat.
28
Aplikasi ini diharapkan dapat bermanfaat bagi mahasiswa sebagai pengetahuan dasar dalam proses belajar khususnya, mengenai informasi bahan pakan. Selain itu, bagi institusi pendidikan sebagai sumber acuan dalam melakukan penelitian dan sarana penyimpanan data laboratorium berbagai bahan pakan dari hasil analisa proksimat.
29
KESIMPULAN DAN SARAN Kesimpulan Data
komposisi kimia bahan pakan dari hasil analisa proksimat sangat
bervariasi dari tahun ke tahun. Informasi tersebut dapat diakses dengan mudah, setelah dikemas ke dalam bentuk program aplikasi menggunakan bahasa pemrograman Visual Basic 6.0. Antarmuka aplikasi yang bersifat interaktif, konsisten dan dinamis akan mempermudah pengguna dalam menggunakan aplikasi serta menganalisa dan mengevaluasi data komposisi kimia bahan pakan tersebut. Saran Data komposisi kimia bahan pakan dari hasil analisa proksimat laboratorium pada database harus terus diperbarui setiap tahunnya.
30
KESIMPULAN DAN SARAN Kesimpulan Data
komposisi kimia bahan pakan dari hasil analisa proksimat sangat
bervariasi dari tahun ke tahun. Informasi tersebut dapat diakses dengan mudah, setelah dikemas ke dalam bentuk program aplikasi menggunakan bahasa pemrograman Visual Basic 6.0. Antarmuka aplikasi yang bersifat interaktif, konsisten dan dinamis akan mempermudah pengguna dalam menggunakan aplikasi serta menganalisa dan mengevaluasi data komposisi kimia bahan pakan tersebut. Saran Data komposisi kimia bahan pakan dari hasil analisa proksimat laboratorium pada database harus terus diperbarui setiap tahunnya.
30
LAMPIRAN
Lampiran 1. List Source Code Aplikasi Source code database (class modules) Option Explicit Private WithEvents cn As ADODB.Connection Private UDLFile As String Private EDLFile As String Private Function Encrypt(ByVal FileName As String, ByVal Source As String) As String Dim Key As String Dim KeyPos As Integer Dim KeyLen As Integer Dim SrcAsc As Integer Dim Result As String Dim Offset As Integer Dim SrcPos As Integer Key = FileName KeyLen = Len(Key) Randomize Timer Offset = (Rnd * 10000 Mod 256) + 1
Private Function Decrypt(ByVal FileName As String, ByVal Source As String) As String Dim Key As String Dim KeyPos As Integer Dim KeyLen As Integer Dim SrcAsc As Integer Dim Result As String Dim Offset As Integer Dim SrcPos As Integer Dim TmpSrcAsc As Integer Key = FileName KeyLen = Len(Key) Offset = Val("&H" & Left(Source, 2)) For SrcPos = 3 To Len(Source) Step 2 SrcAsc = Val("&H" & Trim(Mid(Source, SrcPos, 2))) If KeyPos < KeyLen Then KeyPos = KeyPos + 1 Else KeyPos = 1 End If
Result = Hex(Offset) ' problem with "offset" of single digit hex numbers ' when decodeing, decode procedure is looking for 2 digits, whereis lower number produce single digit hex numbers (ie 1,2,3,12...) If Len(Result) = 1 Then ' adds 0 in front of single digit hex numbers Result = "0" & Result End If
TmpSrcAsc = SrcAsc Xor Asc(Mid(Key, KeyPos, 1)) If TmpSrcAsc <= Offset Then TmpSrcAsc = 256 + TmpSrcAsc - Offset Else TmpSrcAsc = TmpSrcAsc - Offset End If Result = Result & Chr(TmpSrcAsc) Offset = SrcAsc Next
For SrcPos = 1 To Len(Source) SrcAsc = (Asc(Mid(Source, SrcPos, 1)) + Offset) Mod 256 If KeyPos < KeyLen Then KeyPos = KeyPos + 1 Else KeyPos = 1 End If
Decrypt = Result End Function
'Fill Result with HEX representation of Encrypted field 'Hex used to keep nasties such as eof or lf from mangling stream 'Use Format to make Hex return " 0" instead of "0" when the same 'values are Xor'ed together (Null) - keeps placeholder for decrypt SrcAsc = SrcAsc Xor Asc(Mid(Key, KeyPos, 1)) Result = Result & Format(Hex(SrcAsc), "@@") Offset = SrcAsc Next
UDLFile = App.Path & "\" & FileName & ".udl" Open UDLFile For Input As #1 Input #1, Dummy Input #1, Dummy Input #1, GetUDLString Close #1
Encrypt = Result End Function
Private Function GetUDLString(ByVal FileName As String) As String Dim Dummy As String On Error GoTo UDLErr
Exit Function UDLErr: GetUDLString = "" End Function Private Function GetEDLString(ByVal FileName As String) As String Dim Dummy As String
36
On Error GoTo EDLErr EDLFile = App.Path & "\" & FileName & ".edl" Open EDLFile For Input As #1 Input #1, GetEDLString Close #1 Exit Function EDLErr: GetEDLString = "" End Function Private Sub SaveEDLString(ByVal FileName As String, ByVal EDLString As String) On Error GoTo EDLErr EDLFile = App.Path & "\" & FileName & ".edl" Open EDLFile For Output As #1 Print #1, EDLString Close #1 Exit Sub EDLErr: Alert End Sub Private Function ParseSCDS(ByVal SCDSValue As String, ByVal VarName As String) As String 'SCDS = Semi Colon Delimited String, like ConnectionString Dim i As Integer Dim j As Integer Dim k As Integer Dim UValue As String UValue = UCase(SCDSValue) i = InStr(UValue, UCase(VarName)) If i > 0 Then j = InStr(i + 1, UValue, "=") If j > i Then k = InStr(j + 1, UValue, ";") If k > j Then ParseSCDS = Mid(SCDSValue, j + 1, k - j - 1) Else ParseSCDS = Mid(SCDSValue, j + 1) End If End If End If End Function Public Property Get ConnectionString() As String ConnectionString = cn.ConnectionString End Property Public Property Get Server() As String Server = ParseSCDS(ConnectionString, "Data Source") End Property
Public Property Get DBName() As String DBName = ParseSCDS(ConnectionString, "Initial Catalog") End Property Public Property Get UserID() As String UserID = ParseSCDS(ConnectionString, "User ID") End Property Public Property Get Password() As String Password = ParseSCDS(ConnectionString, "Password") End Property Public Sub EditConnection(ByVal FileName As String) Dim dl As New DataLinks Dim cn2 As New ADODB.Connection Dim sConn As String Dim Msg As String EDLFile = App.Path & "\" & FileName & ".edl" If Dir(EDLFile) <> "" Then sConn = Decrypt(FileName, GetEDLString(FileName)) cn2.ConnectionString = sConn If dl.PromptEdit(cn2) Then SaveEDLString FileName, Encrypt(FileName, cn2.ConnectionString) End If Else sConn = dl.PromptNew SaveEDLString FileName, Encrypt(FileName, sConn) End If Set cn2 = Nothing End Sub Public Function Connect(ByVal FileName As String) As Boolean Dim sConn As String Dim Desc As String UDLFile = App.Path & "\" & FileName & ".udl" EDLFile = App.Path & "\" & FileName & ".edl" On Error Resume Next If Dir(UDLFile) <> "" Then sConn = GetUDLString(FileName) If sConn <> "" Then SaveEDLString FileName, Encrypt(FileName, sConn) Kill UDLFile Else Kill UDLFile Exit Function
37
End If Else If Dir(EDLFile) <> "" Then sConn = Decrypt(FileName, GetEDLString(FileName)) Else Desc = "Unable to open '" & UDLFile & "' or '" & EDLFile & "' file." Err.Raise vbObjectError + 1, "Database.Connect", Desc Exit Function End If End If Set cn = New ADODB.Connection cn.Open sConn If Err Then Connect = False ElseIf cn.State = adStateOpen Then Connect = True End If End Function Public Function Execute(ByVal SQL As String) As Long Dim lRec As Long On Error GoTo ErrHandler
Value As String, Optional ByVal Criteria As String) Dim rs As New ADODB.Recordset Dim sSQL As String sSQL = "UPDATE " & Table & " SET " & FieldName & "=" & Value If Not IsMissing(Criteria) And Criteria <> "" Then sSQL = sSQL & " WHERE " & Criteria End If rs.Open sSQL, cn.ConnectionString, adOpenStatic Set rs = Nothing End Sub Public Sub FillCombo(cbo As Object, ByVal Source As String) Dim rs As ADODB.Recordset If TypeOf cbo Is ComboBox Then Set rs = New ADODB.Recordset rs.Open Source, cn.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then cbo.Clear
cn.Execute SQL, lRec Execute = lRec Exit Function ErrHandler: Alert End Function Public Function GetFieldValue(ByVal Table As String, ByVal FieldName As String, Optional ByVal Criteria As String) Dim rs As New ADODB.Recordset Dim sSQL As String sSQL = "SELECT " & FieldName & " FROM " & Table If Not IsMissing(Criteria) And Criteria <> "" Then sSQL = sSQL & " WHERE " & Criteria End If rs.Open sSQL, cn.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then GetFieldValue = rs.Fields(FieldName) End If Set rs = Nothing End Function Public Sub SetFieldValue(ByVal Table As String, ByVal FieldName As String, ByVal
Then
rs.MoveFirst Do If Not IsNull(rs.Fields(0)) Then If Trim(CStr(rs.Fields(0))) <> ""
cbo.AddItem rs.Fields(0) End If End If rs.MoveNext Loop Until rs.EOF End If Set rs = Nothing
End If End Sub Public Sub FillList(lst As Object, ByVal Source As String) Dim rs As ADODB.Recordset If TypeOf lst Is ListBox Then Set rs = New ADODB.Recordset rs.Open Source, cn.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then lst.Clear
38
Then
rs.MoveFirst Do If Not IsNull(rs.Fields(0)) Then If Trim(CStr(rs.Fields(0))) <> ""
lst.AddItem rs.Fields(0) End If End If rs.MoveNext Loop Until rs.EOF End If
Set rs = Nothing End If End Sub Public Sub EmptyTable(ByVal Table As String) Dim rs As New ADODB.Recordset Dim sSQL As String sSQL = "DELETE FROM " & Table rs.Open sSQL, cn.ConnectionString, , adLockOptimistic Set rs = Nothing End Sub Public Function GetStringValue(ByVal Value As Variant) As String If Not IsNull(Value) Then GetStringValue = Value Else GetStringValue = "" End If End Function Public Function GetNumericValue(ByVal Value As Variant) As Double If Not IsNull(Value) Then GetNumericValue = Value Else GetNumericValue = 0 End If End Function Private Sub Alert() Dim Msg As String Msg = "Error " & Err.Number & ": " & vbCrLf & vbCrLf Msg = Msg & Err.Description & vbCrLf & vbCrLf Msg = Msg & "Source: " & Err.Source & "." MsgBox Msg, vbCritical, "apikkp Connection [Error]" Err.Clear End Sub Public Function CheckUser(ByVal sID As String, ByVal sPass As String, sNama As String) As String
Dim rs As New Recordset Dim sSQL As String sSQL = "SELECT Nama, UserGroup FROM tbl_users WHERE UserName='" & sID & "'" sSQL = sSQL & " AND Password='" & sPass & "'" rs.Open sSQL, cn, adOpenStatic If rs.RecordCount > 0 Then sNama = rs!Nama CheckUser = rs!UserGroup End If Set rs = Nothing End Function Public Function GetUserGroup(ByVal UserName As String) As String Dim rs As New ADODB.Recordset Dim SQL As String SQL = "SELECT UserGroup FROM tbl_users WHERE UserName='" & UserName & "'" rs.Open SQL, cn, adOpenStatic If rs.RecordCount > 0 Then GetUserGroup = rs!UserGroup End If Set rs = Nothing End Function Private Sub cn_InfoMessage(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) Dim Msg As String Msg = "Error " & pError.Number & ": " & pError.Description & vbCrLf & vbCrLf Msg = Msg & "Source: " & pError.Source & "." MsgBox Msg, vbCritical End Sub Source code module1 Option Explicit Public Declare Function GetTickCount Lib "kernel32" () As Long Public Function DelayTime(SecToDelay As Single) Dim MarkTime As Single MarkTime = GetTickCount Do While GetTickCount < MarkTime + SecToDelay * 600 'Convert into Seconds DoEvents Loop End Function Source code form splash screen Option Explicit
39
Private Sub Form_Load() frmSplash.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2 'centre the form on the screen Timer1.Interval = 500 frmSplash.Caption = "Selamat Datang" End Sub
End If End If End If End If End If End If End Sub
Private Sub Form_Unload(Cancel As Integer) Set frmSplash = Nothing End Sub
Source code mdl (modules) Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Timer1_Timer() If frmSplash.Caption = "Selamat Datang" Then frmSplash.Caption = "elamat Datang" Else If frmSplash.Caption = "elamat Datang" Then frmSplash.Caption = "lamat Datang" Else If frmSplash.Caption = "lamat Datang" Then frmSplash.Caption = "amat Datang" Else If frmSplash.Caption = "amat Datang" Then frmSplash.Caption = "mat Datang" Else If frmSplash.Caption = "mat Datang" Then frmSplash.Caption = "at Datang" Else If frmSplash.Caption = "at Datang" Then frmSplash.Caption = "t Datang" Else If frmSplash.Caption = "t Datang" Then frmSplash.Caption = " Datang" Else If frmSplash.Caption = " Datang" Then frmSplash.Caption = "Datang" Else If frmSplash.Caption = "Datang" Then frmSplash.Caption = "atang" Else If frmSplash.Caption = "atang" Then frmSplash.Caption = "tang" Else If frmSplash.Caption = "tang" Then frmSplash.Caption = "ang" Else If frmSplash.Caption = "ang" Then frmSplash.Caption = "ng" Else If frmSplash.Caption = "ng" Then frmSplash.Caption = "g" Else If frmSplash.Caption = "g" Then frmSplash.Caption = " " Else frmSplash.Caption = "Selamat Datang" End If End If End If End If End If End If End If End If
Public Const ConnectionFile As String = "apikkp" Public db As New Database Public UserName As String Public UserGroup As String Public Sub Alert() Dim Msg As String Screen.MousePointer = vbDefault Msg = "Lengkapi pengisian data pada form yang ada…!” MsgBox Msg, vbCritical, "APIKKP - [Aplikasi Pengembangan Informasi Kualitas Kimia Pakan Hasil Analisa Proksimat]" Err.Clear End Sub Public Sub WaitForAMoment() 'access needs to wait until data stored completely 'to be synchronized with other readers Screen.MousePointer = vbHourglass Sleep 700 'half a second, change it as necessary Screen.MousePointer = vbDefault End Sub Source code form mdi Private Sub MDIForm_Load() frmWallpaper.Show frmLogin.Show vbModal End Sub Private Sub mnuAbout_Click() frmAbout.Show End Sub Private Sub mnuBahanPakan_Click() frmBahanPakan.Show End Sub Private Sub MDIForm_Resize() If WindowState <> vbMinimized Then With frmWallpaper If Width > .Width Then .Left = (Width - .Width) \ 2 (Screen.Width \ 150)
40
End If If Height > .Height Then .Top = (Height - .Height) \ 2 (Screen.Height \ 20) End If End With End If End Sub Private Sub mnuContents_Click() frmContents.Show End Sub Private Sub mnuExit_Click() Unload Me End Sub Private Sub mnuGrafik_Click() frmGrafik.Show End Sub Private Sub mnuKomposisi_Click() frmKomposisi.Show End Sub Private Sub mnuPenelusuran_Click() frmPenelusuran.Show End Sub Private Sub mnuProfilBhnPkn_Click() frmProfilBhnPkn.Show End Sub Private Sub mnuReport_Click() frmReport.Show End Sub Private Sub mnuStandarDeviasi_Click() frmStandarDeviasi.Show End Sub Private Sub mnuUsers_Click() frmUsers.Show End Sub Private Sub mnuWallpaper_Click() Dim sFilter As String Dim sFile As String sFilter = "All picture files|*.bmp;*.gif;*.jpg;*.png;*.tiff;*.ico" dlg.DialogTitle = "Open image for wallpaper" dlg.Filter = sFilter dlg.ShowOpen If dlg.FileName <> "" Then If dlg.FileName <> App.Path & "\wallpaper.jpg" Then FileCopy dlg.FileName, App.Path & "\wallpaper.jpg" frmWallpaper.RefreshImage MDIForm_Resize End If End If
End Sub Source code form sub menu wallpaper Private Sub Form_Load() img.Left = 0 img.Top = 0 RefreshImage Show End Sub Public Sub RefreshImage() Dim sPicture As String sPicture = App.Path & "\wallpaper.jpg" If Dir(sPicture) <> "" Then Set img.Picture = LoadPicture(sPicture) End If Height = img.Height Width = img.Width End Sub Source code form users edit Option Explicit Public UserName As String Private Sub cmdCancel_Click() Unload Me End Sub Private Sub cmdSave_Click() Dim sUserName As String Dim SQL As String Dim sKey As String If txtPassword.Text <> "" And txtKonfirm.Text <> "" Then 'password dan konfirmasi harus sama.. If txtPassword.Text = txtKonfirm.Text Then If cboGroup.Text = "ADMIN" Then sKey = Trim(InputBox("Masukkan key untuk membuat user dengan group 'ADMIN'")) If sKey <> "jupri" Then MsgBox "Invalid key.", vbExclamation Exit Sub End If End If 'ok SQL = "UPDATE tbl_users SET [Password]='" & txtPassword & "', " SQL = SQL & "Nama='" & txtNama & "', UserGroup='" & cboGroup.Text & "' " SQL = SQL & "WHERE UserName='" & UserName & "'" db.Execute SQL WaitForAMoment Unload Me DoEvents Else MsgBox "Password dan Konfirmasinya harus sama.", vbInformation txtPassword.SetFocus
41
SendKeys "{Home}+{End}" End If Else MsgBox "Password dan Konfirmasinya harus diisi.", vbInformation txtPassword.SetFocus SendKeys "{Home}+{End}" End If End Sub Private Sub Form_Load() Dim rs As New ADODB.Recordset txtUserName.Text = UserName rs.Open "SELECT * FROM tbl_users WHERE UserName='" & UserName & "'", db.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then txtPassword.Text = rs!Password txtKonfirm.Text = rs!Password txtNama.Text = rs!Nama cboGroup.Text = rs!UserGroup End If Set rs = Nothing End Sub Source code form user add Option Explicit Private Sub cmdCancel_Click() Unload Me End Sub Private Sub cmdSave_Click() Dim sUserName As String Dim SQL As String Dim sKey As String If txtUserName.Text <> "" And txtPassword.Text <> "" And txtKonfirm.Text <> "" Then 'user name harus unique... sUserName = db.GetFieldValue("tbl_users", "UserName", "UserName='" & txtUserName.Text & "'") If sUserName = "" Then 'password dan konfirmasi harus sama.. If txtPassword.Text = txtKonfirm.Text Then If cboGroup.Text = "ADMIN" Then sKey = Trim(InputBox("Masukkan key untuk membuat user dengan group 'ADMIN'")) If sKey <> "Jupri" Then MsgBox "Invalid key.", vbExclamation Exit Sub End If End If 'ok SQL = "INSERT INTO tbl_users VALUES('" & txtUserName & "', '"
SQL = SQL & txtPassword & "', '" & txtNama & "', '" & cboGroup.Text & "')" db.Execute SQL WaitForAMoment Unload Me DoEvents frmUsers.PopulateUsers Else MsgBox "Password dan Konfirmasinya harus sama.", vbInformation txtUserName.SetFocus SendKeys "{Home}+{End}" End If Else MsgBox "User Name tersebut sudah terdapat dalam database.", vbInformation txtUserName.SetFocus SendKeys "{Home}+{End}" End If Else MsgBox "Lengkapi pengisian data sebelum menekan tombol Save.", vbInformation txtUserName.SetFocus SendKeys "{Home}+{End}" End If End Sub Private Sub Form_Load() cboGroup.Text = "USER" End Sub Source code form sub menu users Option Explicit Private Sub cmdClose_Click() Unload Me End Sub Private Sub cmdEdit_Click() If lvwUsers.SelectedItem.Text <> "" Then If db.GetUserGroup(lvwUsers.SelectedItem.Text) = "ADMIN" Then If UserGroup <> "ADMIN" Then MsgBox "Hanya ADMIN yang boleh mengubah user '" & lvwUsers.SelectedItem.Text & "'.", vbExclamation Exit Sub End If End If If UserGroup = "USER" And UCase(lvwUsers.SelectedItem.Text) <> UCase(UserName) Then MsgBox "USER hanya boleh mengubah datanya sendiri.", vbExclamation Else frmUsersEdit.UserName = lvwUsers.SelectedItem.Text frmUsersEdit.Show vbModal End If End If End Sub Private Sub cmdHapus_Click()
42
Dim Msg As String If db.GetUserGroup(lvwUsers.SelectedItem.Text) = "ADMIN" Then If UserGroup <> "ADMIN" Then MsgBox "Hanya ADMIN yang boleh menghapus user '" & lvwUsers.SelectedItem.Text & "'.", vbExclamation Exit Sub End If End If Msg = "Anda hendak menghapus user '" & lvwUsers.SelectedItem.Text & "'. Anda yakin?" If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then If lvwUsers.SelectedItem.Index >= 0 Then If lvwUsers.ListItems.Count > 1 Then db.Execute "DELETE FROM tbl_users WHERE UserName='" & lvwUsers.SelectedItem.Text & "'" DoEvents PopulateUsers Else Msg = "Anda tidak dapat menghapus seluruh user. " Msg = Msg & "Paling sedikit harus ada 1 user yang menggunakan program ini." MsgBox Msg, vbInformation End If End If End If End Sub Private Sub cmdTambah_Click() If UserGroup <> "ADMIN" Then MsgBox "Hanya ADMIN yang boleh menambah user.", vbExclamation Else frmUsersAdd.Show vbModal End If End Sub Private Sub Form_Load() PopulateUsers End Sub Public Sub PopulateUsers() Dim rs As New ADODB.Recordset Dim SQL As String Dim li As ListItem lvwUsers.ListItems.Clear SQL = "SELECT UserName, Nama, UserGroup FROM tbl_users" rs.Open SQL, db.ConnectionString, adOpenStatic Do While Not rs.EOF Set li = lvwUsers.ListItems.Add(, rs!UserName, rs!UserName) li.SubItems(1) = rs!Nama li.SubItems(2) = rs!UserGroup rs.MoveNext
Loop Set rs = Nothing End Sub Source code form report view Option Explicit Public ID_Report As Integer Private Sub CmdTutup_Click() Unload Me End Sub Private Sub Form_Load() OpenReport "Screen" End Sub Private Sub Form_Resize() If mdi.WindowState <> 1 Then crv.Width = Me.ScaleWidth crv.Height = Me.ScaleHeight End If End Sub Private Sub OpenReport(ByVal OutputTo As String) Dim CRApp As New CRAXDRT.Application Dim Report As New CRAXDRT.Report Dim Rpt_file As String Dim rs As ADODB.Recordset Dim SqlStatement As String Me.WindowState = 2 Rpt_file = App.Path & "\report\Report" & ID_Report & ".rpt" If Rpt_file <> "" Then Set Report = CRApp.OpenReport(Rpt_file) Report.DiscardSavedData Report.Database.LogOnServer "pdsodbc.dll", "psibp" Report.ReadRecords End If If OutputTo = "Screen" Then crv.ReportSource = Report crv.ViewReport Else Report.Export End If Set Report = Nothing Set CRApp = Nothing End Sub Private Sub mnuExport_Click() OpenReport "File" End Sub Source code form sub menu report Option Explicit
43
Private Sub cmdCancel_Click() Unload Me End Sub Private Sub cmdOpen_Click() frmReportViewer.ID_Report = lstReport.ListIndex + 1 frmReportViewer.Show End Sub Source code form sub menu penelusuran Option Explicit Private Sub cmdCari_Click() Dim rs As New ADODB.Recordset Dim SQL As String Dim i As Integer SQL = "SELECT * FROM Bahan_Pakan WHERE Jenis_Bahan LIKE '" & Text1(0).Text & "%'" rs.Open SQL, db.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then For i = 1 To 7 Text1(i).Text = db.GetStringValue(rs.Fields(i - 1)) Next SQL = "SELECT * FROM Komposisi WHERE ID_Bahan=" & rs!ID_Bahan adc.ConnectionString = db.ConnectionString adc.RecordSource = SQL adc.Refresh Set dtg.DataSource = adc dtg.Columns(1).Width = 0 Else MsgBox "Record tidak ditemukan.", vbInformation End If Set rs = Nothing End Sub Private Sub Form_Resize() If WindowState <> vbMinimized Then Frame1.Width = ScaleWidth - 480 Frame1.Height = ScaleHeight - Frame1.Top - 60 dtg.Width = Frame1.Width - 240 dtg.Height = Frame1.Height - 480 End If End Sub Source code form login Option Explicit Private Msg As String Private Sub cmdCancel_Click() Unload mdi End
End Sub Private Sub cmdOK_Click() If Trim(txtNama.Text) <> "" And _ Trim(txtPassword.Text) <> "" Then tmrLog.Enabled = True Else Msg = "Isi User ID dan Password." MsgBox Msg, vbInformation End If End Sub Private Sub Form_Load() imgLog.Picture = imgLogin(0).Picture Screen.MousePointer = vbDefault mdi.sbr.Panels(1).Text = "Authentication " End Sub Private Sub tmrLog_Timer() Static byCounter As Byte Static by As Byte Dim sNama As String On Error GoTo ErrHandler by = by + 1 If by = 16 Then by = 0 Select Case by Case 1, 10 If by = 1 Then lblLogin.Caption = "Menghubungi server database..." ElseIf by = 10 Then lblLogin.Caption = "Verifikasi User ID dan Password..." End If imgLog.Picture = imgLogin(1).Picture Refresh Case 2, 6, 11 imgLog.Picture = imgLogin(2).Picture Case 3, 7, 12 imgLog.Picture = imgLogin(3).Picture Case 4, 8, 13 imgLog.Picture = imgLogin(4).Picture Case 5 If Dir(App.Path & "\" & ConnectionFile & ".udl") <> "" Then If FileLen(App.Path & "\" & ConnectionFile & ".udl") = 0 Then Kill App.Path & "\" & ConnectionFile & ".udl" End If End If If db.Connect(ConnectionFile) Then mdi.sbr.Panels(2).Text = "Server: " & db.Server & " " Else Screen.MousePointer = vbDefault lblLogin.Caption = "Gagal!"
44
tmrLog.Enabled = False imgLog.Picture = imgLogin(6).Picture by = 0 If Err.Number <> 0 Then Msg = "Error " & Err.Number & ": " & Err.Description Msg = Msg & " In " & Err.Source & "." MsgBox Msg, vbInformation End If Exit Sub End If lblLogin.Caption = "Loading configuration..." Case 14 UserGroup = db.CheckUser(txtNama.Text, txtPassword.Text, sNama) If UserGroup <> "" Then UserName = txtNama.Text mdi.sbr.Panels(3).Text = "User: " & sNama & " (" & UserGroup & ") " Else byCounter = byCounter + 1 Screen.MousePointer = vbDefault lblLogin.Caption = "Gagal!" tmrLog.Enabled = False imgLog.Picture = imgLogin(6).Picture
salah."
If byCounter <= 2 Then Msg = "User ID atau Password
MsgBox Msg, vbInformation txtNama.SetFocus SendKeys "{Home}+{End}" Else Msg = "Jangan coba-coba menjebol password orang lain." MsgBox Msg, vbExclamation byCounter = 0 End End If by = 0 Exit Sub End If Case 15
Exit Sub ErrHandler: Alert End Sub Private Sub txtNama_GotFocus() SendKeys "{Home}+{End}" End Sub Private Sub txtPassword_GotFocus() SendKeys "{Home}+{End}" End Sub Source code form sub menu komposisi Option Explicit Private Sub adc_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Dim i As Integer If Not adc.Recordset.BOF And Not adc.Recordset.EOF And adcDetail.ConnectionString <> "" Then adcDetail.RecordSource = "SELECT * FROM Komposisi WHERE ID_Bahan=" & adc.Recordset!ID_Bahan & " ORDER BY Tahun" Set dtgDetail.DataSource = adcDetail adcDetail.Refresh dtgDetail.Columns(0).Width = 1000 dtgDetail.Columns(1).Width = 0 For i = 2 To adcDetail.Recordset.Fields.Count - 1 dtgDetail.Columns(i).Width = 1900 Next End If End Sub Private Sub cmdCari_Click() If txtJenis.Text <> "" Then adc.Recordset.Find "Jenis_Bahan LIKE '" & txtJenis.Text & "%'", , , adBookmarkFirst Else adc.Refresh dtg.Columns(1).Width = 3000 End If End Sub
Screen.MousePointer = vbDefault lblLogin.Caption = "Ready" tmrLog.Enabled = False imgLog.Picture = imgLogin(0).Picture
Private Sub dtgDetail_OnAddNew() dtgDetail.Columns(1).Text = dtg.Columns(0).Text End Sub
byCounter = 0 mdi.sbr.Panels(1).Text = "Ready"
Private Sub Form_Load()
Unload Me End Select
adc.ConnectionString = db.ConnectionString adc.RecordSource = "SELECT * FROM Jenis_Bahan"
45
Set dtg.DataSource = adc dtg.Columns(1).Width = 3000 adcDetail.ConnectionString = db.ConnectionString End Sub Private Sub Form_Resize() Dim H As Long If WindowState <> vbMinimized Then H = ScaleHeight - dtg.Top - 465 dtg.Height = H / 2 lblKomposisi.Top = dtg.Top + dtg.Height + 120 dtgDetail.Top = lblKomposisi.Top + lblKomposisi.Height + 30 dtgDetail.Height = dtg.Height dtg.Width = ScaleWidth - 120 dtgDetail.Width = dtg.Width End If End Sub Source code form sub menu standar deviasi Option Explicit Private Sub adcSD_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Dim i As Integer If Not adcSD.Recordset.BOF And Not adcSD.Recordset.EOF And adcDetailSD.ConnectionString <> "" Then adcDetailSD.RecordSource = "SELECT * FROM StandarDeviasi WHERE ID_Bahan=" & adcSD.Recordset!ID_Bahan & " ORDER BY Tahun" Set dtgDetailSD.DataSource = adcDetailSD adcDetailSD.Refresh dtgDetailSD.Columns(0).Width = 1000 dtgDetailSD.Columns(1).Width = 0 For i = 2 To adcDetailSD.Recordset.Fields.Count - 1 dtgDetailSD.Columns(i).Width = 1900 Next End If End Sub Private Sub cmdCari_Click() If txtJenis.Text <> "" Then adcSD.Recordset.Find "Jenis_Bahan LIKE '" & txtJenis.Text & "%'", , , adBookmarkFirst Else adcSD.Refresh dtgSD.Columns(1).Width = 3000 End If End Sub Private Sub dtgDetailSD_OnAddNew()
dtgDetailSD.Columns(1).Text = dtgSD.Columns(0).Text End Sub Private Sub Form_Load() adcSD.ConnectionString = db.ConnectionString adcSD.RecordSource = "SELECT * FROM Jenis_Bahan" Set dtgSD.DataSource = adcSD dtgSD.Columns(1).Width = 3000 adcDetailSD.ConnectionString = db.ConnectionString End Sub Private Sub Form_Resize() On Error Resume Next Dim H As Long If WindowState <> vbMinimized Then H = ScaleHeight - dtgSD.Top - 465 dtgSD.Height = H / 2 lblKomposisi.Top = dtgSD.Top + dtgSD.Height + 120 dtgDetailSD.Top = lblKomposisi.Top + lblKomposisi.Height + 30 dtgDetailSD.Height = dtgSD.Height dtgSD.Width = ScaleWidth - 120 dtgDetailSD.Width = dtgSD.Width End If End Sub Source code form sub menu grafik komposisi Private Type KomposisiChartType Tahun As Integer Nilai As Single End Type Private komp() As KomposisiChartType Private Index As Integer Private MaxIndex As Integer Private Sub cmdView_Click() Dim rs As ADODB.Recordset Dim SQL As String Dim i As Integer If cboKomposisi.Text <> "" Then Set rs = New ADODB.Recordset SQL = "SELECT Tahun, " & cboKomposisi.Text & " FROM Komposisi " & _ "WHERE ID_Bahan=" & Val(cboJenis.Text) rs.Open SQL, db.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then tmrChart.Enabled = False MaxIndex = rs.RecordCount ReDim komp(MaxIndex) Do i=i+1 komp(i).Tahun = rs!Tahun
46
komp(i).Nilai = GetNumericValue(rs.Fields(1)) rs.MoveNext Loop Until rs.EOF Index = 0 tmrChart.Enabled = True End If Set rs = Nothing End If End Sub Private Sub Form_Load() Dim rs As New ADODB.Recordset Dim SQL As String SQL = "SELECT * FROM Bahan_Pakan" rs.Open SQL, db.ConnectionString, adOpenStatic Do While Not rs.EOF cboJenis.AddItem rs!ID_Bahan & " - " & rs!Jenis_Bahan rs.MoveNext Loop Set rs = Nothing End Sub Private Sub Form_Resize() If WindowState <> vbMinimized Then chart.Height = ScaleHeight - chart.Top - 60 chart.Width = ScaleWidth - 60 End If End Sub Private Sub tmrChart_Timer() Index = Index + 1 If Index <= MaxIndex Then chart.RowCount = Index chart.RowLabelCount = Index chart.Row = Index chart.Data = komp(Index).Nilai chart.RowLabel = komp(Index).Tahun chart.Refresh End If End Sub Private Function GetNumericValue(ByVal Val) As Double If IsNull(Val) Then GetNumericValue = 0 Else GetNumericValue = Val End If End Function Source code form sub menu grafik standar deviasi Private Type KomposisiChartType Tahun As Integer Nilai As Single End Type Private komp() As KomposisiChartType Private Index As Integer
Private MaxIndex As Integer Private Sub cmdView_Click() Dim rs As ADODB.Recordset Dim SQL As String Dim i As Integer If cboKomposisi.Text <> "" Then Set rs = New ADODB.Recordset SQL = "SELECT Tahun, " & cboKomposisi.Text & " FROM StandarDeviasi " &_ "WHERE ID_Bahan=" & Val(cboJenis.Text) rs.Open SQL, db.ConnectionString, adOpenStatic If rs.RecordCount > 0 Then tmrChart.Enabled = False MaxIndex = rs.RecordCount ReDim komp(MaxIndex) Do i=i+1 komp(i).Tahun = rs!Tahun komp(i).Nilai = GetNumericValue(rs.Fields(1)) rs.MoveNext Loop Until rs.EOF Index = 0 tmrChart.Enabled = True End If Set rs = Nothing End If End Sub Private Sub Form_Load() Dim rs As New ADODB.Recordset Dim SQL As String SQL = "SELECT * FROM Bahan_Pakan" rs.Open SQL, db.ConnectionString, adOpenStatic Do While Not rs.EOF cboJenis.AddItem rs!ID_Bahan & " - " & rs!Jenis_Bahan rs.MoveNext Loop Set rs = Nothing End Sub Private Sub Form_Resize() On Error Resume Next If WindowState <> vbMinimized Then chart.Height = ScaleHeight - chart.Top - 60 chart.Width = ScaleWidth - 60 End If End Sub Private Sub tmrChart_Timer() Index = Index + 1 If Index <= MaxIndex Then chart.RowCount = Index chart.RowLabelCount = Index chart.Row = Index
47
chart.Data = komp(Index).Nilai chart.RowLabel = komp(Index).Tahun chart.Refresh End If End Sub Private Function GetNumericValue(ByVal Val) As Double If IsNull(Val) Then GetNumericValue = 0 Else GetNumericValue = Val End If End Function Source code form sub menu petunjuk Private Sub cmdLink_Click(Index As Integer) Dim sFile As String sFile = App.Path & "\content\link" & Index & ".jpg" If Dir(sFile) <> "" Then pbr.Value = 0 tmrPbr.Enabled = True Set img.Picture = LoadPicture(sFile) End If End Sub Private Sub Form_Resize() If WindowState <> vbMinimized Then Frame1.Width = ScaleWidth - 240 Frame1.Height = ScaleHeight - 240 pic.Width = Frame1.Width - SSTab1.Width - 480 pic.Height = Frame1.Height - 420 End If End Sub Private Sub pic_Resize() If WindowState <> vbMinimized Then img.Width = pic.Width img.Height = pic.Height End If End Sub Private Sub tmrPbr_Timer() If pbr.Value < pbr.Max Then pbr.Value = pbr.Value + 10 Else tmrPbr.Enabled = False End If End Sub Private Sub Form_Activate() Height = 7005 Width = 8910 End Sub Source code form bahan pakan edit Public IDBahan As Integer Private rs As New ADODB.Recordset Private Sub cmdCancel_Click() rs.CancelUpdate
Unload Me End Sub Private Sub cmdSavenAddNew_Click() If SaveData Then frmBahanPakan.RefreshData IDBahan = 0 txtFields(0).Text = "" txtFields(1).Text = "" txtFields(2).Text = "" cboSumber.Text = "Protein" txtFields(3).Text = "" txtFields(4).Text = "" txtFields(5).Text = "" lblLastUser.Caption = "(none)" lblLastUpdate.Caption = "(none)" rs.AddNew End If txtKios.SetFocus End Sub Private Sub cmdSavenClose_Click() If SaveData Then frmBahanPakan.RefreshData Unload Me End If End Sub Private Sub Form_Load() RetrieveData IDBahan If IDBahan = 0 Then Caption = " Tambah Data Bahan Pakan" rs.AddNew Else Caption = " Edit Data Bahan Pakan" End If End Sub Private Sub RetrieveData(ByVal IDBahan As Long) Dim SQL As String SQL = "SELECT * FROM Bahan_Pakan WHERE ID_Bahan=" & IDBahan rs.Open SQL, db.ConnectionString, adOpenStatic, adLockOptimistic If rs.RecordCount > 0 Then txtFields(0).Text = rs.Fields("ID_Bahan") txtFields(1).Text = db.GetStringValue(rs.Fields("Jenis_Bahan")) txtFields(2).Text = db.GetStringValue(rs.Fields("Nama_Latin")) txtFields(3).Text = db.GetStringValue(rs.Fields("Deskripsi")) cboSumber.Text = db.GetStringValue(rs.Fields("Sumber")) txtFields(4).Text = db.GetStringValue(rs.Fields("Sentral_Produksi")) txtFields(5).Text = db.GetStringValue(rs.Fields("Luas_Areal_Produ ksi")) lblLastUser.Caption = db.GetStringValue(rs.Fields("LastUser"))
48
lblLastUpdate.Caption = db.GetStringValue(rs.Fields("LastUpdate")) End If End Sub Private Function SaveData() As Boolean On Error GoTo ErrHandler rs.Fields("ID_Bahan") = txtFields(0).Text rs.Fields("Jenis_Bahan") = txtFields(1).Text rs.Fields("Nama_Latin") = txtFields(2).Text rs.Fields("Deskripsi") = txtFields(3).Text rs.Fields("Sumber") = cboSumber.Text rs.Fields("Sentral_Produksi") = txtFields(4).Text rs.Fields("Luas_Areal_Produksi") = txtFields(5).Text rs.Fields("LastUser") = UserName rs.Fields("LastUpdate") = Date rs.Update WaitForAMoment SaveData = True Exit Function ErrHandler: Alert End Function Private Sub Form_Unload(Cancel As Integer) If rs.State <> adStateClosed Then rs.Close Set rs = Nothing IDBahan = 0 End Sub Source code form sub menu bahan pakan Private Sub adc_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) sbr.Panels(1).Text = "Rec: " & adc.Recordset.AbsolutePosition & " of " & adc.Recordset.RecordCount End Sub Private Sub cmdNext_Click() If Not adc.Recordset.EOF Then adc.Recordset.MoveNext End If End Sub Private Sub cmdPrev_Click() If Not adc.Recordset.BOF Then adc.Recordset.MovePrevious End If End Sub Private Sub dtg_DblClick() If adc.Recordset.RecordCount > 0 And dtg.Columns(0).Text <> "" Then frmBahanPakanEdit.IDBahan = dtg.Columns(0).Text frmBahanPakanEdit.Show vbModal
End If End Sub Private Sub Form_Load() RefreshData End Sub Public Sub RefreshData() Dim i As Integer adc.ConnectionString = db.ConnectionString adc.RecordSource = "SELECT ID_Bahan, Jenis_Bahan, Nama_Latin, Sumber, Sentral_Produksi, Luas_Areal_Produksi, Deskripsi FROM Bahan_Pakan" Set dtg.DataSource = adc dtg.Columns(0).Width = 3000 dtg.Columns(1).Width = 2000 dtg.Columns(2).Width = 1000 dtg.Columns(3).Width = 2000 dtg.Columns(4).Width = 2000 dtg.Columns(5).Width = 5000 For i = 0 To 5 Set Text1(i).DataSource = adc Next End Sub Private Sub Form_Resize() If WindowState <> vbMinimized Then Frame1.Top = ScaleHeight - Frame1.Height - sbr.Height Frame1.Width = ScaleWidth dtg.Width = ScaleWidth dtg.Height = ScaleHeight - tbr.Height sbr.Height - Frame1.Height End If End Sub Private Sub tbr_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1 'add frmBahanPakanEdit.Show vbModal Case 2 'delete DeleteRecord Case 3 'edit frmBahanPakanEdit.IDBahan = dtg.Columns(0).Text frmBahanPakanEdit.Show vbModal Case 5 'refresh RefreshData End Select End Sub Private Sub DeleteRecord() Dim Msg As String Msg = "Record ini akan dihapus. Anda yakin?" If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then adc.Recordset.Delete adc.Recordset.MoveNext End If
49
End Sub Source code form sub menu penutup Option Explicit ' Reg Key Security Options... Const READ_CONTROL = &H20000 Const KEY_QUERY_VALUE = &H1 Const KEY_SET_VALUE = &H2 Const KEY_CREATE_SUB_KEY = &H4 Const KEY_ENUMERATE_SUB_KEYS = &H8 Const KEY_NOTIFY = &H10 Const KEY_CREATE_LINK = &H20 Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _ KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _ KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL ' Reg Key ROOT Types... Const HKEY_LOCAL_MACHINE = &H80000002 Const ERROR_SUCCESS = 0 Const REG_SZ = 1 ' Unicode nul terminated string Const REG_DWORD = 4 ' 32-bit number Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location" Const gREGVALSYSINFOLOC = "MSINFO" Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO" Const gREGVALSYSINFO = "PATH" Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long Private Sub cmdSysInfo_Click() Call StartSysInfo End Sub Public Sub StartSysInfo() On Error GoTo SysInfoErr Dim rc As Long Dim SysInfoPath As String
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then SysInfoPath = SysInfoPath & "\MSINFO32.EXE" Else GoTo SysInfoErr End If Else GoTo SysInfoErr End If Call Shell(SysInfoPath, vbNormalFocus) Exit Sub SysInfoErr: MsgBox "System Information Is Unavailable At This Time", vbOKOnly End Sub Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean Dim i As Long Dim rc As Long Dim hKey As Long Dim hDepth As Long Dim KeyValType As Long Dim tmpVal As String Dim KeyValSize As Long rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError tmpVal = String$(1024, 0) KeyValSize = 1024 0, _
rc = RegQueryValueEx(hKey, SubKeyRef,
KeyValSize)
KeyValType, tmpVal,
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then tmpVal = Left(tmpVal, KeyValSize - 1) Else tmpVal = Left(tmpVal, KeyValSize) End If Select Case KeyValType
50
Case REG_SZ KeyVal = tmpVal Case REG_DWORD For i = Len(tmpVal) To 1 Step -1 KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1))) Next KeyVal = Format$("&h" + KeyVal) End Select GetKeyValue = True rc = RegCloseKey(hKey) Exit Function GetKeyError: KeyVal = "" GetKeyValue = False rc = RegCloseKey(hKey) End Function
51
51