-
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
-
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
Để 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: