aku penah posting ttg code terbilang di crystal report http://layonglim.wordpress.com/2007/08/13/fungsi-terbilang/
semoga berguna http://layonglim.blogspot.com On 4/17/08, Rizky Prihanto <[EMAIL PROTECTED]> wrote: > > masa error om? hehehe, script aku baek-baek aja koq. nie SQL hasil > dumpingan xf_terbilang() ku : > > > -- Function "xf_terbilang" DDL > > CREATE [EMAIL PROTECTED] FUNCTION `xf_terbilang`(angka bigint) > RETURNS varchar(5000) CHARSET utf8 > BEGIN > > DECLARE sString varchar(30); > > DECLARE Bil1 varchar(255); > > DECLARE Bil2 varchar(255); > > DECLARE STot varchar(255); > > DECLARE X int; > > DECLARE Y int; > > DECLARE Z int; > > DECLARE Urai varchar(5000); > > SET sString = CAST(angka as char); > > SET Urai = ''; > > SET X = 0; > > SET Y = 0; > > WHILE X < LENGTH(sString) DO > > SET X = X + 1; > > SET sTot = MID(sString, X, 1); > > SET Y = Y + CAST(sTot as UNSIGNED); > > SET Z = LENGTH(sString) - X + 1; > > CASE CAST(sTot as UNSIGNED) > > WHEN 1 THEN > > BEGIN > > IF (Z = 1 OR Z = 7 OR Z = 10 OR Z = 13) THEN > > SET Bil1 = 'SATU '; > > ELSEIF (z = 4) THEN > > IF (x = 1) THEN > > SET Bil1 = 'SE'; > > ELSE > > SET Bil1 = 'SATU'; > > END IF; > > ELSEIF (Z = 2 OR Z = 5 OR Z = 8 OR Z = 11 OR Z = 14) THEN > > SET X = X + 1; > > SET sTot = MID(sString, X, 1); > > SET Z = LENGTH(sString) - X + 1; > > SET Bil2 = ''; > > CASE CAST(sTot AS UNSIGNED) > > WHEN 0 THEN SET Bil1 = 'SEPULUH '; > > WHEN 1 THEN SET Bil1 = 'SEBELAS '; > > WHEN 2 THEN SET Bil1 = 'DUA BELAS '; > > WHEN 3 THEN SET Bil1 = 'TIGA BELAS '; > > WHEN 4 THEN SET Bil1 = 'EMPAT BELAS '; > > WHEN 5 THEN SET Bil1 = 'LIMA BELAS '; > > WHEN 6 THEN SET Bil1 = 'ENAM BELAS '; > > WHEN 7 THEN SET Bil1 = 'TUJUH BELAS '; > > WHEN 8 THEN SET Bil1 = 'DELAPAN BELAS '; > > WHEN 9 THEN SET Bil1 = 'SEMBILAN BELAS '; > > ELSE BEGIN END; > > END CASE; > > ELSE > > SET Bil1 = 'SE'; > > END IF; > > END; > > WHEN 2 THEN SET Bil1 = 'DUA '; > > WHEN 3 THEN SET Bil1 = 'TIGA '; > > WHEN 4 THEN SET Bil1 = 'EMPAT '; > > WHEN 5 THEN SET Bil1 = 'LIMA '; > > WHEN 6 THEN SET Bil1 = 'ENAM '; > > WHEN 7 THEN SET Bil1 = 'TUJUH '; > > WHEN 8 THEN SET Bil1 = 'DELAPAN '; > > WHEN 9 THEN SET Bil1 = 'SEMBILAN '; > > ELSE SET Bil1 = ''; > > END CASE; > > IF CAST(sTot as UNSIGNED) > 0 THEN > > IF (Z = 2 OR Z = 5 OR Z = 8 OR Z = 11 OR Z = 14) THEN > > SET Bil2 = 'PULUH '; > > ELSEIF (Z = 3 OR Z = 6 OR Z = 9 OR Z = 12 OR Z = 15) THEN > > SET Bil2 = 'RATUS '; > > ELSE > > SET Bil2 = ''; > > END IF; > > ELSE > > SET Bil2 = ''; > > END IF; > > IF Y > 0 THEN > > CASE Z > > WHEN 4 THEN BEGIN SET Bil2 = CONCAT(Bil2, 'RIBU '); SET Y = 0; END; > > WHEN 7 THEN BEGIN SET Bil2 = CONCAT(Bil2, 'JUTA '); SET Y = 0; END; > > WHEN 10 THEN BEGIN SET Bil2 = CONCAT(Bil2, 'MILYAR '); SET Y = 0; END; > > WHEN 13 THEN BEGIN SET Bil2 = CONCAT(Bil2, 'TRILYUN '); SET Y = 0; > END; > > ELSE BEGIN END; > > END CASE; > > END IF; > > SET Urai = CONCAT(Urai, Bil1, Bil2); > > END WHILE; > > RETURN Urai; > > END; > > > contoh cara manggilnya : > mysql> select xf_terbilang(12345); > +---------------------------------------------+ > | xf_terbilang(12345) | > +---------------------------------------------+ > | DUA BELAS RIBU TIGA RATUS EMPAT PULUH LIMA | > +---------------------------------------------+ > 1 row in set > > baek2 aja koq.. hehehe. coba lagi deh om.. > > > -- > wassalam, > > Rizky Prihanto > http://www.software-arsitek.web.id > > > >
