Nguồn: Thủ Thuật Access
Tác giả: Xuân Thanh
----------------------------
Có nhiều bạn hỏi về cách sắp xếp tiếng Việt trong Access. Hôm nay tôi xin chia sẻ với các bạn một số thủ thuật này. Trước hết xin lỗi những ai là thầy cô giáo vì cách sắp xếp tiếng Việt được hiểu theo nhiều cách khác nhau. Ở đây tôi xin sắp xếp theo thứ tự sau
1/ Xếp từ phải sang
2/ Xếp theo thứ tự của bảng chữ cái tiếng Việt
3/ Về dấu, thứ tự ưu tiên sẽ là không dấu, huyền, sắc, hỏi, ngã, nặng
thủ thuật ở đây là dùng chuỗi mã hóa đễ chuyển về thứ tự như đã nói ở trên
Chúng ta cùng nghiên cứu nhé
Bài 1 : Sắp xếp tiếng Việt theo font chử VNIWindows (VNI)
Các bạn chép hàm sau vào một modul của Access
1/ hàm SuaCau để chuyển câu chữ về đúng cách viết tiếng Việt(giữa hai từ chỉ có 1 khoảng trắng mà thôi)
2/ hàm XepABC để sắp xếp theo cách đã trình bày ở trên
Để sử dụng, các bạn đưa vào query. Giả sử ta muốn sắp xếp dữ liệu HotenHs trong table Hocsinh. Trong cửa sổ Queries ta thiết kế một Query và chèn một field với dữ liệu là chuỗi ký tự được mã hoá từ hàm XepABC([Hocsinh]![HotenHs]). Field được chèn chọn Sort là Ascending (Nếu sắp theo chiều giảm chọn Descending), không hiển thị field này nên bỏ chọn CheckBox thuộc tính Show. Khi mở Query này, ta có dữ liệu được sắp xếp theo thứ tự chuẩn tiếng Việt
Chúc các bạn vui với thủ thuật này
Các bạn thắc mắc, vui lòng thảo luận tại bài viết: Sắp xếp tiếng Việt trong Access của tác giả Xuân Thanh
Tác giả: Xuân Thanh
----------------------------
Có nhiều bạn hỏi về cách sắp xếp tiếng Việt trong Access. Hôm nay tôi xin chia sẻ với các bạn một số thủ thuật này. Trước hết xin lỗi những ai là thầy cô giáo vì cách sắp xếp tiếng Việt được hiểu theo nhiều cách khác nhau. Ở đây tôi xin sắp xếp theo thứ tự sau
1/ Xếp từ phải sang
2/ Xếp theo thứ tự của bảng chữ cái tiếng Việt
3/ Về dấu, thứ tự ưu tiên sẽ là không dấu, huyền, sắc, hỏi, ngã, nặng
thủ thuật ở đây là dùng chuỗi mã hóa đễ chuyển về thứ tự như đã nói ở trên
Chúng ta cùng nghiên cứu nhé
Bài 1 : Sắp xếp tiếng Việt theo font chử VNIWindows (VNI)
Các bạn chép hàm sau vào một modul của Access
Mã PHP:
Public Function SuaCau(CauVan)
CauMoi = Trim(CauVan)
ViTri = InStr(1, CauMoi, Space(2))
Do While ViTri > 0
CauMoi = Left(CauMoi, ViTri) & Trim(Mid(CauMoi, ViTri))
ViTri = InStr(1, CauMoi, Space(2))
Loop
SuaCau = CauMoi
End Function
Mã PHP:
Public Function XepABC(HoTen)
Ten = SuaCau(Trim(HoTen))
TenMoi = Space(0): One = Space(0): Two = Space(0)
One = One & "a aùaøaûaõaïaêaéaèaúaüaëaâaáaàaåaãaä"
One = One & "o oùoøoûoõoïoâoáoàoåoãoäô ôùôøôûôõôï"
One = One & "e eùeøeûeõeïeâeáeàeåeãeäi í ì æ ó ò "
One = One & "y yùyøyûyõî u uùuøuûuõuïö öùöøöûöõöïd ñ"
Two = Two & "aaabacadaeafagahaiajakalamanaoapaqar"
Two = Two & "oaobocodoeofogohoiojokolomonooopoqor"
Two = Two & "eaebecedeeefegeheiejekeliaibicidieifyaybycydyeyf"
Two = Two & "uaubucudueufuguhuiujukuldadb"
ViTri = InStr(1, Ten, Space(1))
Do While ViTri > 0
TenMoi = Left(Ten, ViTri) & TenMoi
Ten = Mid(Ten, ViTri + 1)
ViTri = InStr(1, Ten, Space(1))
Loop
OldS = Trim(Ten & Space(1) & TenMoi)
NewS = Space(0): LenOf = Len(OldS): ViTri = 1
Do While ViTri <= LenOf
KyTu = Mid(OldS, ViTri, 1)
If KyTu = Space(1) Then
NewS = NewS & KyTu: ViTri = ViTri + 1
Else
LowK = LCase(KyTu): OldP = InStr(1, One, LowK)
If OldP = 0 Then
NewS = NewS & KyTu: ViTri = ViTri + 1
Else
KeTiep = LCase(Mid(OldS, ViTri, 2))
NewP = InStr(1, One, KeTiep)
If NewP = 0 Then
NewS = NewS & Trim(IIf(Asc(KyTu) = Asc(LCase(KyTu)), Mid(Two, OldP, 2), UCase(Mid(Two, OldP, 2))))
ViTri = ViTri + 1
Else
NewS = NewS & Trim(IIf(Asc(KyTu) = Asc(LCase(KyTu)), Mid(Two, NewP, 2), UCase(Mid(Two, NewP, 2))))
ViTri = ViTri + Len(Trim(KeTiep))
End If
End If
End If
Loop
XepABC = Trim(NewS)End Function
1/ hàm SuaCau để chuyển câu chữ về đúng cách viết tiếng Việt(giữa hai từ chỉ có 1 khoảng trắng mà thôi)
2/ hàm XepABC để sắp xếp theo cách đã trình bày ở trên
Để sử dụng, các bạn đưa vào query. Giả sử ta muốn sắp xếp dữ liệu HotenHs trong table Hocsinh. Trong cửa sổ Queries ta thiết kế một Query và chèn một field với dữ liệu là chuỗi ký tự được mã hoá từ hàm XepABC([Hocsinh]![HotenHs]). Field được chèn chọn Sort là Ascending (Nếu sắp theo chiều giảm chọn Descending), không hiển thị field này nên bỏ chọn CheckBox thuộc tính Show. Khi mở Query này, ta có dữ liệu được sắp xếp theo thứ tự chuẩn tiếng Việt
Chúc các bạn vui với thủ thuật này
Các bạn thắc mắc, vui lòng thảo luận tại bài viết: Sắp xếp tiếng Việt trong Access của tác giả Xuân Thanh
Chào tác giả Xuân Thanh!
Trả lờiXóaMình rất cảm ơn vì bài viết của bạn thật hữu ích. Sau khi áp dụng: Bài 1 : Sắp xếp tiếng Việt theo font chử VNIWindows (VNI) mình đã sắp xếp được dữ liệu. Tuy nhiên khi mình đưa vào chương trình (chương trình mình viết bằng c#) thì lại báo lỗi: Undefined function 'XepABC' in expression.
Mong bạn tư vấn!
Quang Quốc.
ngoquangquoc@gmail.com