แปลงตัวเลขให้เป็นตัวอักษรยอดเงินภาษาอังกฤษของ access

   
พอจะมีวิธีแปลงหรือฟังชันแปลงค่าตัวเลขให้เป็นยอดเงินภาษาอังกฤษมั้ยครับ ผมมีนเฉพาะฟังชันแปลงเป็นภาษาใทย สำหรับ access นะครับ
joy
25 ก.ค. 47 เวลา 21:09:33 น. --> 169.210.8.80, ,
   
   
ถามเรื่อง access เพียวๆ หรือว่าใช้ fox จะเอาภาษา ใหนกันแน่
foxหรือเปล่า
25 ก.ค. 47 เวลา 21:39:49 น. --> 203.145.3.3, ww
  
   
ที่มา:ของใครไม่รู้ รู้แต่ว่ามันใช้ได้

* แปลงตัวเลขเป็นตัวอักษร (ภาษาอังกฤษ) *
*******************
FUNCTION spelleng
PARAMETER numAmt

PRIVATE numAmt, chrAmt, cDNums, wordAmt, cDvar

*numAmt = ตัวเลขที่จะแปลงเป็นข้อความ
*chrAmt = numAmt แปลงเป็น char
*wordAmt = ข้อความที่ได้

*Covert amount to string, add leading zeros

chrAmt=RIGHT('000000000'+LTRIM(STR(numAmt,12,2)),12)

*Initialize literal string

Dol1 = 'ONE'
Dol2 = 'TWO'
Dol3 = 'THREE'
Dol4 = 'FOUR'
Dol5 = 'FIVE'
Dol6 = 'SIX'
Dol7 = 'SEVEN'
Dol8 = 'EIGHT'
Dol9 = 'NINE'
Dol10 = 'TEN'
Dol11 = 'ELEVEN'
Dol12 = 'TWELVE'
Dol13 = 'THIRTEEN'
Dol14 = 'FOURTEEN'
Dol15 = 'FIFTEEN'
Dol16 = 'SIXTEEN'
Dol17 = 'SEVENTEEN'
Dol18 = 'EIGHTEEN'
Dol19 = 'NINETEEN'
Dol20 = 'TWENTY'
Dol30 = 'THIRTY'
Dol40 = 'FORTY'
Dol50 = 'FIFTY'
Dol60 = 'SIXTY'
Dol70 = 'SEVENTY'
Dol80 = 'EIGHTY'
Dol90 = 'NINETY'

wordAmt=''
IsHundred = .F.
checkMillion =.T.

FOR Counter = 1 TO 3

* First time through the For loop to check for millions
* Second time through the FOR loop to check for thousands
* Third time through the FOR loop to check for hundreds, tens and ones


DO CASE
CASE Counter = 1
cDNums = SUBSTR(chrAmt,1,3)
CASE Counter = 2
cDNums = SUBSTR(chrAmt,4,3)
CASE Counter = 3
cDnums = SUBSTR(chrAmt,7,3)
ENDCASE


* Check hundreds

IF LEFT(cDNums, 1) > '0'
cDvar = 'Dol'+LEFT(cDNums,1)
wordAmt = wordAmt + EVAL(cDvar)+SPACE(1)+'HUNDRED'+SPACE(1)
IsHundred = .T.
IF Counter = 2
CheckMillion = .T.
ENDIF
ENDIF

* Check tens and ones

Dtens = VAL(SUBSTR(cDNums,2,2))
IF Dtens > 0
IF Dtens > 20
cDvar = 'Dol'+SUBSTR(cDNums,2,1)+'0'
wordAmt = wordAmt + EVAL(cDvar)
IF SUBSTR(cDNums,3,1) > '0'
cDvar = 'Dol'+SUBSTR(cDNums,3,1)
wordAmt = wordAmt + '-'+ EVAL(cDvar) + SPACE(1)
ELSE
wordAmt = wordAmt + SPACE(1)
ENDIF
ELSE
cDvar = 'Dol'+LTRIM(STR(Dtens))
wordAmt = wordAmt + EVAL(cDvar) + SPACE(1)
ENDIF
IsHundred = .F.
IF Counter = 2
CheckMillion = .T.
ENDIF
ENDIF

