Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

glasseggs

New Member
Hội viên mới
Trong Validation Ruler của Table hoặc Form có cách nào để chặn không cho ghi dữ liệu trùng không các bạn.
Vì mình có 1 Form nhập thông tin khách hàng,mình không muốn số Mobile trùng nhau ,nên mình muốn đặt Validation Ruler không cho nhập trùng có được không,để nếu mình gõ sai nó báo luôn.Các bạn đừng bảo mình thiết lập khóa chính hay Index (No duplicates) nhé ,vì như thế phải nhập hết thông tin của 1 bản ghi thì nó mới báo trùng,như thế mất công lắm.
Thank mọi người !
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Trong Validation Ruler của Table hoặc Form có cách nào để chặn không cho ghi dữ liệu trùng không các bạn.
Vì mình có 1 Form nhập thông tin khách hàng,mình không muốn số Mobile trùng nhau ,nên mình muốn đặt Validation Ruler không cho nhập trùng có được không,để nếu mình gõ sai nó báo luôn.Các bạn đừng bảo mình thiết lập khóa chính hay Index (No duplicates) nhé ,vì như thế phải nhập hết thông tin của 1 bản ghi thì nó mới báo trùng,như thế mất công lắm.
Thank mọi người !
Đâ cần phải nhập hết thông tin ban.Chỉ cần bạn nhạp xong hàng đó rôi,trùng là nó báo lỗi ngay ma.Còn trong Validation thì bạn chặn khi không chính xác thì được chứ còn trùng thì mình chưa nghĩ ra.:k5798618:
http://www.mediafire.com/file/lmm3iwjqkyd/vi du trung du lieu.rar
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Trong Validation Ruler của Table hoặc Form có cách nào để chặn không cho ghi dữ liệu trùng không các bạn.
Vì mình có 1 Form nhập thông tin khách hàng,mình không muốn số Mobile trùng nhau ,nên mình muốn đặt Validation Ruler không cho nhập trùng có được không,để nếu mình gõ sai nó báo luôn.Các bạn đừng bảo mình thiết lập khóa chính hay Index (No duplicates) nhé ,vì như thế phải nhập hết thông tin của 1 bản ghi thì nó mới báo trùng,như thế mất công lắm.
Thank mọi người !
Giả sử bạn có 1 table là Customers(maKH,phone,...), 1 form tên là Customers
Trong form nhập thông tin khách hàng, textbox phone Bạn đặt các thuộc tính như sau:
ValidationRule property:
DLookUp("[Phone]","Customers","[Phone] = '" & [Forms]![Customers]![Phone] & "'") Is Null

ValidationText property : "Số phone này đã được nhập , vui lòng xem lại"

Chỉnh lại cho phù hợp với chương trình của bạn nhé!
Chúc thành công
 
Sửa lần cuối:
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Giả sử bạn có 1 table là Customers(maKH,phone,...), 1 form tên là Customers
Trong form nhập thông tin khách hàng, textbox phone Bạn đặt các thuộc tính như sau:
ValidationRule property:
DLookUp("[Phone]","Customers","[Phone] = '" & [Forms]![Customer]![Phone] & "'") Is Null

ValidationText property : "Số phone này đã được nhập , vui lòng xem lại"


Chúc thành công

Thứ nhất, cái DLookup này phải Is Not Null mới đúng, vì nếu Is Null có nghĩa là tìm không thấy.

Thứ hai, coi chừng cái case sau:
Người dùng vào phone, đã có sẵn dữ liệu, sơ ý làm mất một vài số sau đó gõ lại, tức thì cái Validation Rule nó sẽ bắt liền. mà nó bắt là đâu có đúng, vì người dùng chỉ gõ lại cái mà mình lỡ xóa thôi mà?

Thông thường, bắt Rule chỉ cho những tình huống đơn giản và chỉ liên quan trong phạm vi của record hiện hành đang nhập liệu, như không được nhập chữ cho textbox phone, giá trị nhập phải lớn hơn (nhỏ hơn) cái gì đó, ...

Cái chuẩn nhất là bắt trước khi dữ liệu được cập nhật vào bảng. Không phải lúc nào sự tiện dụng tối đa cho người sử dụng cũng được đáp ứng.
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Thứ nhất, cái DLookup này phải Is Not Null mới đúng, vì nếu Is Null có nghĩa là tìm không thấy.

Thứ hai, coi chừng cái case sau:
Người dùng vào phone, đã có sẵn dữ liệu, sơ ý làm mất một vài số sau đó gõ lại, tức thì cái Validation Rule nó sẽ bắt liền. mà nó bắt là đâu có đúng, vì người dùng chỉ gõ lại cái mà mình lỡ xóa thôi mà?

Thông thường, bắt Rule chỉ cho những tình huống đơn giản và chỉ liên quan trong phạm vi của record hiện hành đang nhập liệu, như không được nhập chữ cho textbox phone, giá trị nhập phải lớn hơn (nhỏ hơn) cái gì đó, ...

Cái chuẩn nhất là bắt trước khi dữ liệu được cập nhật vào bảng. Không phải lúc nào sự tiện dụng tối đa cho người sử dụng cũng được đáp ứng.

