Month: March 2009

24 Maret 2009

24 Maret 2009.
Ya, itulah tanggal masehi untuk hari ini.
23 tahun yang lalu, lahirlah seorang anak kecil yang sangat diharapkan oleh orang taunya, di sebuah kota kecil nun jauh disana.
23 tahun telah berlalu anak kecil itu menempuh kehidupan dengan segala warnanya, melalui lorong-lorong kehidupan, warna-warna kehidupan, senang, sedih, bahagia, sengsara, suka, duka.
23 tahun telah berlalu, sudahkah anak kecil itu mempelajari derasnya kehidupan? sudahkah anak kecil itu belajar dari pengalaman? yang menuntunnya menjadi manusia sesungguhnya.
23 tahun telah berlalu, sudahkah anak kecil itu memberikan manfaat bagi sekitarnya, menjadi yang selalu memeri arti bagi orang lain.
23 tahun telah berlalu, sudahkah anak kecil itu berbakti kepada dua orang tua yang selalu merindukannya, sudahkah menjadi teladan bagi adiknya.
23 tahun telah berlalu, sudahkah anak kecil itu lebih mendekatkan diri pada sang penciptanya?
23 tahun telah berlalu……..


anak kecil itu, 23 tahun yang lalu diberi nama Rizal Zaini Ahmad Fathony oleh kedua orang tuanya.

Makan… makan… makan.. Di acara ratek

Hari ini, hari pertama ratek. Seperti biasa makan malam di tempat makan hotel jam 7. Aku bersama temenku masuk ke tempat makan itu. Temenku langsung mengambil nasi dan lauk. Sedangkan aku berkeliling dulu melihat2 makanan. Dan ternyata. waaah cm ada nasi, krupuk dan buah (sudah di filter where makanan yg aq mau). aku melihat2 sebentar. akhirnya kuputuskan ke penjaga hotelnya.
‘mbak, bisa minta dadar telur’ kataku ke mbaknya.
Mbak penjaganya g langsung menjawab, tapi nanya ke temennya dulu.
‘Mas, kalau mau dadar telur kena cash lagi. soalnya panitia cuma menyediakan ini. kalau mau mas kena cash lagi’ begitu kira2 penjaga hotelnya berkata.

‘Aah, pelayanan tidak memuaskan’ gumanku. Aku langsung menghubungi panitia yang kebetulan ada di depan ruang makan. dan aku menceritakan yg tadi ke panitia.
Akhirnya salah satu panitia menghubungi penjaga tempat makannya, menjelaskan bahwa makanan untuk ku akan ditanggung panitia. dan kemudian merequest makanan kesukaanku, TEMPE dan TELUR DADAR, ke koki nya.
siip, aku menunggu beberapa waktu, dan akhirnya…
Taaaadaaaa, makanan kesukaanku tersaji, hmm, nyam-nyam, enaknya. :p

HTML report dengan VB

Sebuah aplikasi database, pasti tidak terlepas dari tool untuk menampilkan laporan atau report. Akhir-akhir ini aku lebih memilih untuk membuat report yang berbasis HTML. Kenapa begitu, karena lebih praktis (tanpa tambahan aplikasi spt crystal report) dan lebih fleksibel mengatur tampilan (html sangat mudah untuk diatur sesuai selera, bisa pake css, dll).

Yang dibutuhkan untuk membuat html report cuma control Web Browser aja untuk menampilkan reportnya. Di setiap aplikasi pemrograman, baik C#, VB.NET, VB6, de es be udah ada fasilitas web browser. Kita tinggal memparsing kode2 html kita (yang biasanya kita simoan di variabel bertioe string) ke control web browser tersebut. hasilnya web browser akan menampilkan report yang kita mau.

Berikut ini ada contoh HTML report dengan bahasa VB6. (maklum lagi develop aplikasi pake vbjadul)

Dim html As String

html = "<html><head>"
html = html & "<style type='text/css'><!--body {font-family: tahoma, helvetica, arial, sans-serif; font-size: 12px;}" & _
               "             h3 {font-size: 16px;} h2 {font-size: 18px; margin: 1em 0.5em 0.5em 0.5em; }" & _
               "             table { border: 1px solid #000; border-collapse:collapse;  font: normal 11px 'Lucida Grande',Verdana,sans-serif; }" & _
               "             td { padding: 2px 2px 2px 2px; border-bottom: 1px solid #000; border-right: 1px solid #000; } " & _
               "             --></style>"
                            
