台灣最大程式設計社群網站
線上人數
1402
 
會員總數:245799
討論主題:189428
歡迎您免費加入會員
討論區列表 >> ACCESS >> 如何把數字轉換成文字
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何把數字轉換成文字
價值 : 10 QP  點閱數:15040 回應數:48
樓主

阿倫
門外漢
0 10
114 15
發送站內信

大家好
想請大家幫小弟一個忙
就是我撰寫一個ACCESS的資料庫
有一個欄位是金額(數字)
我想在列印報表時能夠將它轉換成大寫文字
例如"1230"在列出報表時他會列出"******壹貳叁零"
共十個位子 如果沒用到的位子補*號
請問如何撰寫這個程式
謝謝

搜尋相關Tags的文章: [ 數字轉換成文字 ] ,
本篇文章發表於2005-11-26 18:11
1樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
自訂一個函數ConvertC來使用即可

把下列程式加到模組
Function ConvertC(num_org, Optional dollar As Boolean, Optional cate) '數字轉換大寫金額
Dim I
Dim result
Dim cd(0 To 3) '宣告單位陣列
Dim cd1(0 To 2)
num_org = Int(num_org)
cd1(1) = "萬"
cd1(2) = "億"
cd(0) = ""
If IsMissing(cate) Then cate = 1
If cate = 1 Then
cd(1) = "拾"
cd(2) = "佰"
cd(3) = "仟"
ElseIf cate = 2 Then
cd(1) = "十"
cd(2) = "百"
cd(3) = "千"
End If
For I = 2 To Len(num_org) + 1 '轉換為國字,但無單位
If cate = 1 Or IsMissing(cate) Then
Select Case Mid(CStr(num_org), I - 1, 1)
Case Is = 1:
X = "壹"
Case Is = 2:
X = "貳"
Case Is = 3:
X = "參"
Case Is = 4:
X = "肆"
Case Is = 5:
X = "伍"
Case Is = 6
X = "陸"
Case Is = 7:
X = "柒"
Case Is = 8:
X = "捌"
Case Is = 9:
X = "玖"
Case Is = 0:
X = "零"
End Select
ElseIf cate = 2 Then
Select Case Mid(CStr(num_org), I - 1, 1)
Case Is = 1:
X = "一"
Case Is = 2:
X = "二"
Case Is = 3:
X = "三"
Case Is = 4:
X = "四"
Case Is = 5:
X = "五"
Case Is = 6
X = "六"
Case Is = 7:
X = "七"
Case Is = 8:
X = "八"
Case Is = 9:
X = "九"
Case Is = 0:
X = "O"
End Select
End If
x1 = x1 & X
Next I
m = (Len(x1) \ 4)
k = (Len(x1) \ 4)
m1 = Len(x1) Mod 4
If m1 <> "" Then
x2 = Left(x1, m1)
u = 1
GoSub po
result = J
End If
For I = 1 To Len(x1) Step 4
m = m - 1
x2 = Mid(x1, I + m1, Len(x1) - (m * 4) - m1)
If Len(x2) > 4 Then
x2 = Left(x2, 4)
End If
u = 1
GoSub po
result = result & J
Next
If dollar = True Then
ConvertC = result & "元 整"
Else
ConvertC = result
End If
Exit Function '中斷程式
po:
J = ""
L = ""
For u = 0 To Len(x2) - 1 '加上單位
If Mid(x2, Len(x2) - u, 1) <> "零" Then
L = Mid(x2, Len(x2) - u, 1) & cd(u)
J = L & J
ElseIf Mid(x2, Len(x2) - u, 1) = "零" And Left(J, 1) <> "零" Then
J = "零" & J
End If
Next u
If Right(J, 1) = "零" Then '若最後一位為零,則去掉
J = Left(J, Len(J) - 1)
End If
If J <> "" Then
J = J & cd1(m)
End If
Return
End Function
本篇文章回覆於2005-11-27 00:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿倫
檢舉此回應
謝謝您
我已經看到你提供的程式了
謝謝
本篇文章回覆於2005-11-27 10:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

