Đổi số thành chữ trong Access

Thảo luận trong 'Ứng dụng Access' bắt đầu bởi seachanges, 3 Tháng tư 2007.

15,318 lượt xem

  1. seachanges

    seachanges Thành viên sơ cấp

    Bài viết:
    3
    Đã được thích:
    0
    Nơi ở:
    tphcm
    Mình có một đoạn mã nguồn đổi số thành chữ trong access nhưng khi biến đổi thường không chính xác ở hàng số lẻ. Bạn nào có đoạn mã nguồn sử dụng ổn định chia sẽ cho mình với nhé. Thanks
     
    #1
  2. dongnamnb

    dongnamnb Thành viên hoạt động

    Bài viết:
    42
    Đã được thích:
    0
    Giới tính:
    Nam
    Nơi ở:
    Thanh Hóa
    doc so trong access

    Bạn chép cả 3 hàm này vào rồi gọi DocSo(n) là được
    'C¸c hµm dïng ®äc sè
    '==================================================
    Function DocSo(X As String) As String
    Dim DonVi, Am As Boolean
    DonVi = Array("", "ngh×n ", "triÖu ", "tû ")
    Dim So As String, Chuoi As String, Temp As String, X1 As String, c As Byte, l As Byte, k As Byte, ChuoiDem As String
    Dim id As Byte
    X = Format(val(X), "#"): Am = False
    If Len(X) > 18 Then
    DocSo = "Sè qu¸ lín"
    Exit Function
    End If
    If Left(X, 1) = "-" Then
    Am = True
    X = Right(X, Len(X) - 1)
    End If
    If X = 0 Then
    DocSo = "Kh«ng"
    Exit Function
    End If
    'Xu ly doc nhung so >100 ty
    l = Len(X)
    c = Fix(l / 9)
    If l Mod 9 = 0 Then
    k = 9
    Else
    k = l Mod 9
    End If
    X1 = Left(X, k)
    X = Right(X, l - k)
    Do Until X1 = ""
    id = 0
    Do While (X1 <> "")
    If Len(X1) <> 0 Then
    So = Lay3so(X1)
    X1 = Left(X1, Len(X1) - Len(So))
    Temp = Tinh3so(So)
    So = Temp
    If So <> "" Then
    Temp = Temp + DonVi(id)
    Chuoi = Temp + Chuoi
    End If
    id = id + 1
    End If
    Loop
    l = Len(X)
    c = Fix(l)
    If (l <> 0) And (l Mod 9) = 0 Then
    k = 9
    Else
    k = l Mod 9
    End If
    X1 = Left(X, k)
    X = Right(X, l - k)
    ChuoiDem = ChuoiDem & Chuoi
    Chuoi = ""
    If X = "" And X1 <> "" Then ChuoiDem = ChuoiDem & "tû "
    Loop
    ChuoiDem = IIf(Am, "¢m " & Trim$(ChuoiDem), UCase(Left(ChuoiDem, 1)) & Right(ChuoiDem, Len(ChuoiDem) - 1))
    DocSo = ChuoiDem
    End Function
    Function Lay3so(X As String) As String
    Dim So As String
    If Len(X) >= 3 Then
    So = Right(X, 3)
    Else
    So = Right(X, Len(X))
    End If
    Lay3so = So
    End Function
    Function Tinh3so(X As String) As String
    Dim Chuoi As String, Temp As String
    Dim Flag0 As Boolean, Flag1 As Boolean
    Temp = X
    Dim KySo
    KySo = Array("kh«ng", "mét", "hai", "ba", "bèn", "n¨m", "s¸u", "b¶y", "t¸m", "chÝn")
    If Len(X) = 3 Then
    If X <> "000" Then 'If Left(x, 1) <> 0 Then
    Chuoi = KySo(Left(X, 1)) & " tr¨m "
    End If
    X = Right(X, 2)
    End If
    If Len(X) = 2 Then
    If Left(X, 1) = 0 Then
    If Right(X, 1) <> 0 Then
    Chuoi = Chuoi & "linh "
    End If
    Flag0 = True
    Else
    If Left(X, 1) = 1 Then
    Chuoi = Chuoi & "m­êi "
    Else
    Chuoi = Chuoi & KySo(Left(X, 1)) & " m­¬i "
    Flag1 = True
    End If
    End If
    X = Right(X, 1)
    End If
    If Right(X, 1) <> "0" Then
    If Left(X, 1) = "5" And Not Flag0 Then
    If Len(Temp) = 1 Then
    Chuoi = Chuoi & "n¨m "
    Else
    Chuoi = Chuoi & "l¨m "
    End If
    Else
    If Left(X, 1) = "1" And Not (Not Flag1 Or Flag0) And Chuoi <> "" Then
    Chuoi = Chuoi & "mèt "
    Else
    Chuoi = Chuoi & KySo(Left(X, 1)) & " "
    End If
    End If
    End If
    Tinh3so = Chuoi
    End Function
     
    #2
  3. ZRComic

    ZRComic Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    Quảng Nam
    Tiện có câu hỏi này . Mình muốn đoạn hàm này có thể đọc ra tiếng Việt Unicode thì làm sao . Lâu nay theo mình biết thì chỉ hiển thị được tiếng việt khi dùng font VNI
     
    #3
  4. dongnamnb

    dongnamnb Thành viên hoạt động

    Bài viết:
    42
    Đã được thích:
    0
    Giới tính:
    Nam
    Nơi ở:
    Thanh Hóa
    Để đọc ra tiếng việt Unicode thì cách đơn giản nhất là bạn bật chế độ gõ Unicode của chương trình gõ tiếng Việt, sau đó tìm tất cả các chữ Việt có dấu được viết trong hàm rồi gõ lại bằng Unicode.
    Lưu ý: Nếu bạn chuyển sang Unicode thì khi đọc số ở report hay form bạn cũng phải chọn font Unicode thì mới có thể đọc được.
    Chúc thành công!
     
    #4
  5. seachanges

    seachanges Thành viên sơ cấp

    Bài viết:
    3
    Đã được thích:
    0
    Nơi ở:
    tphcm
    Football Khi chuyển sang chế độ Unicode trong phần mềm xử lý tiếng Việt mình gõ kiểu Vni trong Modules của access vẫn không hiển thị tiếng việt được bạn ơi. Không biết còn thêm thao tác nào không?
     
    #5
  6. smallgent

    smallgent Thành viên sơ cấp

    Bài viết:
    55
    Đã được thích:
    1
    Nơi ở:
    HCMC
    Miễn là đang để chế độ gõ tiếng Việt còn nó hiện hay kô hiện trong cái hàm thì kệ nó. Quan trọng là sau đó bạn nhớ chỉnh lại font chữ của đoạn "số tiền bằng chữ" là font unicode là ok. Không ra thì cho mình biết nhé.
     
    #6
  7. thanhtruc09022003

    thanhtruc09022003 Thành viên sơ cấp

    Bài viết:
    1
    Đã được thích:
    0
    Nơi ở:
    Tay Ninh
    minh muon hoi cach add chuobng trinh soi so thanh chu trong access vao access

    xin chi giup minh cach add chuong trinh doi so thanh chu trong access vao access
    minh cam on nhieu
     
    #7
  8. phuonglam1405

    phuonglam1405 Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    tphcm
    Ðề: doc so trong access

    Xin hỏi,

    Mình muốn thêm chữ đồng vào cuối thì phải làm như thế nào ạ?

    Cảm ơn dongnamnb nhiều nhé
     
    #8
  9. Momambatchuoc

    Momambatchuoc Thành viên hoạt động

    Bài viết:
    9
    Đã được thích:
    0
    Nơi ở:
    Phuong Quan Trieu, TPTN
    Ðề: doc so trong access

    Cảm ơn bạn đã hướng dẫn. Nhưng mình thấy rằng hàm này không đọc được các số sau dấu phẩy. Bạn có thể cho mình đoạn code đọc được cả số sau dấu phẩy không? Nếu có thể thì gửi cho mình theo địa chỉ: HongHJC@gmail.com nhé. Cảm ơn bạn rất nhiều!
     
    #9

Chia sẻ trang này