
Chủ thớt đã có thiết lập Primary key cho trường đó rồi bạn.
Thông thường khi thiết kế bảng, muốn quản lý trùng lắp thì thiết lập Index nó: Yes (No Duplicate) và một số cột khác cũng với Index nhưng có thể trùng lắp: Yes (Duplicate OK). Mục đích việc lập chỉ mục ngoài việc ràng buộc dữ liệu còn là để tăng tốc tìm kiếm, sắp xếp.
Theo kinh nghiệm của tôi trong thực tế thiết kế ứng dụng, sẽ không trông chờ vào thông báo lỗi của hệ thống về việc nhập trùng lắp dữ liệu vì những lý do sau:
- Thông báo của hệ thống là thông báo tiếng Anh và người dùng không trong nghề cũng không hiểu nó là thông báo gì => gây bối rối cho ngườ dùng.
- Nếu bạn bẫy lỗi này (Error 3022) bằng tiếng Việt thì việc bẫy lỗi này sẽ có 2 trường hợp bẫy phải xét đến:
1. Nếu bạn thiết kế Form dạng Unbound thì bẫy lỗi sẽ chậm một nhịp do chỉ khi bấm "Lưu" thì hệ thống mới kiểm tra và báo lỗi phát sinh. Chậm nhip ở đây nghĩa là không báo lỗi sau khi gõ thông tin vào textbox.
2. Nếu thiết kế dạng Bound Form, thì bẫy lỗi ở sự kiện Form _Error(). Bẫy lỗi ở đây sẽ sẽ khắc phục việc chậm nhịp tức là ngay sau khi nhập liệu vào textbox, hệ thống sẽ báo lỗi ngay và bạn chỉ việc thay thông báo hệ thống bằng tiếng Việt. Cách này cũng hay dùng nhưng tóm lại cũng phải tốn code như cách dùng Dlookup.

. Nhưng cách này sẽ tốn thêm code nếu như bảng có hơn 1 trường có "ràng buộc dữ liệu không trùng". Khi đó bạn phải thêm code để hiện thông báo chính xác trường nào đang bị trùng dữ liệu, không thể dùng một thông báo chung chung là "Dữ liệu bị trùng, cần nhập lại", khi đó người dùng không biết đã nhập trùng cái textbox nào, cái textbox vừa nhập hay textbox nào khác.
Quan điểm thiết kế ứng dụng của tôi là thiết kế sao cho một người dùng chỉ biết cơ bản nhất về vi tính cũng có thể xử lý nhập liệu an toàn, chính xác, nhanh và không bối rối. Do đó thường thì tôi hay bẫy lỗi ngay lúc nhập liệu để người dùng có thể điều chỉnh ngay lúc đó rồi mới đi tiếp.