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....
Sắp xếp tiếng Việt theo vần rong thực tế việc xếp tiếng Việt dựa chủ ý người lập trình hay tiện ích Thường cách xếp thứ tự tiếng Việt theo ký tự từ trái sang phải Ví dụ, với chữ Bang, Bách, Bắc, Bằng - theo cách thứ tự thông thường (từ trái sang phải) B (ngang nhau), a, á, ắ, ằ, sau n, c Và cuối thứ tự là: Bang, Bách, Bằng, Bắc Trình tự xếp không thứ tự vần tiếng Việt Thứ tự theo vần phải là: Bách, Bắc, Bang, Bằng - có nghĩa bỏ dấu sau Trước tác giả nhầm vấn đề (Xem 'Sắp xếp tiếng Việt Unicode MS Access' TGVT A tháng 12/2004, t.140), nhiều chương trình tiện ích khác thực cách theo ký tự từ trái sang phải Qua q trình tìm hiểu tơi tìm cách giải vấn đề Cách sử dụng với font Unicode, nên xem lại viết 'Sắp xếp tiếng Việt Unicode MS Access' Trong viết có đề cập tới hai hàm Mahoa Daonguoc, thay hai hàm Chuanhoa Mahoa Bước 1: Chuẩn bị Đặt hai Textbox lên form: ➢ Textbox1 đặt tên TextGockdau, nhập trực tiếp chuỗi ký tự Việt Unicode sau (có thể nhập Word copy sang): 'AaĂăÂâBbCcDdĐđEêFfGgHhIiJjKkLlMmNnOo ƠơƠơPpQqRrSsTtU uƯưVvWwXxYyZz' ➢ Textbox2 đặt tên TextGocCdau, nhập trực tiếp chuỗi ký tự Việt Unicode sau: 'ẦẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬẺẼÉẸÊỀỂỄẾỆIÌỈ ĨÍỊỎÕĨỌƠỒỔỖỐỘ ƠỜỞỠỚỢÚỦŨÚỤƯỪỬỮỨỰYỲỶỸÝỴầảãáạăằ ẳẵắặâầẩẫấậẻẽ éẹêềểễếệiìỉĩíịỏõóọơồổỗốộơờởỡớợúủũúụưừửữứựy ỳỷỹýỵ' Sau xuất thành file ForChuama.frm Thực tơi muốn giấu form giao diện thiết kế Access, bạn dùng form tạm để chứa hai chuỗi Bước 2: Tiến hành viết 'Sắp xếp tiếng Việt Unicode MS Access' Bước 3: Bước định việc xếp theo vần Việc giải dựa 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 hố 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 = 'aaabacadaeafagahaiajakalamanaoapaqarasatauavawa xayaz babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvb wbxbybzcacbcc cdcecfcgchcicjckclcmcn' Kq = '' xd = '' For i = To Len(CChuanma) kti = Mid(CChuanma, i, 1) vt1 = InStr(CgocCdau, kti) If vt1 Then 'Nếu ký tự có dấu Kq = Kq & Mid(Cma1, + ((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 Then Kq = Kq & Mid(Cma2, vt2 * - 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 Ctam = Trim(Left(ChuoiHoten, vt1 - 1)) ChuoiHoten = Right(ChuoiHoten, Len(ChuoiHoten) vt1) Kq = Chuanhoa(Ctam) & ' ' & Kq vt1 = InStr(ChuoiHoten, ' ') Loop Mahoa = Kq End Function Ở sử dụng quy luật dấu (có dấu) theo thứ tự: khơng, huyền, hỏi, ngã, sắc, nặng Ví dụ: A À Ả à Á Ạ Trong hàm Chuanhoa sử dụng quy luật để cắt dấu ký tự có dấu chuẩn hoá phần ký tự với câu lệnh: Kq = Kq & Mid(Cma1, + ((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) theo PCWorld ... bạn dùng form tạm để chứa hai chuỗi Bước 2: Tiến hành viết 'Sắp xếp tiếng Việt Unicode MS Access' Bước 3: Bước định việc xếp theo vần Việc giải dựa hàm Chuanhoa, hàm Mahoa có tác dụng đảo ngược...trình tiện ích khác thực cách theo ký tự từ trái sang phải Qua trình tìm hiểu tơi tìm cách giải vấn đề Cách sử dụng với font Unicode, nên xem lại viết 'Sắp xếp tiếng Việt Unicode MS Access' Trong... chuỗi ký tự Việt Unicode sau (có thể nhập Word copy sang): 'AaĂăÂâBbCcDdĐđEêFfGgHhIiJjKkLlMmNnOo ƠơƠơPpQqRrSsTtU uƯưVvWwXxYyZz' ➢ Textbox2 đặt tên TextGocCdau, nhập trực tiếp chuỗi ký tự Việt Unicode