Go to top

Trang chủ  » Thiết kế website giá rẻ

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

Do môi trường VBA chưa hỗ trợ Unicode đầy đủ nên việc thiết lập hàm đọc số tiếng Việt với mã (font) Unicode trong Access cũng như Excel có khó khăn. Bài viết này giới thiệu một cách thiết lập hàm đọc số dùng font Unicode trong Access (bạn cũng có thể áp dụng trong Excel, VB...). Các bước thực hiện như sau:

1. Mở CSDL Access.

2. Tạo một form đặt tên là FormTam, trên FormTam tạo hai label:

LabSo, nhập chuỗi: “không một hai ba bốn năm sáu bảy tám chín mốt lẻ lăm mươi mười trăm ”, cuối chuỗi có một khoảng trắng.

LabDonvi, nhập chuỗi: “đồng. nghìn triệu tỷ”, cuối chuỗi cũng có khoảng trắng.

3. Trong Module, nhấn New để tạo mới một module với tên mặc định là Module1. Sau đó nhấn Design để vào cửa sổ soạn code và nhập đoạn mã sau:

Khai báo 2 biến toàn cục là 2 mảng chứa chuỗi ký tự số và chuỗi đơn vị được lấy từ LabSo và LabDonvi thông qua thủ tục Docchu và Docdonvi.

Public Solay(0 To 15) As String

Public Donvilay(0 To 4) As String

Private Sub Docchu() Lấy chuỗi chữ số từ LabSo đặt vào mảng Solay

Dim tp, Stp, ii

ii = 0: tp = Form_FormTam.LabSo.Caption

Stp = InStr(tp, “ “)

Do While Stp <> 0

Solay(ii) = Left(tp, Stp)

tp = Right(tp, Len(tp) - Stp)

1Stp = InStr(tp, “ “)

ii = ii + 1

Loop

End Sub

Private Sub Docdonvi() Lấy chuỗi đơn vị từ LabDonvi đặt vào mảng Donvilay

Dim tp, Stp, ii

ii = 0: tp = Form_FormTam.LabDonvi.Caption

Stp = InStr(tp, “ “)

Do While Stp <> 0

Donvilay(ii) = Left(tp, Stp)

tp = Right(tp, Len(tp) - Stp)

Stp = InStr(tp, “ “)

ii = ii + 1

Loop

End Sub

Tạo hàm đọc số:

Public Function DocVND(Sodoc As String) As String

If Len(Sodoc) > 12 Then

DocVND = “So qua lon qua hang tram ty. Hay xem lai!”
Exit Function
End If
Sodoc = Round(Sodoc, 0)
Dim Cht As String
Dim fg0 As Boolean
Dim fg1 As Boolean
Dim So As String
Dim ch As String
Dim tp As String
Dim i As Byte
Dim dv
Dim chs

Docchu Gọi hàm đọc chữ số
chs = Solay
Docdonvi Gọi hàm đọc đơn vị
dv = Donvilay
Do While Sodoc <> “”
Cht = “”
If Len(Sodoc) <> 0 Then
If (Len(Sodoc) >= 3) Then
So = Right(Sodoc, 3)
Else
So = Right(Sodoc, Len(Sodoc))
End If
Sodoc = Left(Sodoc, Len(Sodoc) - Len(So))
If Left(So, 1) = “0” And Mid(So, 2, 1) = “0” And Right(So, 1) = “0” Then
ch = ch
Else
If Len(So) = 3 Then
If Left(So, 1) <> “ “ Then
Cht = chs(Left(So, 1)) + chs(15)
End If
So = Right(So, 2)
End If
If Len(So) = 2 Then
If Left(So, 1) = “0” Then
If Right(So, 1) <> “0” Then
Cht = Cht + chs(11)
End If
fg0 = True
Else
If Left(So, 1) = “1” Then
Cht = Cht + chs(14)
Else
Cht = Cht + chs(Left(So, 1)) + chs(13)
fg1 = True
End If
End If
So = Right(So, 1)
End If
If Right(So, 1) <> 0 Then
If Left(So, 1) = “5” And Not fg0 Then
If Len(tp) = 1 Then
Cht = Cht + chs(4)
Else
Cht = Cht + chs(12)
End If
Else
If Left(So, 1) = 1 And Not (Not fg1 Or fg0) And Cht <> “” Then
Cht = Cht + chs(10)
Else
Cht = Cht + chs(Left(So, 1))
End If
End If
End If
ch = Cht + dv(i) + ch
End If
i = i + 1
End If
Loop
If Right(Trim(ch), 1) <> “.” Then
ch = ch + dv(0)
End If
DocVND=UCase(Left(ch, 1))&Mid(ch,2)
End Function

Ở đây tôi không phân tích hàm đọc số bởi TGVT đã có bài về vấn đề này (TGVT A 3/2001, t.76; 7/2001, t.88).
4. Sử dụng hàm DocVND
Tạo một Textbox có tên là Text1, nhấn phải lên Text1 chọn Build Event, trong Choose Builder chọn Code Builder và nhấn OK. Cửa sổ Microsoft VB hiện ra, nhập đoạn code sau:
Private Sub Text1_BeforeUpdate(Cancel As Integer)
Ketqua.Caption = DocVND(Text1.Text)
End Sub

Mở form, nhập vào các con số và gõ Enter, bạn sẽ có kết quả như hình. Mã nguồn chương trình có thể tải về tại website của TGVT – PCW VN.

Phạm Văn Trung
phamtrung03@yahoo.com

Các tin tức khác:

Thay PC bằng máy tính mạng để bảo mật

Khởi động các chương trình Office trong chế độ Safe Mode

Alan Kay nhận giải thưởng cao quý về CNTT

Hơn 300 tỷ đồng phát triển phần mềm nguồn mở

Tìm hiểu về Windows Registry - Phần II

Virus tấn công điện thoại di động sẽ tăng nhanh

63 triệu tên miền được đăng ký sử dụng

Điện lực Việt Nam chuẩn bị triển khai các dịch vụ ĐT CDMA

'Hòm thư điện tử của Tony Blair bị virus tấn công'

Frame Relay, giải pháp cho các doanh nghiệp và tập đoàn (Phần 2)

Danh mục

Hãy gọi cho chúng tôi để được tư vấn miễn phí

0989 722 522

TRUNG TÂM PHÁT TRIỂN WEBSITE - ỨNG DỤNG - THIẾT BỊ CHUYÊN NGHIỆP TOPSITE

Địa chỉ: 41/1, Phường Trung Mỹ Tây Quận 12, TP Hồ Chí Minh.
Email: hotro@topsite.vn - info@topsite.vn Tel: 0978.893.678 - 0938 869 787
MSDN/GPĐKKD: 19025687954
MST: 0310368322
Số TK: 0501000001371 tại Ngân Hàng Vietcombank Chi nhánh Vĩnh Lộc
© 2004 - 2014 Copyright. All rights reserved. Bản quyền thuộc về công ty thiet ke web ITECHCO CO.,LTD

Chúng tôi chấp nhận thanh toán qua:

liberty reservengan luongonepaysoha payvisaweb money1web money2paypalpayone