Computer - Communication - Control. 3C INC
 
Nhiều người quan tâm
Download Vietkey 2007 miễn phí
Các bộ Font tiếng Việt:
Tải hàng ngàn font chữ đẹp miễn phí
Phần mềm gõ Tiếng Việt Unikey 4.0
Kho font chữ miễn phí khổng lồ
Gõ tiếng Việt Unicode trong Windows Vista

Tiếng Việt


In bài này Gửi bài viết này cho bạn bè
(Thứ Hai, 26/03/2007-3:24 PM)
Sắp xếp tiếng Việt theo vần
Trong thực tế việc sắp xếp tiếng Việt dựa trên chủ ý của người lập trình hay tiện ích. Thường cách sắp xếp thứ tự tiếng Việt theo các ký tự từ trái sang phải. Ví dụ, với các chữ Bang, Bách, Bắc, Bằng - theo cách sắp thứ tự thông thường (từ trái sang phải) thì sắp B (ngang nhau), kế đến là a, á, ắ, ằ, sau đó là n, c... Và cứ thế cuối cùng thứ tự sắp sẽ là: Bang, Bách, Bằng, Bắc.
 

Trình tự sắp xếp như trên không đúng thứ tự vần tiếng Việt. Thứ tự đúng theo vần phải là: Bách, Bắc, Bang, Bằng - có nghĩa là bỏ sắp dấu sau cùng.

Trước đây tác giả cũng đã nhầm về vấn đề này (Xem bài 'Sắp xếp tiếng Việt Unicode trong MS Access' - TGVT A tháng 12/2004, t.140), và rất nhiều chương trình và tiện ích khác cũng thực hiện cách sắp theo ký tự từ trái sang phải.

Qua quá trình tìm hiểu tôi đã tìm ra một cách có thể giải quyết vấn đề này. Cách này sử dụng với font Unicode, nên xem lại bài viết 'Sắp xếp tiếng Việt Unicode trong MS Access'. Trong một bài viết có đề cập tới hai hàm Mahoa và Daonguoc, ở đây tôi thay bằng hai hàm Chuanhoa và Mahoa.

Bước 1: Chuẩn bị

Đặt hai Textbox lên form:

➢ Textbox1 đặt tên là TextGockdau, nhập trực tiếp chuỗi ký tự Việt Unicode sau (có thể nhập trong Word và copy sang): 'AaĂăÂâBbCcDdĐđEeÊêFfGgHhIiJjKkLlMmNnOoÔôƠơPpQqRrSsTtUuƯưVvWwXxYyZz'

➢ Textbox2 đặt tên là TextGocCdau, nhập trực tiếp chuỗi ký tự Việt Unicode sau: 'AÀẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬEÈẺẼÉẸÊỀỂỄẾỆIÌỈĨÍỊOÒỎÕÓỌÔỒỔỖỐỘƠỜỞỠỚỢUÙỦ
ŨÚỤƯỪỬỮỨỰYỲỶỸÝỴaàảãáạăằẳẵắặâầẩẫấậeèẻẽéẹêềểễếệiìỉĩíịoòỏõóọôồổỗốộơờởỡớ
ợuùủũúụưừửữứựyỳỷỹýỵ'

Sau đó xuất thành file ForChuama.frm. Thực ra tôi muốn giấu form này trong giao diện thiết kế của Access, các bạn có thể dùng một form tạm để chứa hai chuỗi trên.

Bước 2: Tiến hành như bài viết 'Sắp xếp tiếng Việt Unicode trong MS Access'.

Bước 3: Bước này quyết định việc sắp xếp theo vần. Việc giải quyết dựa trên hàm Chuanhoa, hàm Mahoa có tác dụng đảo ngược chuỗi họ tên đồng thời gọi hàm Chuanhoa để chuẩn hoá chuỗi họ tên đó.

Private Function Chuanhoa(CChuanma As String) As String

Dim Kq, kti As String

Dim vt1, vt2, i As Integer

Dim CgocKdau, Cma1 As String, CgocCdau, xd, Cma2 As String