Em nghĩ cái không tìm thấy là đúng với ý đồ của bạn ấy đấy chứ! Vì bạn ấy muốn nếu đã từng nhập số điện thoại đó rồi thì không được đem số đó nhập cho ai nữa. Có nghĩa là số đang nhập phải không tìm thấy trong bảng Customers.

Còn Vấn đề thứ 2 đúng là em chưa nghĩa tới :-( Nên nếu bạn ấy vẫn đeo đuổi ý tưởng này thì đành phải bỏ thuộc tính allow edits của form đi! (hihi, hạ sách)
-----------------------------------------------------------------------------------------
Nhờ ý kiến của anh phatnq2002, mình sửa lại 1 chút tránh trường hợp lỡ tay sửa số điện thoại rồi muốn sửa lại không được. Theo đó, bảng Customer phải có CusID là khóa chính. Và nếu nhập số phone trùng, nhưng khóa chính trùng luôn thì vẫn cho nhập số phone ( đương nhiên chuyên nhập trùng khóa thì Access đã thay ta báo lỗi). Nhờ vậy ta khắc phục được lỗi lỡ tay sửa số phone và muốn sửa lại bị báo lỗi.
Lúc đó, ValidationRule property phải nhập như sau:
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CusID] <>'" & [Forms]![Customer]![CusID] & "'") Is Null



Giả thuyết của mình là các trường Phone và CusID đều kiểu text. còn Nếu kiểu số thì bỏ các dấu nháy cho thích hợp nhé!
__________________________________________________________________________________________________
Blog Thủ Thuật Access
Thủ thuật Access|Access Cơ bản|Access nâng cao|Thế giới văn phòng|Giao lưu giải trí|Vui cười|Phim Hài|Góc thơ
 
Sửa lần cuối:
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Mình không làm được bạn ơi .
Trường CustID của mình là Autonumber ,trường Phone là Text.
Mình copy hàm của bạn thì nó báo lỗi dấu nháy. Mà mình không biết dùng hàm này ,bạn chỉ mình với
Hoặc viết code thế nào để kiểm tra,các bạn chỉ mình với.
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Nếu CustID của bạn là AutoNumber thì sửa lại 1 chút
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CustID] <>" & [Forms]![Customer]![CusID]) Is Null
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Nó vẫn báo lỗi dấu nháy bạn à,như thế này đây :
There is a(n) 'Type mismatch' in form control's ValidationRuler Property
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Hà,cảm ơn bạn,cảm ơn mọi người nhé.Mình làm được rồi
Cái hàm trên của bạn gõ đúng chỉ có điều bạn gõ thiếu
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CustID] <>" & [Forms]![Customer]![CusID]) Is Null

Làm mình đỏ mắt mấy ngày không hiểu sao cái Demo của bạn ngon lành mà copy vào của mình cứ lỗi ,do không để ý cái CustID thành CusID
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Hà,cảm ơn bạn,cảm ơn mọi người nhé.Mình làm được rồi
Cái hàm trên của bạn gõ đúng chỉ có điều bạn gõ thiếu
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CustID] <>" & [Forms]![Customer]![CusID]) Is Null

Làm mình đỏ mắt mấy ngày không hiểu sao cái Demo của bạn ngon lành mà copy vào của mình cứ lỗi ,do không để ý cái CustID thành CusID

cản ơn các bạn tôi đã làm được, nhưng có một vấn đề là tôi muốn khi nhập số phone trùng và tên trùng luôn thì mới báo lỗi có được không có nghĩa là khi hai điều kiện Phone vàTen mà đã được nhập rồi thì mới báo trùng, mong sự hồi âm của các bạn
 
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

cản ơn các bạn tôi đã làm được, nhưng có một vấn đề là tôi muốn khi nhập số phone trùng và tên trùng luôn thì mới báo lỗi có được không có nghĩa là khi hai điều kiện Phone vàTen mà đã được nhập rồi thì mới báo trùng, mong sự hồi âm của các bạn

Mình cũng đang tìm giống bạn này mà đề nghị thay đổi cái table và cái form Customer khác tên nhau đi, a em mới vào nghề học cho dễ ...

Mình có bảng tblContacts với trường ID và Mobile, có bảng NewContact
Mình viết lệnh dưới thì bị báo lỗi
ScreenHunter_09Jun092037.jpg

Mã:
DLookUp("[Mobile]","tblContacts","[Mobile] = '" & [Forms]![NewContact]![Mobile] & "' and [CustID] <>" & [Forms]![NewContact]![ID]) Is Null

bác nào giúp e chỉnh lại với
 
Sửa lần cuối:
Ðề: Có cách nào để chặn ghi trùng dữ liệu trong Access không mọi người ơi?

Hà,cảm ơn bạn,cảm ơn mọi người nhé.Mình làm được rồi
Cái hàm trên của bạn gõ đúng chỉ có điều bạn gõ thiếu
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CustID] <>" & [Forms]![Customer]![CusID]) Is Null

Làm mình đỏ mắt mấy ngày không hiểu sao cái Demo của bạn ngon lành mà copy vào của mình cứ lỗi ,do không để ý cái CustID thành CusID

Đào mộ xíu, cũng câu hỏi này khi đã bắt lỗi xong mình muốn nó xóa luôn các ký tự đã nhập trong Phone khi đã trùng thì thêm điều kiện như thế nào
 

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


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

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

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top