html = html & "<title>Laporan</title></head><body>"


    sql = "SELECT kab.kab, kab.nama , Count(batch.nks) AS jumlah " & _
          "FROM kab LEFT JOIN batch ON (kab.kab = batch.kab) AND (kab.prop = batch.prov) " & _
          "GROUP BY kab.kab, kab.nama ORDER BY kab.kab;"
          
    sqlA = "SELECT kab.kab, kab.nama , Count(bs.bs) AS jumlah " & _
          "FROM kab LEFT JOIN bs ON (kab.kab = bs.kab) AND (kab.prop = bs.prop) " & _
          "GROUP BY kab.kab, kab.nama ORDER BY kab.kab;"
          
    html = html & "<h2>Jumlah dan Persentase</h2>"
    html = html & "<table width='95%'><tr><td width=25% align='center'><b>Kode Kabupaten</b></td><td width=55% align='center'><b>Nama Kabupaten</b></td><td width=30% align='center'><b>Jumlah NKS</b></td><td width=30% align='center'><b>Jumlah</b></td><td width=30% align='center'><b>Persentase (%)</b></td></tr>"
    
    Set strRs = strCon.Execute(sql)
    Set strRsA = strCon.Execute(sqlA)
    jumlah = 0
    jumlaha = 0
    Do While Not strRs.EOF
       html = html & "<tr><td>" & strRs.Fields("kab") & "</td><td>" & strRs.Fields("nama") & "</td><td align='right'>" & strRsA.Fields("jumlah") & "</td><td align='right'>" & strRs.Fields("jumlah") & "</td><td align='right'>" & Format((Val(strRs.Fields("jumlah")) * 100) / Val(strRsA.Fields("jumlah")), "0.00") & "</td></tr>"
       jumlah = jumlah + Val(strRs.Fields("jumlah"))
       jumlaha = jumlaha + Val(strRsA.Fields("jumlah"))
       strRs.MoveNext
       strRsA.MoveNext
    Loop


htm = html & "</table></body></html>"

webBrowser.Document.Clear
webBrowser.Document.Open
webBrowser.Document.Write (html)
webBrowser.Document.Close

Koneksi internet baru.

Akhirnya aku bisa menikmati koneksi internet broadband seadanya yang unlimited (kalo sinyal ada).

Kemaren mumpung ada yang pelatihan ke Jakarta (Java). Aku nitip dibeliin IM2 Broom Unlimited. Katanya harganya 150rb untuk perdana. trus 100 rb per bulan untuk bulan selanjutnya.
Bedanya ama telkomselflash unlimited. IM2 Broom ini adalah kartu pra bayar, bukan pasca bayar. jadi g ribet lah.

Aku ngrasa IM2 td cocok buatku, cause sebelumnya aku pake telkomselflash yang kuota. begitu cepat terasa kuota itu habis. sebulan aku bisa habis 200 rb atau lebih. itu pun aq batesi pake firewall di laptop.

Sekarang cb pake m2. semoga aja lancar. n bs salah satu kebutuhan pokok ku: internet. hehe.

Aktifitas liburan

Banyak temen-temen yang nanya ‘ntar liburan mau kemana?’, ‘jalan jalan kemana?’, ‘ke pekanbaru yuk,’, de el el. Aku cuma tersenyum aja saat temenku nanya gitu.

Entah mengapa aku lebih suka menghabiskan waktu liburan di depan leptopku berjumpa dengan baris-baris kode. Aku merasa hal itu begitu menyenangkan, lebih menyenangkan daripada sekedar main game atau jalan ke mall.
Apalagi kalau telah berhasil memecahkan suatu masalah coding, begitu senangnya aku. ide2ku tersalurkan dgn baik.

Salah satu temenku pernah nyindir ‘zal, jalan2 sana, liburan gini, sambil nyari kenalan cewek, siapa tahu kecanthol’, atau begini ‘kamu itu g pernah jalan2, gimana bisa dapet cewek. jalan2 sana’. aku juga tersenyum aja.
Aaah. kalau udah jodoh juga gak akan kemana kok. jadi tenang aja.

Nyacah

