• Hàm đọc số dùng mã Unicode trong Access
  • RE: Hàm đọc số dùng mã Unicode trong Access

    caosieu > 08-04-13, 10:44 AM

    em có file acess cũng đang cần đọc số thành chữ nhưng mà làm hoài như mấy anh chỉ nhưng mà không làm được có anh nào chỉ em cái
  • RE: Hàm đọc số dùng mã Unicode trong Access

    Xuân Thanh > 08-04-13, 10:59 AM

    (08-04-13, 10:44 AM)caosieu Đã viết: em có file acess cũng đang cần đọc số thành chữ nhưng mà làm hoài như mấy anh chỉ nhưng mà không làm được có anh nào chỉ em cái

    Đọc lại bài #15 và bài #20 trong topic này nhé bạn
    Thân mến
  • RE: Hàm đọc số dùng mã Unicode trong Access

    MieuNu > 19-06-13, 04:41 PM

    Xuân Thanh ơi cho mình hỏi, mình đã áp dụng như bài của bạn và đã làm được. Nhưng có 1 vấn đề là trong table cột Viết bằng chữ thì không có số liệu. Vậy làm thế nào hiển thị số liệu?
    Mong bạn giải đáp giúp.
  • RE: Hàm đọc số dùng mã Unicode trong Access

    Xuân Thanh > 19-06-13, 05:10 PM

    Mã PHP:
    Private Sub SoTien_AfterUpdate()
        
    Me.SoTienBangChu DocSo(Me.SoTien)
    End Sub 

    Bạn thử xem, tôi chưa test
    Thân mến

    P/S : Trong table phải có 2 trường là SoTien và SoTienBangChu. Cả 2 trường này đều được thể hiện trên form và lấy nguồn từ table
  • RE: Hàm đọc số dùng mã Unicode trong Access

    MieuNu > 19-06-13, 05:27 PM

    (19-06-13, 05:10 PM)Xuân Thanh Đã viết:
    Mã PHP:
    Private Sub SoTien_AfterUpdate()
        
    Me.SoTienBangChu DocSo(Me.SoTien)
    End Sub 

    Bạn thử xem, tôi chưa test
    Thân mến

    P/S : Trong table phải có 2 trường là SoTien và SoTienBangChu. Cả 2 trường này đều được thể hiện trên form và lấy nguồn từ table

    Không ra bạn à, trong report cũng không thể hiện số tiền bằng chữ luôn.
    Mình đã chép công thức DocSo vào 1 modul rồi trong report chỗ text box đã đánh Docso([txtSotien]) phần control source, cũng không ra
  • RE: Hàm đọc số dùng mã Unicode trong Access

    MieuNu > 19-06-13, 05:56 PM

    Mình làm ra rồi, phải cho thêm hàm sum nó mới chịu ra
  • RE: Hàm đọc số dùng mã Unicode trong Access

    Xuân Thanh > 20-06-13, 12:28 PM

    Tại bạn nói không rõ ý thôi. Cái textbox mà bạn nói là tính tổng tiền thế nên phải dùng SUM thui
    Thân mến
  • RE: Hàm đọc số dùng mã Unicode trong Access

    tranthanhan1962 > 03-11-14, 05:11 AM

    Có một cách tương đối đơn giản vì tôi nghĩ bạn nào cũng có hàm đọc số VNI. Chọn đại một hàm đọc số VNI nào bạn thích nhất, xong xử dụng Vietnamese keyboard của windows để gõ lại các ký tự tiếng Việt theo kiểu gõ của Windows. Khi gõ kiểu này thì trong module không bị lỗi font và khi xuất ra form hay report, font unicode tiếng việt vẫn không bị lỗi. Nhớ là phải tắt hết các bộ gõ tiếng Việt khác khi làm việc này. Khi copy code này để chép sang nơi khác cũng phải tắt hết các bộ gõ tiếng việt khác, nếu không khi dán code vào sẽ bị lỗi Font ngay. Cách này cũng có thể áp dụng cho các msgbox hay inputbox để không lỗi font Unicode tiếng việt. Có đều ô nhập liệu của Iputbox muốn không bị lỗi Font vẫn phải sử dụng cách gõ này. Còn nếu sử dụng các bộ gõ Unikey, Vietkey...thì đều lỗi Font cả
  • RE: Hàm đọc số dùng mã Unicode trong Access

    thiennamlong > 23-03-16, 11:45 PM

    (03-11-14, 05:11 AM)tranthanhan1962 Đã viết: Có một cách tương đối đơn giản vì tôi nghĩ bạn nào cũng có hàm đọc số VNI. Chọn đại một hàm đọc số VNI nào bạn thích nhất, xong xử dụng Vietnamese keyboard của windows để gõ lại các ký tự tiếng Việt ...

    Gửi các bạn hàm đọc số mình sưu tầm rồi chuyển sang mã unicode:

    hàm đọc VND:
    Mã:
    Public Function VND(BaoNhieu) '1
    Dim KetQua, SOTIEN, NHOM, Chu, Dich, S1, S2, S3 As String
    Dim I, J, Vitri As Byte, S As Double
    Dim Hang, DOC, DEM
    If BaoNhieu = 0 Then
    KetQua = "Không đồng"
    Else
    If Abs(BaoNhieu) > 1E+15 Then
    KetQua = "Số Qúa Lớn"
    Else
    If BaoNhieu < 0 Then
    KetQua = "Trừ" & Space(1)
    Else
    KetQua = Space(0)
    End If
    SOTIEN = Format(Abs(BaoNhieu), "###############")
    SOTIEN = Right(Space(15) & SOTIEN, 15)
    Hang = Array("None", "trăm", "mươi", "gì đó")
    DOC = Array("None", "nghìn tỷ,", "tỷ,", "triệu,", "nghìn,", "đồng.")
    DEM = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
    For I = 1 To 5
    NHOM = Mid(SOTIEN, I * 3 - 2, 3)
    If NHOM <> Space(3) Then
    Select Case NHOM
    Case "000"
    If I = 5 Then
    Chu = "đồng chẵn." & Space(1)
    Else
       Chu = Space(0)
    End If
    Case Else
    S1 = Left(NHOM, 1)
    S2 = Mid(NHOM, 2, 1)
    S3 = Right(NHOM, 1)
    Chu = Space(0)
    Hang(3) = DOC(I)
    For J = 1 To 3
    Dich = Space(0)
    S = Val(Mid(NHOM, J, 1))
    If S > 0 Then
    Dich = DEM(S) & Space(1) & Hang(J) & Space(1)
    End If
    Select Case J
    Case 2 And S = 1
    Dich = "mười" & Space(1)
    Case 3 And S = 0 And NHOM <> Space(2) & "0"
    Dich = Hang(J) & Space(1)
    Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
    Dich = "l" & Mid(Dich, 2)   'Ký tự en lờ
    Case 2 And S = 0 And S3 <> "0"
    If (S1 >= "l" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _
    (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then
    Dich = "linh" & Space(1)
       End If
                    Case 1 And S = 0 And S3 <> "0"
                     If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _
                     (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then
                     Dich = "không trăm" & Space(1)
       End If
       Case 1 And S = 0 And S3 = "0"
                     If (S1 >= "1" And S2 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _
                     (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then
                     Dich = "không trăm" & Space(1)
                     End If
       End Select
    Chu = Chu & Dich
    Next J
    End Select
    Vitri = InStr(1, Chu, "mươi mốt", 1)
    If Vitri > 0 Then Mid(Chu, Vitri, 9) = "mươi mốt"
    KetQua = KetQua & Chu
    End If
    Next I
    End If
    End If
    VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
    End Function

    Hàm đọc USD:
    Mã:
    Public Function USD(BaoNhieu) '2
    'Dollar mỹ'
    Dim KetQua, SOTIEN, NHOM, Chu, Dich, S1, S2, S3 As String
    Dim I, J, Vitri As Byte, S As Double
    Dim Hang, DOC, DEM
    If BaoNhieu = 0 Then
    KetQua = "Không đồng"
    Else
    If Abs(BaoNhieu) > 999999999999.99 Then
    KetQua = "Số Qúa Lớn"
    Else
    If BaoNhieu < 0 Then
    KetQua = "Trừ" & Space(1)
    Else
    KetQua = Space(0)
    End If
    SOTIEN = Format(Abs(BaoNhieu), "###########0.00")
    SOTIEN = Right(Space(12) & SOTIEN, 15)
    Hang = Array("None", "trăm", "mươi", "gì đó")
    DOC = Array("None", "tỷ", "triệu", "nghìn", " dollar mỹ", "cent")
    DEM = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
    For I = 1 To 5
    NHOM = Mid(SOTIEN, I * 3 - 2, 3)
    If NHOM <> Space(3) Then
    Select Case NHOM
    Case "000"
    If I = 4 Then
    Chu = "dollar mỹ" & Space(1)
    Else
       Chu = Space(0)
    End If
       Case ".00"
    If I = 5 Then
    Chu = "chẵn" & Space(0)
    Else
       Chu = Space(0)
    End If
    Case Else
    S1 = Left(NHOM, 1)
    S2 = Mid(NHOM, 2, 1)
    S3 = Right(NHOM, 1)
    Chu = Space(0)
    Hang(3) = DOC(I)
    For J = 1 To 3
    Dich = Space(0)
    S = Val(Mid(NHOM, J, 1))
    If S > 0 Then
    Dich = DEM(S) & Space(1) & Hang(J) & Space(1)
    End If
    Select Case J
    Case 2 And S = 1
    Dich = "mười" & Space(1)
    Case 3 And S = 0 And NHOM <> Space(2) & "0"
    Dich = Hang(J) & Space(1)
    Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
    Dich = "l" & Mid(Dich, 2)   'Ký tự en lờ
    Case 2 And S = 0 And S3 <> "0"
    If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Then
    Dich = "linh" & Space(1)
    End If
           
           W = Mid(SOTIEN, 14, 2)
           If W > "0" And I = 5 Then
           Dich = "lẻ" & Space(1)
           End If

           Case 1 And S = 0 And S3 <> "0"
           If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then
           Dich = "không trăm" & Space(1)
           End If

    Case 1 And S = 0 And S3 = "0"
           If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Then
           Dich = "không trăm" & Space(1)
           End If

    End Select

    Chu = Chu & Dich
    Next J
    End Select
    Vitri = InStr(1, Chu, "mươi mốt", 1)
    If Vitri > 0 Then Mid(Chu, Vitri, 9) = "mươi mốt"
    KetQua = KetQua & Chu
    End If
    Next I
    End If
    End If
    USD = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
    End Function

    [Hình: 25932396821_db64ea6004_o.jpg]

    Để sử dụng đơn giản là bạn cứ mở một module ra rồi dán code trên vào. Trước khi thực hiện cần chọn ngôn ngữ tiếng Việt cho máy tính như bài sau:
    http://thuthuataccess.com/forum/post-302...l#pid30265
    File Demo
    Bổ xung hình ảnh về phần thiiết lập ngôn ngữ cho máy tính:
    [Hình: 25560847924_56a2ba5399_o.jpg]