PDA

View Full Version : Khó quá !!!



tien bac
30-05-2003, 20:20
Bạn ơi người nước ngoài thì Tên trước họ sau nen list box sắp xếp tên theo cách vần tên của họ.Con với người Việt Nam thì khác.Họ trước và tên sau
Ví dụ:
Từ Mỹ Anh,Nông Tiến Bắc,Nguyễn Trí Trung...
Tôi muốn sắp xếp theo tên từ A->Z nghĩa là Từ Mỹ Anh sẽ sắp xếp tên theo ABC mà với tên là vẫn tên của chúng ta chứ không phải là họ của chúng ta.Không thể dung được Sorted --> giúp tui với

HU HU HU HU HU HU

White_Rose
31-05-2003, 02:08
Bạn tạo 2 hàm
FirstName(s as string) as string : tả về họ + tên đệm
LastName(s as string) as string: trả về tên
sau đó sắp xếp theo điều kiện sau:

If (FirstName(name1)>FirstName(name2)) Or (FirstName(name1)=FirstName(2) AND LastName(name1)>LastName(name2)) then
'đổi chỗ name1 và name2

-> có thể dùng biến để quá trình thực thi nhanh hơn.
Vị trí phân tách giữa tên và (họ + tên đệm) là: InStrRev(s," ")

binhbean
31-05-2003, 09:11
Theo mình, đối với người nước ngoài thì ta có thể so sánh và kết luận nhanh là xâu này lớn hơn xâu kia như White_Rose nói:

If (FirstName(name1)>FirstName(name2)) Or (FirstName(name1)=FirstName(2) AND LastName(name1)>LastName(name2)) then
'đổi chỗ name1 và name2


Nhưng đối với người việt chúng ta thì phép so sánh không đơn giản như thế bởi trong bảng chữ cái của chúng ta còn có các ký tự đặc biệt, ví dụ như: Đ và đ, Ơ và ơ
Vd:
Nếu người bình thường, ta có thể hiểu được rằng "Đình" và "đình" phải giống nhau và xếp gần nhau, đồng thời được sắp xếp trên các tên là "Hằng", "Hoa".
Nhưng máy tính thì không hiểu như vậy. Không tin, bạn cứ thử mà xem.

Do vậy, để có thể săp xếp chính xác cá ký tự tên tiếng Việt thì bạn phải xây dựng hàm so sánh của tiếng Việt thì mới sử dụng chính xác được. Điều này không khó, bởi ta có thể liệt kê tất cả các trường hợp mà thôi. Đưa chúng vào mảng và sắp xếp theo độ ưu tiên. OK?

Các bạn thấy thế nào?

dtt_vn
31-05-2003, 20:39
ok

White_Rose
01-06-2003, 03:55
Nếu người bình thường, ta có thể hiểu được rằng "Đình" và "đình" phải giống nhau và xếp gần nhau, đồng thời được sắp xếp trên các tên là "Hằng", "Hoa".
Nhưng máy tính thì không hiểu như vậy. Không tin, bạn cứ thử mà xem.
Sử dụng LCase và UCase. Mình chưa thử với VB nhưng với LCase và UCase trong Access 2000 (or higher) thì nó hoạt động với tiếng Việt chính xác.

Do vậy, để có thể săp xếp chính xác cá ký tự tên tiếng Việt thì bạn phải xây dựng hàm so sánh của tiếng Việt thì mới sử dụng chính xác được. Điều này không khó, bởi ta có thể liệt kê tất cả các trường hợp mà thôi. Đưa chúng vào mảng và sắp xếp theo độ ưu tiên. OK?So sánh tiếng Việt Unicode (cũng trong Access) là đúng luôn rồi -> rất có thể VB cũng tượng tự, bạn nên thử trước khi tự xây dựng mới.