Baik, ini yang selalu saya perintahkan jika ada yang minta bantuan pembuatan program SPK : buat penyelesaian masalahnya dengan Microsoft Excel. Seperti kasus berikut:
Perhatikan bahwa terdapat data rekening, dan data biaya per tahun. Inti akhirnya adalah pembuatan software DSS/SPK untuk analisis biaya, tepatnya dari data biaya terdahulu, maka akan diusulkan (oleh software) rencana anggaran biaya yang akan datang, dengan berusaha untuk meminimalkan pengurangan resiko kegagalan proyek.
Oke, selanjutnya, ... pasti saya akan pakai Microsoft Access untuk desain databasenya. Perkara nanti akan di convert ke database apapun, pokoknya dalam tahap desain ini, kudu pakai Microsoft Access 2007 (tidak 2003). So, simple, ini visualisasi tabel2 yang tercipta:
Selanjutnya yang menjadi masalah adalah ini : saya harus bisa memanggil data biaya masing-masing rekening untuk tahun kapapun. Contoh, kapanpun, saya harus bisa memanggil data biaya untuk Rekening 11003 di tahun 2004,2003 dan tahun kapanpun.
Nah, bagaimana caranya?
Tentu, saya bisa melakukan sekedar operasi Basis Data SELECT dengan kriteria nomor rekening dan tahun tertentu. Tapi, tak terbayangkan kalau terus-menerus melakukan query ke basis data. Solusi yang paling terlihat, adalah menyimpan semua data biaya masing-masing rekening pada tiap tahun ke memori. Dengan struktur data yang memungkin pengaksesan secara langsung. Menggunakan Visual Basic.NET 2008.
Tanpa banyak penjelasan, ini kodenya:
Perhatikan saya menggunakan Array DaftarRekening yang tiap elemen array merupakan objek dari instan Kelas SortedList. Nah, kuncinya adalah SortedList. Kalau di Java yang idem adalah HashMap. Dengan SortedList kita bisa mengakses tiap elemen pada sorted list dengan KEY-nya, yang berupa nomor rekening. Tentu, tidak boleh ada item yang memiliki KEY yang sama. Jadi, data biaya tiap tahun disimpan pada array elemen ke - n, dengan tiap elemen array itu sendiri bisa diakses dengan pengaksesan langsung menggunakan KEY-nya.
Saya simpulkan, berikut adalah kode untuk menambah elemen ke sorted list :
DaftarRekening(i - TahunAwal).Add(dr.GetString(0), dr.GetDouble(1))
Dan ini untuk mengakses elemennya :
MessageBox.Show(DaftarRekening(2007 - TahunAwal).Item("1"))
Perhatikan bahwa kode penambahan adalah dengan ADD, dimana argumen pertama merupakan KEY dari item, dan argumen kedua merupakan OBJECT yang akan ditambahkan. OBJECT apapun bisa. Sekedar variabel primitif spt Integer, Float bisa. Atau yang kompleks Object dari sebuah kelas juga bisa. Ringan sekali mengimplementasikan ini di VB.NET
Kemudian, perhatikan bahwa kode pengaksesan adalah dengan menggunakan KEY-nya.
Terakhir, perhatikan bahwa indeks array memegang peranan penting. Kasus di sini adalah data dari tahun 2003 .. 2007. So, 2003 adalah indeks ke 0, 2004 adalah indeks ke 1, dst. Sehingga, tentu untuk mendapatkan indeks pertama, kita kurangkan dengan angka tahun awal tersebut : 2003.
Mudah kan?
Semoga bermanfaat dan memberi inspirasi!
NB:
- Baru kemarin ini saya mulai (tp sudah ada 3 tabel tercipta sebelumnya) u bimbingan thesis ini, sy perkirakan (smoga) 3 hari lagi (dengan tiap hari pertemuan @4jam) semua kalkulasi selesai. Lebih bagus (tentu) dengan visualisasi Report yang berupa Grafik.
- Untuk urusan input, saya pending dulu, cukup entri di Access 2007, dan langsung implementasikan proses SPK/DSS. Kalau semua Oke, baru input dikembangkan.
- Senang sekali.
- Alhamdulillah
No comments:
Post a Comment