Lỗi lọc dữ liệu

lttruc682

New Member
Hội viên mới
Ai đã từng gặp tình huống này thì giúp mình với. Mình sử dụng database SQL Server rồi link qua MS Access 2000. Nếu sử dụng font VNI- thì find và filter bình thường, nhưng nếu sử dụng font Unicode thì find bình thường, nhưng lọc không thấy gì.

Ví dụ, mình lưu giá trị "Chả Lụa Chay" trong field TenHH (kiểu nvarchar). Nếu "Chả Lụa Chay" là font VNI thì OK còn "Chả Lụa Chay" là font Unicode thì sử dụng chức năng filter for sẽ không có kết quả gì hết

Nếu copy nguyên chuỗi ấy dán vào table Access thì filter lại OK
Hết biết luôn. :runcamcap:
 
Ðề: Lỗi lọc dữ liệu

Nếu không link mà import table từ SQL Server 2000 qua thì mọi việc đều bình thường. Hoặc link table qua rồi chép các record trong table đó sang một table của Access có cùng cấu trúc thì các thao tác trên table của Access này cũng ok. Chuyện này chỉ xảy ra đối với các bảng mã Unicode (tổ hợp, dựng sẵn, CP 1258 đều bị). Tôi đã thử SQL Server 2005 và MS Access 2003, vấn đề cũng y chang. Ngay cả đặt một điều kiện lọc đơn giản trong query như TenHH Like "*Chả*" cũng trả về kết quả rỗng.

Có vấn đề gì trong việc SQL Server "hợp tác" với MS Access mà các table SQL Server dùng các font Unicode?
Ai đã từng gặp chuyện này thì chia sẻ với tôi với!

Đa tạ!
 
Sửa lần cuối:
Ðề: Lỗi lọc dữ liệu

Với SQL Server, bạn cần lưu ý là nên dùng chuẩn ANSI 92 cho syntax.

Tiếp theo, với kiểu nvarchar, khi tham chiếu chuỗi, bạn nên có ký tự N trước chuỗi. VD: N'Chả giò chay'. Lúc này SQL Server hiểu nó là chuổi kiểu nvarchar.

Tiếp nữa là nếu bạn gõ dấu trong VBA của Access thì Unicode không gõ được đâu. Như vậy, có thể bạn dùng VNI để thể hiện dấu. Nếu đúng thế thì cái chuỗi so của bạn nhập trong VBA là VNI rồi, khi filter thì sẽ không thấy được, vì bên SQL Server lưu theo Unicode.

Hoặc ở SQL Server bạn tạo database mà dùng colaboration là UTF-8 thì cũng sẽ gặp trường hợp tương tự.
 
Ðề: Lỗi lọc dữ liệu

Cám ơn bạn đã trả lời! Tôi không rành về SQL Server. Tôi có làm 1 ứng dụng nhỏ phục vụ cho công việc. Lúc đầu làm thì file back-end và front-end đều là MS Access 2000 cả. Nếu tại 1 thời điểm chỉ có 1 người dùng thì tốc độ bình thường, nhưng nếu có 2 người trở lên dùng đồng thời thì chương trình bắt đầu... lết. Tôi đã thử thay thế back-end bằng SQL Server thì tốc độ khi nhiều người dùng đồng thời rất là ô kê.

Tôi thích unicode vì xài font VNI thấy nó xấu quá, không gọn gàng tí nào, nhưng lại gặp phải vấn đề trên.

Lúc tạo database SQL Server, tôi chọn Collation mặc định của SQL Server (SQL_Latin1_General_CP1_CI_AS)

Khi lọc dữ liệu, tôi không viết trực tiếp chuỗi điều kiện lọc trong VBA mà sử dụng textbox chứa chuỗi unicode cần lọc, dạng như:
FormA.Filter = "TenHH LIKE '*" & FormA.text1 & "*'"
FormA.FilterOn = True
Còn dùng chữ N để SQL Server hiểu là chuỗi unicode thì tôi không biết "nhét" nó vô đâu trong câu lệnh lọc bên trên nữa.