阿倫
檢舉此回應
對不起
我剛剛試了
還是不行
可以大概說一下如何設定嗎?
謝謝

因為我的金額欄位是數字
而你說的程式設定一模組
需要再作甚動作嗎
我一直測不出結果
謝謝
本篇文章回覆於2005-11-27 11:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
模組只是設定函數而已,當然須要在表單驅動它,如下:
Me![完整金額] = ConvertC((Me![總計]), True)
本篇文章回覆於2005-11-28 00:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

阿倫
檢舉此回應
版主你好
因為我還是沒辦法完成他
是否可以把我的範例寄給你
你幫我該一下
可以嗎?
謝謝
本篇文章回覆於2005-11-28 20:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
我並非版主,我的e-mail:lin27850016@yahoo.com.tw
本篇文章回覆於2005-11-29 00:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
資料庫已寄回
本篇文章回覆於2005-11-29 17:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

阿倫
檢舉此回應
我已經收到你回覆的檔案了
謝謝你
本篇文章回覆於2005-11-29 17:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應


檢舉此回應
TO tungta大大:
首先感謝你上次寄範例給我,非常謝謝。
這次又碰上了一個問題,困擾了許久,與這篇文章碰到的問題一樣,
也就是怎麼把數字轉換成中文大寫再列印出來,我試了上面你教的方
法,但不了解如何在表單驅動它,也試了 Me![完整金額] = ConvertC((Me![總計]), True)
但就是沒用,而且還出現"不正確的外部程序"這個訊息視窗,到底該怎
麼辦,勞煩你幫小妹我解答一下,感激不盡^^
本篇文章回覆於2006-07-05 14:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
可否把資料庫寄來看看:lin27850016@yahoo.com.tw
本篇文章回覆於2006-07-05 15:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
資料庫寄回
1.程式碼要放在模組,才方便所有的表單與報表引用
2.引用程式碼時的語法要放在真正要用的地方,例如報表,要放在該欄位所在位置的On Format事件;若是表單,要放在表單的On Current事件
3.發票總金額的語法正確,但是資料表或查詢(你是用表單)與欄位名稱(要放入所有用來計算的)錯誤,至於為何用查詢呢,因為這樣才會包括產品單價與數量兩個欄位
本篇文章回覆於2006-07-06 15:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

song
檢舉此回應
大大們:
Q1:
我的問題也是數字要改成國字,但是,為「生日」資料
但是為配合套印,分為「年」「月」、「日」各別抓取列印,(目前已有簡單抓出來查詢欄)
另外:較特殊的是20→廿、21→廿一…;30→卅、31→卅一以此類推

Q2:
再來:就是上面的模組有嘗試套入(模組:已全copy入。ConvertC巨集:執行RunCode,函數名稱:ConvertC) 新手上路,在表單或報表中還是測不出來,

Private Sub Report_Open(Cancel As Integer)
Me![國日] = ConvertC((Me![日]), True)
End Sub
→錯誤訊息:應為變數或程序,而非模組??

再麻煩大大們!感恩!!
本篇文章回覆於2006-12-04 11:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

song
檢舉此回應
各位大大:
上面#12 song 所提的問題Q2已解決

但Q1:還是測不出來,如何將「數字轉文字」
10→十、11→十一…;20→廿、21→廿一…;30→卅、31→卅一

再追加Q3:測試中,若資料為空白,會出現「錯誤」,如何將空白資料改為「吉」
報表中「文字方塊」=IIf([月]=Null,"吉",ConvertC([月],True))→出現錯誤!?

新學不懂,煩請幫忙,感恩!
本篇文章回覆於2006-12-05 10:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

song
檢舉此回應
感謝各位大大:
問題已經解決,測試ok!!
本篇文章回覆於2006-12-05 22:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

ANDT
檢舉此回應
如何轉變出為整數,如1200元轉為壹仟貳佰元(不是:壹仟貳佰零拾零角元)
本篇文章回覆於2006-12-15 08:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.