Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cần giúp đỡ chuyển số có thập phân ra chữ
#11
Mình thực hiện được rồi, do đặt tên modules trùng với tên Function là "TienDL" nên báo lỗi !
Chữ ký của jeck09nt Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#12
(16-09-16, 04:43 PM)maidinhdan Đã viết:
(16-09-16, 10:05 AM)ledangvan Đã viết: Cảm ơn Nguyen Hoang Diep
Tuy nhiên kết quả dịch ra chưa được theo ý muốn, ví dụ : 12800,4 kết quả dịch ra là : Mười hai nghìn tám trăm phẩy bốn mươi đồng.

Mình muốn kết quả dịch là : Mười hai nghìn, tám trăm phẩy bốn đồng. (Tách dấu phẩy và phần sau dấu phẩy thể hiện là phẩy bốn chứ không phải phẩy bốn mươi)

Rất mong bạn trợ giúp

Xin tham gia 1 bài:

Gửi anh Code này:


Mã PHP:
Public Function Docso2(Number As Double)
    Dim MyArray
    Dim Str 
As String
    
If Number >= 1E+18 Then Docso2 "#NUM!": Exit Function
    Str Format(Fix(Abs(Number)), "000000000000000000")
    MyArray = Array("không ""m" ChrW(7897) & "t ""hai ""ba ""b" ChrW(7889) & "n ""n" ChrW(259) & "m ""sáu ""b" ChrW(7843) & "y ""tám ""chín ""tri" ChrW(7879) & "u, ""ngàn, ""t" ChrW(7927) & ", ""tri" ChrW(7879) & "u, ""ngàn, """"tr" ChrW(259) & "m ""m" ChrW(432) & ChrW(417) & "i ""không " "m" ChrW(432) & ChrW(417) & "i" " không ""không " "m" ChrW(432) & ChrW(417) & "i""l" ChrW(7867), "m" ChrW(432) & ChrW(417) & "i" " không""m" ChrW(432) & ChrW(417) & "i""m" ChrW(432) & ChrW(417) & "i" " n" ChrW(259) & "m""m" ChrW(432) & ChrW(417) & "i" " l" ChrW(259) & "m""m" ChrW(7897) & "t " "m" ChrW(432) & ChrW(417) & "i""m" ChrW(432) & ChrW(7901) & "i""m" ChrW(432) & ChrW(417) & "i" " m" ChrW(7897) & "t""m" ChrW(432) & ChrW(417) & "i" " m" ChrW(7889) & "t""Âm "ChrW(273) & ChrW(7891) & "ng "" ph" ChrW(7849) & "y ""xu ")
    For 1 To Len(Str)
        If Left(Stri) <> And Mid(Str, (Int((2) / 3) - 1) * 13) <> 0 Then
            Docso2 
Docso2 MyArray(Mid(Stri1)) & MyArray(-(3) * (i Mod 3 0) - (15 i Mod 3) * (i Mod 3 <> 0))
        ElseIf And Mid(Str73) = And Left(Str6) <> 0 Then
            Docso2 
Docso2 MyArray(12)
        End If
    Next
    Docso2 
IIf(Number 0MyArray(0) & MyArray(30), "") & IIf(Fix(Number) <> 0Docso2 MyArray(30), "") & IIf(Fix(Number) <> And Fix(Number) <> NumberMyArray(31), "") & IIf(Fix(Number) <> NumberIIf(Abs(Number Fix(Number)) < 0.1""MyArray(Left(Right(Format(Abs(Number), "#.00"), 2), 1)) & MyArray(17)) & MyArray(Right(Format(Number"#.00"), 1)) & MyArray(32), "")
    Docso2 Replace(Trim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Docso2MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)), ", " MyArray(30), " " MyArray(30))), MyArray(30) & MyArray(31), Split(MyArray(30), " ")(0) & " " MyArray(31))
    If Number 0 Then Docso2 MyArray(29) & Docso2
    Docso2 
UCase(Left(Docso21)) & Mid(Docso22) & "."
End Function 

Ví dụ:
+ 100,000,500.25  :  Một trăm triệu, năm trăm đồng  phẩy hai mươi lăm xu.
+   10,250,000.51  :   Mười triệu, hai trăm năm mươi ngàn đồng  phẩy năm mươi mốt xu.
+          10,500.20  :   Mười ngàn, năm trăm đồng  phẩy hai mươi xu. ( Trường hợp .20 Xu không muốn hiện chữ " hai mươi xu" thì thay đoạn cuối cùng Mid(Docso2, 2) = > Mid(Docso2, 1) nhưng phải chèn thêm hàm if cho tương xứng khi bắt điều kiện

Chú ý dòng: MyArray = Array...  ( Mãng MyArray có tất cả 31 phần tử. thứ tự thì anh tự tùy biến dựa vào 31 phần tử này), Theo mình với đoạn code này nên thay phần tử thứ 30 (" ph" & ChrW(7849) & "y ") thành chữ "và " là hay nhất. Và nó sẽ cho kết quả như sau:

+ 1,005,000.13 : Một triệu, không trăm lẻ năm ngàn đồng mười ba xu.
+      12,800.40  : Mười hai ngàn, tám trăm đồng  bốn mươi xu.


Thân mến!

Bác Dân ơi, em xin phép lục lại bài này, code trên em sửa lại một chút để đọc thành mét vuông (không dùng chữ "đồng" và chữ "xu") nhưng bị vướng 1 chỗ là khi đọc số ví dụ như 100,25 thì đọc đúng là một trăm phẩy hai mươi lăm nhưng diện tích của em nhiều khi là VD: 156,8 thì nó đọc là một trăm năm mươi sáu phẩy tám mươi. Em muốn bỏ chữ mươi kia đi khi mà có 1 số thập phân, còn 2 số thập phân vẫn đọc nguyên như cũ. Mà không biết sửa vào chỗ nào. Bác sửa code lại hộ em được không
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#13
(07-11-16, 11:23 AM)vuthaiha90 Đã viết: Bác Dân ơi, em xin phép lục lại bài này, code trên em sửa lại một chút để đọc thành mét vuông (không dùng chữ "đồng" và chữ "xu") nhưng bị vướng 1 chỗ là khi đọc số ví dụ như 100,25 thì đọc đúng là một trăm phẩy hai mươi lăm nhưng diện tích của em nhiều khi là VD: 156,8 thì nó đọc là một trăm năm mươi sáu phẩy tám mươi. Em muốn bỏ chữ mươi kia đi khi mà có 1 số thập phân, còn 2 số thập phân vẫn đọc nguyên như cũ. Mà không biết sửa vào chỗ nào. Bác sửa code lại hộ em được không

Hàm này tôi không sửa nửa. Viết lại mắc công lắm.

Bạn muốn như ý bạn thì bạn dùng thêm hàm left/right để cắt lấy đoạn bạn cần nhé.

Tôi kèm cho bạn 33 phần tử trong Mang Arry cho bạn dể xem.
Trích dẫn:                                             Ví trí
Phần tử 1[không ]                            0
Phần tử 2[một ]                               1
Phần tử 3[hai ]                                 2
Phần tử 4[ba ]                                  3
Phần tử 5[bốn ]                               4
Phần tử 6[năm ]                               5
Phần tử 7[sáu ]                                6
Phần tử 8[bảy ]                                7
Phần tử 9[tám ]                                8
Phần tử 10[chín ]                             9
Phần tử 11[triệu, ]                            10
Phần tử 12[ngàn, ]                           11
Phần tử 13[tỷ, ]                                12
Phần tử 14[triệu, ]                            13
Phần tử 15[ngàn, ]                           14
Phần tử 16[]                                    15
Phần tử 17[trăm ]                             16
Phần tử 18[mươi ]                            17
Phần tử 19[không mươi không ]       18
Phần tử 20[không mươi]                   19
Phần tử 21[lẻ]                                  20
Phần tử 22[mươi không]                   21
Phần tử 23[mươi]                             22
Phần tử 24[mươi năm]                      23
Phần tử 25[mươi lăm]                       24
Phần tử 26[một mươi]                      25
Phần tử 27[mười]                             26
Phần tử 28[mươi một]                      27
Phần tử 29[mươi mốt]                      28
Phần tử 30[Âm ]                              29
Phần tử 31[đồng ]                            30
Phần tử 32[ phẩy ]                           31
Phần tử 33[xu ]                                32
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Viết phần quyền sử dụng tt1212 9 491 01-10-16, 12:26 AM
Bài mới nhất: maidinhdan
  Xin giúp đỡ về VBA Access ! vocan 12 659 11-07-16, 10:45 PM
Bài mới nhất: ongke0711
Photo [Thủ Thuật] Phần mềm Kiểm phiếu bầu cử đại biểu Quốc hội và HĐND các cấp trav2t 16 2,719 21-06-16, 03:37 PM
Bài mới nhất: tienpq
  Phân tích code thanhquyt 3 326 22-01-16, 12:05 AM
Bài mới nhất: thanhquyt
  [Thủ Thuật] Giúp em tính tồn cuối khi có thêm dữ liệu trả lại dao cụ thaoxinh 2 259 07-01-16, 05:16 PM
Bài mới nhất: ongke0711

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