Hari ini rencananya sih mau bikin algoritma buat menghubungkan spreadsheet digitasi dgn db access. Tadinya gw pikir buat ngebikin sistem perhitungan statistik digitasi curah hujan cukup simpel (soalnya sudah pernah gw kerjakan di sistem digitasi FKlim). Ternyata gw salah. Butuh 6 jam, cuman untuk membuat sistem perhitungan ini. Ribet jg algoritmanya, gw sampe sempat frustasi tadinya. Untungnya udah beres.
'Perhitungan Statistik Data
For Kolom = 1 To .Cols - 1
TotalCH = Empty
TotalData = Empty
NilaiMax = Empty
NilaiMin = Empty
NilaiMinPrev = Empty
TotalPreVar = Empty
StdDeviasi = Empty
RangeData Kolom, JumlahBaris
For Baris = 1 To JumlahBaris
MinCount = Empty
If .TextMatrix(Baris, Kolom) Empty Then
If .TextMatrix(Baris, Kolom) = 88888 Then
TotalData = TotalData + 1
Else
'Nilai Max
If .TextMatrix(Baris, Kolom) > NilaiMax Then
NilaiMax = .TextMatrix(Baris, Kolom)
End If
'Nilai Min
For MinCheck = 1 To Baris
If .TextMatrix(MinCheck, Kolom) = Empty Then
MinCount = MinCount + 1
End If
Next MinCheck
If MinCount = Baris - 1 Then
NilaiMin = .TextMatrix(Baris, Kolom)
NilaiMinPrev = NilaiMin
ElseIf .TextMatrix(Baris, Kolom) <= NilaiMinPrev Then
NilaiMin = .TextMatrix(Baris, Kolom)
NilaiMinPrev = NilaiMin
End If
'Total CH
TotalCH = TotalCH + .TextMatrix(Baris, Kolom)
'Total Data
TotalData = TotalData + 1
End If
End If
Next Baris
'Rataan
Rataan = TotalCH / TotalData
'Cari StdDeviasi
For Baris = 1 To JumlahBaris
If .TextMatrix(Baris, Kolom) Empty Then
If .TextMatrix(Baris, Kolom) 88888 Then
PreVar = (.TextMatrix(Baris, Kolom) - Rataan) ^ 2
TotalPreVar = TotalPreVar + PreVar
End If
End If
Next Baris
If TotalData Empty Then
.TextMatrix(33, Kolom) = TotalCH
.TextMatrix(34, Kolom) = Rataan
.TextMatrix(35, Kolom) = TotalData
.TextMatrix(36, Kolom) = NilaiMax
.TextMatrix(37, Kolom) = NilaiMin
Variansi = TotalPreVar / TotalData
StdDeviasi = Sqr(Variansi)
.TextMatrix(38, Kolom) = StdDeviasi
End If
Next Kolom
Statement yg dicetak hijau adalah komentar, sedangkan yg merah adalah variabel/perhitungan yg bermasalah. Bisa dilihat kalo yg paling bermasalah adalah perhitungan nilai minimum dan standar deviasi. Perhitungan nilai minimum ini yg td sukses bikin gw frustasi, sampe2 gw sempat nazar kalo bisa gw pecahkan, gw bakal mandi. (Hehehe ... td pagi gw langsung programming tanpa mandi, biasa ... programmer gitu lo ). Akhirnya setelah kurang lebih 3 jam, masalahnya terpecahkan, dan ... gw benar2 mandi setelah itu .
Setelah ditelusuri, masalahnya ada pd beberapa hal :
- Prosedur perhitungan ini ada di luar modul standar. Dengan kata lain, terletak dalam satu prosedur yg sama dgn proses yg mentriggernya. Jadi beda dgn digitasi FKlim yg trigger dan proses perhitungannya ada pada prosedur yg berbeda, dimana tiap prosedur dipanggil, nilai tiap variabel akan otomatis direset oleh program. Jadi untuk digitasi CH, gw harus mereset manual beberapa variabel yg akan diloop.
- Masih ada hubungannya dengan masalah pertama. Sekarang masalah looping. Ada sebagian variabel yg harus direset pada level loop baris, sedangkan sebagian lagi di level kolom. Salah satu contoh level baris adalah perhitungan nilai minimum td.
No comments:
Post a Comment