Wednesday, May 16, 2007

Connect VFP to MySQL (1)

Sudah bukan masanya lagi membangun aplikasi berbasis data yang besar hanya mengandalkan database native, disamping kemampuannya yang terbatas, kompatibilitasnya juga patut diperhitungkan. Ambil contoh Visual Foxpro yang sampai saat ini masih saya anggap sebagai bahasa pemrograman yang cukup mudah dengan kemampuan yang powerfull, dilengkapi dengan report designer, database native dan cursor adapter (versi 9.0). namun kemampuannya akan lebih powerfull apabila digabungkan dengan database engine seperti mySQL.
Kenapa harus mySQL, disamping FREE tentu saja, juga multi platform. bayangkan anda bisa mengembangkan aplikasi dengan interface berbasis ms windows sementara database tersimpan dalam mySQL yang running pada OS Linux. Tentu saja masih banyak kelebihan yang akan didapat dari penggabungan VFP dengan mySQL, namun untuk memulainya kita mulai tahap demi tahap.

saya asumsikan anda sudah bisa instalasi mySQL ataupun Visual Foxpro, banyak documentasi tentang itu, langsung saja kita melangkah bagaimana koneksi VFP dengan mySQL.
1. pastikan driver mySQL sudah terinstall pada komputer anda, apabila belum googling aja.
2. buat koneksi dengan sqlstringconnect()

contoh kode :

*definisikan variable koneksi untuk memudahkan anda dalam menulis kode.
cKoneksi = "driver=mysql odbc 3.51 driver;server=192.168.42.4;uid=root;pwd=telematika;database=mybisgm"

*keterangan :
*driver mendefinisikan versi driver yang terinstall pada komputer anda.
*server diisi dengan ip address / nama komputer yang didalamnya terinstall mysql
*uid diisi dengan user yang melakukan koneksi
*pwd adalah password untuk user tersebut
*database adalah nama database yang akan anda buka

*buat koneksi
oConnect = SQLSTRINGCONNECT("&cKoneksi")
*pastikan oConnect menghasilkan nilai diatas 0 (positif, artinya koneksi berhasil)

setelah berhasil terkoneksi, anda tinggal menikmati keunggulan mySQL dari visual foxpro anda.
contoh :
SQLEXEC(oConnect,"CALL OPENFILE(?cFileAkun,'','')","CURCU")
* sintak tersebut berarti, menjalankan perintah sql "SQLEXEC" dengan koneksi "oConnect" dan menjalankan stored prosedur dalam mySQL "CALL OPENFILE(?cFileAkun,'','')" untuk kemudian outputnya ditampung dalam cursor "CURCU"
PERHATIKAN :
karena sintak ini dikerjakan dalam server, maka vfp tidak memberikan umpan balik bilamana sintak anda terdapat kesalahan pada mysql server. untuk memastikan bahwa prosedur anda benar, panggil prosedur melalui mysql prompt.
OK sampai sini dulu.. lanjut lagi lain waktu.

Friday, May 04, 2007

Fungsi Terbilang

Fungsi terbilang cukup umum dipakai dalam pemrograman sehari hari, namun tidak ada salahnya saya tuliskan disini sebagai salah satu referensi untuk temen-temen programmer.
Saya tulis code ini dengan Ms. VFP so, kalo ada yang kebetulan pake aplikasi program lainnya, silahkan dikonversi sendiri. Untuk Fungsi terbilang Inggris mungkin ada yang mau mengkoreksi, masalahnya belum sempat koreksi.

cara pakainya cukup simpel, tinggal panggil fungsi dan masukkan dalam sebuah variable.

Contoh :
cBilang = Terbilang(20003)
cBilang = SAYENGLISH(20003)

hasilnya akan tersimpan dalam variable cBilang, Silahkan Mencoba.




======
FUNCTION TERBILANG
PARAMETERS Nilai as Double
PUBLIC sat,ratus,ribu,juta,miliar,ribuan,ratusan,txt,trilyun
Sat = STR(Nilai,18,2)
Des = IIF(RIGHT(sat,1) = '0',VAL(SUBSTR(Sat,17,1)),VAL(RIGHT(Sat,2)))
Ratus = VAL(SUBSTR(Sat,13,3))
Ribu = VAL(SUBSTR(Sat,10,3))
Juta = VAL(SUBSTR(Sat,7,3))
Miliar = VAL(SUBSTR(Sat,4,3))
Trilyun = VAL(LEFT(Sat,3))

