Đánh giá chủ đề:
  • 4 Votes - 3.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Hàm đọc số dùng mã Unicode trong Access
#21
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
Chữ ký của caosieu Xin chào, mình là caosieu, Tham gia http://thuthuataccess.com/forum từ ngày 08-04 -13.
Reply
Những người đã cảm ơn
#22
(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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#23
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.
Chữ ký của MieuNu Xin chào, mình là MieuNu, Tham gia http://thuthuataccess.com/forum từ ngày 03-06 -13.
Reply
Những người đã cảm ơn
#24
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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#25
(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
Chữ ký của MieuNu Xin chào, mình là MieuNu, Tham gia http://thuthuataccess.com/forum từ ngày 03-06 -13.
Reply
Những người đã cảm ơn
#26
Mình làm ra rồi, phải cho thêm hàm sum nó mới chịu ra
Chữ ký của MieuNu Xin chào, mình là MieuNu, Tham gia http://thuthuataccess.com/forum từ ngày 03-06 -13.
Reply
Những người đã cảm ơn
#27
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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#28
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ả
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#29
(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]
Chữ ký của thiennamlong Xin chào, mình là thiennamlong, Tham gia http://thuthuataccess.com/forum từ ngày 22-06 -14.
Reply
Những người đã cảm ơn phuc_thanhtien


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] [Demo-Phần 2] Tạo khóa bản quyền (Có hạn dùng) maidinhdan 13 408 19-08-18, 12:01 AM
Bài mới nhất: maidinhdan
  [Thủ Thuật] DeMo dùng ADODB để kết nối dữ liệu Excel và Access Xuân Thanh 3 206 15-08-18, 11:30 PM
Bài mới nhất: NguyenDungAnh
  DBEngine và Workspace trong việc truyền tải dữ liệu giữa hai Database Xuân Thanh 8 262 12-08-18, 08:29 PM
Bài mới nhất: Xuân Thanh
  [Help] Giá trị trùng trong report vulhu06 1 532 14-07-18, 09:03 PM
Bài mới nhất: hoaqldd33
  Tắt Security warning của Access Noname 4 6,494 14-07-18, 08:14 PM
Bài mới nhất: hoaqldd33

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ơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line