Friday, January 30, 2009

Convert integer 2 word in param crystal report

แปลงตัวเลขเป็นคำอ่าน

# นั่งแก้โค้ดเพื่อน เห็นเค้ารายงานบิลเค้ามีแปลงตัวเลขเป็นคำเลยเปิดดูสูตรของตัวแปรมันก็เป็นงี้อ่ะ

# ไม่รู้เหมือนกันว่าเพื่อนเค้าก๊อปโค้ดมาจากใหนนะครับ เครดิตให้เจ้าของโค้ดตัวจริงนะครับ ซึ่งไม่ทราบว่าคือคัย --'

# แต่ค้นหาด้วยกูเกิ้ลเห็นแต่โค้ด php เยอะเลยการแปลงตัวเลขเป็นคำอ่านอ่ะนะ



# คลิกขวาที่ Formula Fields => New... แล้วแปะโค้ดด้านล่างลงไป เปลี่ยนค่าตัวอักษรสีแดงเป็น field ตัวเลขซะ

Formula param in Crystal Report

stringVar array
D:= ["","สิบ","ร้อย","พัน","หมื่น", "แสน"];
stringVar array e:= ["หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก","เจ็ด","แปด","เก้า"];
stringVar array Mn;
stringVar array Ar1;
stringVar Arr;
numberVar F;
numberVar R;
numberVar j;
numberVar k;
numberVar u;
numberVar j2;
stringVar Bh;
numberVar F2;
numberVar j3;
numberVar u1;
numberVar m3;
stringVar Bh3;

Mn := "";
Bh3 := "";
stringVar sm:= replace(CStr(sum({Currency}),2,""),",","") ;
Ar1:=Split (sm,".");


F:= Len(Ar1[1]);
If F<=6 then Arr:=Ar1[1];
If F>6 and F<=12 then Arr:=Left(Ar1[1],Len(Ar1[1])-6)+":"+Right(Ar1[1],6);
If F>12 and F<=18 then Arr:=Left(Ar1[1],Len(Ar1[1])-12)+":"+ Mid(Ar1[1], F - 12 + 1, 6)+":"+Right(Ar1[1],6);

Mn:=Split (Arr,":" );
For j2:=1 to UBound (Mn) do (

F2:= Len(Mn[j2]);
For j:= 1 To F2 do (
If Mid(Mn[j2], j, 1) = "2" And F2 + 1 - j = 8 Then e[2]:= "ยี่";
If Mid(Mn[j2], j, 1) = "1" And F2 + 1 - j = 8 Then e[1]:= "";
If Mid(Mn[j2], j, 1) = "2" And F2 + 1 - j = 2 Then e[2]:= "ยี่";
If Mid(Mn[j2], j, 1) = "1" And F2 + 1 - j = 2 Then e[1]:= "";
If Mid(Mn[j2], j, 1) = "1" And F2 + 1 - j = 1 Then e[1]:= "เอ็ด";


For R:= 1 To 9 do (
u:= Val(Mid (Mn[j2],j,1));
If u = R Then Bh:= Bh + e[R] + D[F2 + 1 - j];
);
e[2]:= "สอง";
e[1]:= "หนึ่ง";
);

If j2 <> Ubound(Mn) Then Bh:= Bh + "ล้าน";
Mn[j2]:= Bh;
Bh:= "";
);

For j3:= 1 To 2 do (
If Mid(Ar1[2], j3, 1) = "2" And j3 = 1 Then e[2]:= "ยี่";
If Mid(Ar1[2], j3, 1) = "1" And j3 = 1 Then e[1]:= "";
If Mid(Ar1[2], j3, 1) = "1" And j3 = 2 Then e[1]:= "เอ็ด";

For m3:= 1 To 9 do (
u1:=Val(Mid(Ar1[2], j3, 1));
If u1 = m3 Then Bh3:= Bh3 + e[m3] + D[3 - j3];
);
e[2]:= "สอง";
e[1]:= "เอ็ด";

);

If Mn[1]<>"" and Bh3<>"" then
Join (Mn,"")+ "บาท"+Bh3 + "สตางค์"
Else If Mn[1]<>"" and Bh3="" then
Join (Mn,"")+ "บาทถ้วน"
Else If Mn[1]="" and Bh3<>"" then
Bh3 + "สตางค์"
Else
""

Note:
  • ไม่รู้เรื่องอ่ะบอกตรงๆ ดูโค้ดภาษาอื่นแล้วอ่ะยิ่งเป็นภาษาที่เรามะเคยแต่ะแล้วด้วย
  • ว่าจะลองเขียนด้วย java ดีกว่าเรา ใน narisa เห็นเค้าแนะอัลกอ เยอะเลยน่าจะง่ายๆ คิดว่านะต้องลอง
Related Links:
References:
  • get from my friend code in crytal report param
  • i am not sure original link of this code

No comments:

Post a Comment

Popular Posts