CgocCdau = ForChuama.TextGocCdau.Text

Cma1 = 'aaacaeaoaqaybkbmbocaccckabadafaparazblbnbpcb
cdcl1b1c1d1e1f1a'

CgocKdau = ForChuama.TextGockdau.Text

Cma2 = 'aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjb
kblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcn'

Kq = ''

xd = ''

For i = 1 To Len(CChuanma)

   kti = Mid(CChuanma, i, 1)

   vt1 = InStr(CgocCdau, kti)

   If vt1 <> 0 Then 'Nếu ký tự có dấu

       Kq = Kq & Mid(Cma1, 1 + ((vt1 - 1) \ 6) * 2, 2) 'Chuẩn hoá phần ký tự

       xd = xd & Mid(Cma1, 49 + ((4 + vt1) Mod 6) * 2, 2) ' Chuẩn hoá phần dấu

Else

     vt2 = InStr(CgocKdau, kti)

     If vt2 <> 0 Then

        Kq = Kq & Mid(Cma2, vt2 * 2 - 1, 2)

     Else

        Kq = Kq + kti

     End If

End If

Next i

Chuanhoa = Kq & xd

End Function

Public Function Mahoa(ChuoiHoten As String) As String

Dim vt1 As Integer

Dim Kq As String, Ctam As String

ChuoiHoten = Trim(ChuoiHoten) & ' '

Kq = ''

vt1 = InStr(ChuoiHoten, ' ')

Do While vt1 <> 0

   Ctam = Trim(Left(ChuoiHoten, vt1 - 1))
  
   ChuoiHoten = Right(ChuoiHoten, Len(ChuoiHoten) - vt1)

   Kq = Chuanhoa(Ctam) & ' ' & Kq

   vt1 = InStr(ChuoiHoten, ' ')

Loop

Mahoa = Kq

End Function

Ở đây tôi đã sử dụng quy luật dấu (có 6 dấu) theo thứ tự: không, huyền, hỏi, ngã, sắc, nặng.

Ví dụ: A À Ả Ã Á Ạ

Trong hàm Chuanhoa tôi đã sử dụng quy luật này để cắt dấu một ký tự có dấu rồi chuẩn hoá phần ký tự với câu lệnh:

Kq = Kq & Mid(Cma1, 1 + ((vt1 - 1) \ 6) * 2, 2)

đồng thời chuẩn hóa phần dấu:

xd = xd & Mid(Cma1, 49 + ((4 + vt1) Mod 6) * 2, 2)

Bước 4: Sau khi thiết lập Query xong, mở Query bạn sẽ có kết quả như hình.

(Theo PCWorld)

Download Portable IDM
PM download file trên mạng cực nhanh, nhỏ gọn, miễn phí

   Download Winrar 3.80
PM nén và giải nén file xuất sắc. Chương trình nhỏ gọn, dễ sử dụng.

    [ Các bài mới ]
    [ Các bài đã đăng ]

    Download BKAV Home
    phiên bản mới nhất

    Bài mới cập nhật
    Virus “tự lai tạo” đang thách thức các phần mềm bảo mật
    Laptop 3D Asus được bán tại VN giá 51,6 triệu đồng
    Phân tích hành động của Malware với Joebox Online Sandbox
    Lấy thông tin thư mục nhanh chóng với GetFoldersize
    Nokia N900 bán tại VN giá 12,9 triệu đồng
    Máy tính xách tay có thời lượng pin 18 giờ
    Laptop Samsung lần đầu tiên ra mắt tại Việt Nam
    Laptop đa phương tiện MSI CR620
    Windows Phone 7 không hỗ trợ copy/paste
    Microsoft giới thiệu thử nghiệm sơ bộ Internet Explorer 9
    Điện thoại quay phim HD xuất hiện tại TP HCM
     
     
     
    COMPUTER - COMMUNICATION - CONTROL 3C, INC.
    Số 6 - Láng Hạ - Ba Ðình - Hà Nội; Tel: 84.4.38312695; Fax: 84.4.38311925
    Copyright © 2005 3C INC. All rights reserved.