Ribuan = IIF(Ribu = 0," ",IIF(Ribu = 1,"Seribu", BilangDetail(Ribu)+" Ribu"))
Jutaan = IIF(Juta = 0," ",(BilangDetail(Juta)+" Juta"))
Miliaran = IIF(Miliar = 0," ",(BilangDetail(Miliar)+" Miliard"))

DO CASE
CASE Nilai < txt =" BilangDetail(Ratus)" txt =" Ribuan+" txt =" BilangDetail(Juta)+" txt =" BilangDetail(Miliar)+" txt =" BilangDetail(Trilyun)+" txt="txt+">= 10
txt=txt+" Koma "+BilangDetail(Des)
ENDCASE
RETURN(TXT+" Rupiah")

FUNCTION BilangDetail
PARAMETERS Detil
st = STR(Detil,3)
s = VAL(RIGHT(st,1))
p = VAL(SUBSTR(st,2,1))
r = VAL(LEFT(st,1))

bil = "Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan"
IF s = 0
ts = " "
ELSE
ts = ALLTRIM(SUBSTR(bil,s*8-7,8))+" "
ENDIF
DO CASE
CASE p = 0
tp = ts
CASE p = 1
DO CASE
CASE s = 0
tp = " Sepuluh "
CASE s = 1
tp = " Sebelas "
OTHERWISE
tp= TRIM(SUBSTR(bil,s*8-7,8))+" Belas "
ENDCASE
OTHERWISE
tp = TRIM(SUBSTR(bil,p*8-7,8))+" Puluh "+ts
ENDCASE
DO CASE
CASE r = 0
tr = tp
CASE r = 1
tr = "Seratus "+ALLTRIM(tp)
OTHERWISE
tr = TRIM(SUBSTR(bil, r*8-7,8))+" Ratus "+ALLTRIM(tp)
ENDCASE
RETURN(TRIM(tr))


FUNCTION SAYENGLISH
PARAMETERS Nilai as Double
PUBLIC koma,sat,ratus,ribu,juta,miliar,ribuan,ratusan,txt,trilyun

Sat = STR(Nilai,18,2)
Des = VAL(RIGHT(Sat,2))
Ratus = VAL(SUBSTR(Sat,13,3))
Ribu = VAL(SUBSTR(Sat,10,3))
Juta = VAL(SUBSTR(Sat,7,3))
Miliar = VAL(SUBSTR(Sat,4,3))
Trilyun = VAL(LEFT(Sat,3))

Ribuan = IIF(Ribu = 0," ",(SAYENGLISHDETAIL(Ribu)+" Thousand"))
Jutaan = IIF(Juta = 0," ",(SAYENGLISHDETAIL(Juta)+" Million"))
Miliaran = IIF(Miliar = 0," ",(SAYENGLISHDETAIL(Miliar)+" Billion"))

DO CASE
CASE Nilai < txt =" SAYENGLISHDETAIL(Ratus)" txt =" Ribuan+" txt =" SAYENGLISHDETAIL(Juta)+" txt =" SAYENGLISHDETAIL(Miliar)+" txt =" SAYENGLISHDETAIL(Trilyun)+">0
txt=txt+" Point "+SAYENGLISHDETAIL(Des)
ENDIF
RETURN(TXT+" Dollars")

FUNCTION SAYENGLISHDETAIL
PARAMETERS Detil
st = STR(Detil,3)
s = VAL(RIGHT(st,1))
p = VAL(SUBSTR(st,2,1))
r = VAL(LEFT(st,1))

bil = "One Two Three Four Five Six Seven Eight Nine"
bil2 = "One Two Third Four Fif Six Seven Eight Nine"
IF s = 0
ts = " "
ELSE
ts = ALLTRIM(SUBSTR(bil,s*8-7,8))+" "
ENDIF
DO CASE
CASE p = 0
tp = ts
CASE p = 1
DO CASE
CASE s = 0
tp = "Ten "
CASE s = 1
tp = "Eleven "
CASE s = 2
tp = "Twelve "
OTHERWISE
tp= ALLTRIM(SUBSTR(bil2,s*8-7,8))+"teen "
ENDCASE
OTHERWISE
tp = allTRIM(SUBSTR(bil2,p*8-7,8))+"ty "+ts
ENDCASE
DO CASE
CASE r = 0
tr = tp
*!* CASE r = 1
*!* tr = "Seratus "+ALLTRIM(tp)
OTHERWISE
tr = allTRIM(SUBSTR(bil, r*8-7,8))+" Hundred "+ALLTRIM(tp)
ENDCASE
RETURN(TRIM(tr))


=====
Semoga bermanfaat..