Nhưng vấn đề là ngay cả đặt điều kiện lọc trong query hay sử dụng chức năng lọc chuẩn của MS Access thì đều không xong (cỏ vẻ như nó lọc được một số chữ có dấu, nhưng đa số chữ có dấu khác thì không được). Tôi cẩn thận không gõ tên hàng cần lọc mà tôi copy tên hàng trong table cũng không lọc được.
 
Ðề: Lỗi lọc dữ liệu

Bạn có thể thử: FormA.Filter = "TenHH LIKE N'*" & FormA.text1 & "*'"
 
Ðề: Lỗi lọc dữ liệu

Nó báo lỗi: "Run-time error '2448'. You can't assign a value to this object".
 
Ðề: Lỗi lọc dữ liệu

Có nhiều nguyên nhân khi xảy ra lỗi này.
Nguyên nhân thứ nhất:
Có khả năng cái text1 của bạn có assign đến một field của table RecordSource
Nguyên nhân thứ hai:
Cái field đó không tồn tại trong table
Vì không rõ bạn thiết kế như thế nào nên cũng khó nói chi tiết được
 
Ðề: Lỗi lọc dữ liệu

Theo tôi thì không phải cú pháp có vấn đề mà việc phối hợp giữa SQL Server và MS Access có vấn đề. Không tin bạn thử tạo 1 database SQL Server (lưu các chuỗi unicode trong table) rồi link qua MS Access; Thử tạo 1 query để lọc các chuỗi unicode đó thử, hoặc thử sử dụng menu lọc chuẩn của MS Access thử thì sẽ biết.

Nó lọc được 1 số chữ có dấu, nhưng đa số các chữ có dấu đều không lọc được.
 
Ðề: Lỗi lọc dữ liệu

@lttruc862:
Tôi đã áp dụng Access Project để "kiếm cơm" nhiều rồi. Tất nhiên trên SQL Server, tôi đều lưu dưới dạng nvarchar cho các dữ liệu kiểu chuỗi.
Việc lọc, tìm kiếm dữ liệu chẳng có gì là "rắc rối". Không riêng gì tiếng Việt có dấu, ngay cả tìm bằng tiếng Hoa cũng chẳng vấn đề gì (tôi viết nhiều cho các công ty Đài loan ở Bình dương).

Vì không rõ bạn thiết kế chương trình của bạn ra sao nên tôi không thể hiểu đúng cái rắc rối mà bạn gặp phải, tôi chỉ đề xuất một số ý kiến để bạn xem thử. Nếu vẫn không được thì tôi cũng "pó tay", nhờ các anh em khác hỗ trợ vậy.
 
Ðề: Lỗi lọc dữ liệu

Lỗi lọc chuỗi unicode khi link từ sql server 2000 sang ms access 2000. Anh Phatnq2002 và mọi người xem thử nhé:

File unicode.exe record lại các thao tác, không phải virus đâu.

unicode.exe

Đa tạ!
 
Ðề: Lỗi lọc dữ liệu

Nếu sử dụng adp thì có hơi khác một chút. Có thể lọc tốt tất cả các chữ trong chuỗi hoặc toàn bộ chuỗi, nhưng nếu chỉ lọc theo chữ cuối cùng của chuỗi thì không được.

Thí dụ: Tên hàng là "Chả cá chẻm" thì có thể Filter By Selection chữ "Chả", chữ "cá", chữ "Chả cá chẻm" tốt; nhưng không Filter By Selection được chữ "chẻm".

Nếu tên hàng là "Chẻm chả cá" thì Filter By Selection tốt các chữ "Chẻm", "chả", "Chẻm chả cá"; nhưng không lọc được chữ "cá"

Tức là không lọc được chữ cuối cùng.

Chuyện này xảy ra đối với MS Access 2000 sử dụng table trong SQL Server 2000. Nếu sử dụng MS Access 2003 với SQL Server 2000 thì lọc tất cả đều tốt.

Vậy chắc là SQL Server 2000 không có vấn đề gì, nhưng MS Access 2000 thì có lẽ "bị gì đó" khi sử dụng các chuỗi unicode trong SQL Server 2000 rồi.

Xin mọi người hãy cho nhận xét đi! :lanlon:
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top