Đọc số thập phân ra tiếng việt trên Access

blackangelnt

Sơ cấp
Hix, mình đã thử các hàm trên forum mà hàm nào cũng bị sai hết

Mình bị trường hợp số : 10,05

Hàm thì đọc là : Mười
Hàm thì lại đọc là : Mười tấn năm >"<

Trong khi đó chính xác phải là : Mười tấn không năm hoặc là Mười chấm không năm .

Không biết ai gặp trường hợp này rồi thì giúp mình với :(
 
Anh (chị) đang dùng hàm nào thế? up hàm đó lên đi e chỉnh sửa lại cho.
 
Đọc số thập phân trên Access

Chào Bạn, mình gửi bạn hàm sau bạn dùng thử nhe
co gì liên lac voi minh viettienedu@gmail.com

Function SO_CHAR(Number As Variant) As String

ReDim CACH(1 To 6) As String, MOTSO(1 To 10) As String
Dim NGUYEN As String, LE As String, KQ As String, i As String, M As String
Dim j As Variant, K As Variant, L As Variant, KQdai As Integer, Chuoi As String, T, U
'Gan gia tri cho tung phan tu cua mang MOTSO(1 to 10)
MOTSO(1) = " moät"
MOTSO(2) = " hai"
MOTSO(3) = " ba"
MOTSO(4) = " boán"
MOTSO(5) = " naêm"
MOTSO(6) = " saùu"
MOTSO(7) = " baûy"
MOTSO(8) = " taùm"
MOTSO(9) = " chín"
'Gan gia tri cho tung phan tu cua mang CACH(1 to 6)
CACH(1) = ""
CACH(2) = " ngaøn"
CACH(3) = " trieäu"
CACH(4) = " tyû"
CACH(5) = " ngaøn"
CACH(6) = " trieäu"
If Number = 0 Or IsNull(Number) Then 'Neu so tien la khong. Ham tra ve
SO_CHAR = " Zero." 'chuoi ky tu "Khong dong chan"
Exit Function 'va cham dut Ham
End If
'Dinh dang chuoi so, cat khoan trang va doi thanh chuoi
Chuoi = LTrim(Format$(Number, "################.00"))
NGUYEN = Left(Chuoi, Len(Chuoi) - 3) 'Cat lay phan nguyen cua chuoi so
LE = Right(Chuoi, 2) 'Cat lay phan le cua chuoi so
KQ = "" 'Khoi tao bien KQ (ket qua)
L = 1 'Khoi tao bien dem l
Do While Len(NGUYEN) > 0 'Thuc hien vong lap cat chuoi
j = "" 'NGUYEN cho den khi rong.
M = ""
If Len(NGUYEN) > 3 Then 'Neu chieu dai cua chuoi NGUYEN lon
i = Right(NGUYEN, 3) 'hon 3,cat lay 3 ky tu gan vao i
NGUYEN = Left(NGUYEN, Len(NGUYEN) - 3) 'NGUYEN tru 3 ky tu da cat
Else
i = Right("00" & NGUYEN, 3) 'Neu chieu dai NGUYEN nho hon 3,
NGUYEN = "" 'cong them ben trai cac ky tu "0"
End If 'cho du 3 va gan NGUYEN bang rong

'Bat dau xu ly tung so trong chuoi con i(l)=(###)

If i <> "000" Then

'Xu ly so thu nhat trong chuoi 3 ky tu i

K = Val(Left(i, 1))
If K = 0 Then
If NGUYEN <> "" Then
If L > 1 Then
j = j & " khoâng traêm"
End If
End If
Else
j = MOTSO(K) & " traêm"
End If

'Xu ly so thu hai trong chuoi 3 ky tu i

K = Val(Mid(i, 2, 1))
If K > 0 Then
If K = 1 Then
j = j & " möôøi"
Else
j = j & MOTSO(K) & " möôi"
End If
Else
If Val(Mid(i, 2, 1)) = 0 Then

If Val(Right(i, 1)) <> 0 And Val(Left(i, 1)) <> 0 Then
j = j & " leõ"
End If

End If
End If

'Xu ly so thu ba trong chuoi 3 ky tu i

K = Val(Right(i, 1))
If K > 0 Then
If K = 1 Then
If Val(Mid(i, 2, 1)) <> 0 And Val(Mid(i, 2, 1)) <> 1 Then
j = j & " moát"
Else
j = j & " moät"
End If
Else
If K = 5 And Val(Mid(i, 2, 1)) <> 0 Then
j = j & " laêm"
Else
j = j & MOTSO(K)
End If
End If
Else
j = j & ""
End If
j = j & CACH(L) & IIf(L > 1, ",", "")
'Else
' j = j & ""
End If
L = L + 1
KQ = j & KQ
Loop ' Ket thuc vong lap thu l

'Xu ly phan so le
If KQ = "" Then
KQ = " khoâng"
End If
If LE = "00" Then
M = " ."
Else
T = Val(Left(LE, 1))
U = Val(Right(LE, 1))
If T = 0 Then
M = " taán, leû" & MOTSO(U) & "."
Else
If T = 1 Then
If U = 5 Then
M = " taán, möôøi laêm ."
End If
If U = 0 Then
M = " taán,leû möôøi."
End If
If U <> 0 And U <> 5 Then
M = " taán, Möôøi" & MOTSO(U) & " ."
End If
Else
If U = 5 Then
M = " taán," & MOTSO(T) & " möôi laêm ."
End If
If U = 0 Then
M = " taán," & MOTSO(T) & " möôi ."
End If
If U <> 0 And U <> 5 Then
M = " taán," & MOTSO(T) & " möôi" & MOTSO(U) & " ."
End If
End If
End If
End If
Chuoi = Trim(KQ)
KQdai = Len(Chuoi)
Chuoi = IIf(Right(Chuoi, 1) = ",", Left(Chuoi, KQdai - 1), Chuoi)
Chuoi = LTrim(Chuoi + M)
KQdai = Len(Chuoi)
SO_CHAR = UCase(Left(Chuoi, 1)) + Right(Chuoi, KQdai - 1) 'Ket qua cuoi cung cua ham
End Function
 
Back
Top