Kerjaanku sekarang di BPS. menjadi PCL Pencacah sebuah survey yang katanya ingin memotret keadaan sosial ekonomi masyarakat.
Sebenarnya aq males kurang semngat kalau kerja nyacah gitu. Pengalaman dulu2 waktu PKL ama survey Kaki Lima di Jakarta. Males aja nanya2 responden gitu. cause aq sendiri jg g lancar ngomong, apa lagi mbujuk orang tuk diwawancarai 1 jam lebih. Aku aja bosen kalo ditanyai satu jam lebih gitu.
Udah adzan dzuhur. seadanya aja lah postingnya. hehe

VB lagi VB lagi

Untuk sementara, rewriting Zaitun Time Series module di tunda. Cause ada request bikin aplikasi data entry, dan lagi2 pake vb6 (vb jadul).

Udah lumayan lupa sih ama bahasa vb. But ga papa dicoba lagi.
Sebenarnya gak suka ama style bahasa vb. terlalu ribet. banyak keyword.
Apalagi vb6, bahasa yang menurutku kacau. oop gak, terstruktur jg gak. tau deh bahasa apa. Dan banyak yang gak konsisten gt.
Makanya aq milih bahasa yang turunannya C spt C++, C#, Java, PHP.
lebih enak lah. konsisten. siip.

Yang paling kuingat adalah statement lucu buat penanganan error di vb6:
On Error Go To Hell
Kalau error ya ke laut aja lah. hehe.

But. g papa tetep dikerjain aja lah:
Ini aq kutip aja sebagian source code nya. itung2 buat nginget2 bahasa nya vb6:

Public Function Simpan() As String
On Error GoTo Hell
simpan = True

rsBatch.Open "batch", strCon, adOpenStatic, adLockOptimistic
rsBatch.AddNew

rsBatch.Fields("prov") = batch.txtProvinsi.Text
rsBatch.Fields("kab") = batch.txtKabupaten.Text
rsBatch.Fields("kec") = batch.txtKecamatan.Text
rsBatch.Fields("desa") = batch.txtDesa.Text

rsBatch.Update
rsBatch.Close

Exit Function

Hell:
simpan = False
If Err.Number = -2147467259 Then
    MsgBox "Sudah ada data dengan primary key sama"
Else: MsgBox "Error: " &amp; Err.Number &amp; " " &amp; Err.Description
End If
End Function

Ini critanya buka koneksi database, tabel tertentu, trus ngeadd recordnya habis itu di simpen. gitu aja.
Kalo error ke laut aja. 😛

How to read an Excel File with C#

Setelah nyari2 kemana2 dapet juga library buat baca tulis file excel di c#.

Setelah utak atik bentar jadilah kelas ExcelReader. Kelas ini membaca file Excel dengan memanfaatkan library excellibrary. http://code.google.com/p/excellibrary/

and. here is the code:

using System;
using System.Collections.Generic;
using System.IO;
using System.Data;
using ExcelLibrary.Office.Excel;

namespace zaitun.Data
{
 public class ExcelReader
 {

private DataSet data;
private string filePath;

public ExcelReader(string filePath)
{
this.filePath = filePath;
}

public DataSet ReadData()
{
Workbook book = Workbook.Open(this.filePath);

this.data = new DataSet();

foreach (Worksheet sheet in book.Worksheets)
{
DataTable table = new DataTable(sheet.Name);
for (int i = sheet.Cells.FirstColIndex; i &lt;= sheet.Cells.LastColIndex; i++)
{
table.Columns.Add();
}

for (int i = sheet.Cells.FirstRowIndex; i &lt;= sheet.Cells.LastRowIndex; i++)
{
Row xlrow = sheet.Cells.GetRow(i);
DataRow row = table.NewRow();
for (int j = xlrow.FirstColIndex; j &lt;= xlrow.LastColIndex; j++)
{
Cell cell = xlrow.GetCell(j);

row[j - xlrow.FirstColIndex] = cell.Value;
}

table.Rows.Add(row);
}

this.data.Tables.Add(table);
}

return this.data;
}
}

}

Kelas ini membaca file excel yang path-nya didefinisikan di konstruktor kelas ini yaitu parameter filePath.

Hasil pembacaannya diumpan balik dalam objek DataSet melalui fungsi Read Data. Objek dataset merepresentasikan satu workbook excel. didalam DataSet ada beberapa DataTable yang di excel berupa Worksheet.

Berikut contoh implementasi dari kelas excelreader

ExcelReader excel = new ExcelReader(filePath);
DataSet excelData = excel.ReadData();