Minh Tiên ""    Bài viết: 641 Chủ đề: 64 Tham Gia: 13-11 -12 Điểm danh tiếng: 24 Số lần cảm ơn 1008 249 cảm ơn trong 191 bài Tiền Access: 8,790.63Ac$ #11 26-10-19, 11:29 AM Chào cả nhà ! Sau 1 t/g mày mò mình phát hiện ra lỗi chuyển sai tập trung chủ yếu vào các chữ In hoa vì hàm dò tìm chữ In hoa ko thực hiện được, chỉ do được chữ thường. Khắc phục: Khai báo có phân biệt chữ In và chữ thường. Cụ thể: Thay Option Compare Database thành Option Compare Binary trong Module. Mình đang dùng office 365 hoạt động OK, ko biết ACE dùng Office khác thế nào. Xin chia sẻ. Thân./. Chữ ký của Minh Tiên ----------------------------------------------- Đường tuy ngắn, không đi không đến Việc tuy nhỏ, không làm không nên. Tuân Tử ----------------------------------------------- Website Find Reply Những người đã cảm ơn ongke0711 ongke0711 Honorary members    Bài viết: 3,578 Chủ đề: 62 Tham Gia: 10-04 -15 Điểm danh tiếng: 165 Số lần cảm ơn 584 4064 cảm ơn trong 2402 bài Tiền Access: 92,558.56Ac$ #12 26-10-19, 12:08 PM (26-10-19, 11:29 AM)Minh Tiên Đã viết: Chào cả nhà ! Sau 1 t/g mày mò mình phát hiện ra lỗi chuyển sai tập trung chủ yếu vào các chữ In hoa vì hàm dò tìm chữ In hoa ko thực hiện được, chỉ do được chữ thường. Khắc phục: Khai báo có phân biệt chữ In và chữ thường. Cụ thể: Thay Option Compare Database thành Option Compare Binary trong Module. Mình đang dùng office 365 hoạt động OK, ko biết ACE dùng Office khác thế nào. Xin chia sẻ. Thân./. Việc khắc phục đơn giản vậy mà mình không nghĩ ra. Còn việc chuyển đổi từ Tổ hợp sang dựng sẳn thì tôi định làm như sau: - Gõ toàn bộ các ký tự có dấu TV theo kiểu tổ hợp rồi đổi sang mã Hex. Đưa vào mảng tohop_bytes - Gõ toàn bộ các ký tự có dấu TV theo kiểu dựng sẵn rồi đổi sang mã Hex. Đưa vào mảng dungsan_bytes - Khi dò từ ký tự trong chuỗi, chuyển sang Hex (dùng AscW()) rồi đối chiếu vào mảng nào mình cần rồi đối chiếu với mảng kia, sau đó dùng hàm Chrw() để chuyển thành ký tự. - Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake! ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ Website Find Reply Những người đã cảm ơn Minh Tiên ""    Bài viết: 641 Chủ đề: 64 Tham Gia: 13-11 -12 Điểm danh tiếng: 24 Số lần cảm ơn 1008 249 cảm ơn trong 191 bài Tiền Access: 8,790.63Ac$ #13 26-10-19, 01:16 PM (Được chỉnh sửa: 26-10-19, 01:17 PM bởi Minh Tiên.) (26-10-19, 12:08 PM)ongke0711 Đã viết: (26-10-19, 11:29 AM)Minh Tiên Đã viết: Chào cả nhà ! Sau 1 t/g mày mò mình phát hiện ra lỗi chuyển sai tập trung chủ yếu vào các chữ In hoa vì hàm dò tìm chữ In hoa ko thực hiện được, chỉ do được chữ thường. Khắc phục: Khai báo có phân biệt chữ In và chữ thường. Cụ thể: Thay Option Compare Database thành Option Compare Binary trong Module. Mình đang dùng office 365 hoạt động OK, ko biết ACE dùng Office khác thế nào. Xin chia sẻ. Thân./. Việc khắc phục đơn giản vậy mà mình không nghĩ ra. Còn việc chuyển đổi từ Tổ hợp sang dựng sẳn thì tôi định làm như sau: - Gõ toàn bộ các ký tự có dấu TV theo kiểu tổ hợp rồi đổi sang mã Hex. Đưa vào mảng tohop_bytes - Gõ toàn bộ các ký tự có dấu TV theo kiểu dựng sẵn rồi đổi sang mã Hex. Đưa vào mảng dungsan_bytes - Khi dò từ ký tự trong chuỗi, chuyển sang Hex (dùng AscW()) rồi đối chiếu vào mảng nào mình cần rồi đối chiếu với mảng kia, sau đó dùng hàm Chrw() để chuyển thành ký tự. Vụ này Tiên đã nghĩ cách làm rồi, chỉ cần quy ngược lại theo Code trên thôi. Dò mãng s_DungSan trước => trong S_ToHop. Mình có bảng Index của 2 mãng là OK Thân./. Chữ ký của Minh Tiên ----------------------------------------------- Đường tuy ngắn, không đi không đến Việc tuy nhỏ, không làm không nên. Tuân Tử ----------------------------------------------- Website Find Reply Những người đã cảm ơn Minh Tiên ""    Bài viết: 641 Chủ đề: 64 Tham Gia: 13-11 -12 Điểm danh tiếng: 24 Số lần cảm ơn 1008 249 cảm ơn trong 191 bài Tiền Access: 8,790.63Ac$ #14 26-10-19, 01:32 PM Bảng Index theo code trên ! Bảng Index Thân./. Chữ ký của Minh Tiên ----------------------------------------------- Đường tuy ngắn, không đi không đến Việc tuy nhỏ, không làm không nên. Tuân Tử ----------------------------------------------- Website Find Reply Những người đã cảm ơn ongke0711 Honorary members    Bài viết: 3,578 Chủ đề: 62 Tham Gia: 10-04 -15 Điểm danh tiếng: 165 Số lần cảm ơn 584 4064 cảm ơn trong 2402 bài Tiền Access: 92,558.56Ac$ #15 26-10-19, 07:15 PM (26-10-19, 01:32 PM)Minh Tiên Đã viết: Bảng Index theo code trên ! Bảng Index Thân./. Tôi không nghĩ bảng mã này đúng đâu bạn. Bạn dùng bảng mã nào vậy? Hiện nay nên dùng các bảng mã: Latin Extended A, Latin Extended Additional thì mới chính xác hơn. Vd: Chữ "Ế" - Mã Decimal: Dựng sẵn: 7870 Tổ hợp: 202 769 (kết hợp 2 bytes) -> cái khó nằm ở đây. Khi chuyển từ dựng sẵn sang tổ hơp, nó phải dùng 2 byte để thể hiện ký tự: 202 cho ký tự "Ê" và 769 cho dấu sắc. Nhưng khi tôi kết hợp thì cái dấu sắc nó không nằm trên chữ "Ê" mà nó nằm kế bên. . Phải ngâm cứu thêm thôi. Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake! ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ Website Find Reply Những người đã cảm ơn Minh Tiên ""    Bài viết: 641 Chủ đề: 64 Tham Gia: 13-11 -12 Điểm danh tiếng: 24 Số lần cảm ơn 1008 249 cảm ơn trong 191 bài Tiền Access: 8,790.63Ac$ #16 26-10-19, 08:13 PM Vụ Byte biết jj đó .. họ đã làm giúp mình ở Private Sub InitVietnameseStr rồi (Ko để ý nữa). Họ chạy tới đc thì mình chạy lui cũng đc thôi. Chỉ cần tra trong Tổ hợp theo Dựng sẳn theo Index là OK (>15 mới có khác biệt). Lấy 2 ký tự trong S_To_Hop mới hiển thị dấu ! Mình đã chạy Unicode Dựng sẳn sang Unicode Tổ hợp OK rồi. Thay đổi code này: Mã:Public Function SourceToDest(ByVal text As String, source As convert_source, dest As convert_dest) As String Dim s As String, Temp As String, kytu2 As String Dim n As Long, index As Long, k As Long Dim nr As Long If source = dest And source <> src_uni Then SourceToDest = text Exit Function End If InitVietnameseStr text = text & " " s = "" n = 1 k = Len(text) While n < k nr = 0 Select Case source Case src_uni kytu2 = Mid(text, n, 1) If source = src_uni Then index = InStr(1, s_dung_san, kytu2) If index > 14 Then nr = (2 * index - 15) n = n + 1 Else nr = InStr(1, s_dung_san, kytu2) n = n + 1 End If End If End Select If nr > 14 Then Select Case dest Case dst_uni: kytu2 = Mid(s_to_hop, nr, 2) End Select End If s = s & kytu2 Wend SourceToDest = s End Function Mình lấy code cũ chưa làm cho các bảng mã khác nên để nguyên các Select Case và If (Chưa sắp xếp lại). Mình đã text từ Access rồi Copy sang Excel lọc, ... => Kết quả OK. ACE nhà ta text thử nhé ! Thân./. Chữ ký của Minh Tiên ----------------------------------------------- Đường tuy ngắn, không đi không đến Việc tuy nhỏ, không làm không nên. Tuân Tử ----------------------------------------------- Website Find Reply Những người đã cảm ơn ongke0711 |