* Add in Million, if needed
IF numAmt > 999999.99 .AND. Counter = 1
wordAmt = wordAmt + SPACE(1)+'MILLION'+SPACE(1)
CheckMillion = .F.
ENDIF


* Add in Thousand, if needed
IF CheckMillion
IF numAmt > 999.99 .AND. Counter = 2
IF Dtens > 0
wordAmt = wordAmt + SPACE(1)+'THOUSAND'+SPACE(1)
ENDIF
IF IsHundred
wordAmt = wordAmt + SPACE(1)+'THOUSAND'+SPACE(1)
ENDIF
ENDIF
ENDIF

ENDFOR

* Construct the complete dollar amount in words

wordAmt = IIF(numAmt<1, 'ONLY'+SPACE(1), wordAmt + 'AND'+SPACE(1)) + ;
RIGHT(chrAmt,2)+'/100 ' + 'DOLLAR' + IIF(numAmt>1,'S','')

RETURN wordAmt
arsenal
26 ก.ค. 47 เวลา 19:39:59 น. --> 203.170.131.137
  
   
คุณ arsenal
ผมว่าเจ้าของกระทู้จะเอา function ภาษา access ไม่ใช่ fox นา

เห็นด้วยว่าถามได้ วก-วน ดี ยิ่งถามใน webboard ของ fox ด้วย

ถ้าผมเข้าใจผิดก็อยากให้เจ้าของกระทู้มาบอกให้ชัดอีกสักที
...
26 ก.ค. 47 เวลา 20:16:33 น. --> 203.185.143.229
  
   
ถาม access ครับ ที่จริงเป็นสาวก fox นะครับ แต่พอดีที่บริษัทมีโปรแกรมที่ใช้อยู่เป็น access และต้องพัฒนาต่อ ซึ่งพอใด้ครับ แต่ใม่ค่อยถนัด
joy
27 ก.ค. 47 เวลา 7:00:38 น. --> 202.183.150.163
  
   
ก็ผลักดันให้เป็น Fox ซะเลย.. เมื่อก่อนจะเขียน Fox ต้องหาข้อมูลเอง เรียนรู้เองเพราะไม่ค่อยมีตำรามากนัก
พอมี Board นี้ ก็มีแหล่งข้อมูลมากมายที่มาตอบคำถาม และผู้ที่ตอบคำถามส่วนใหญ่ ฝึกฝนมาแล้วอย่างช่ำชอง ผ่านการทดสอบ ทดลองมาแล้วอย่างดี.
x
27 ก.ค. 47 เวลา 8:34:13 น. --> 221.128.107.129
  
   
ผมมีนะแต่ไม่รู้เก็บไว้ตรงไหนเห็น แวบๆวันนั้น บังเอิญเก็บ Tools ไว้เยอะเดี๋ยวเจอแล้วจะเอามาให้ ตัวที่ทีอยู่ค่อนข้าง perfect นะใช้ได้ดีทีเดียว
SianFox
28 ก.ค. 47 เวลา 23:18:12 น. --> 202.28.26.23, w
  
   
ขอไปลองใช้ดูก่อนนะ ยังไม่แสดงความคิดเห็น
anunchee
31 ก.ค. 49 เวลา 7:46:32 น. --> 203.113.81.169,
  
   
ภาษา VBมีป่าวค่ะ
ดูแบบนี้ไม่เข้าใจเลย
Giffie
21 มิ.ย. 50 เวลา 0:30:26 น. --> 58.9.46.233, ww
  
ขอเชิญร่วมตอบคำถามครับ
 
ผู้ตอบ :
รหัสผ่าน :
รูปภาพ :
คำตอบ :