ch0c0ly_bjbj

New Member
Trong Validation Ruler của Table hay 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 tất cả người !
 

ductan0305

New Member

Trích:







Nguyên văn bởi phatnq2002


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, vừa 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 (nhiều) đ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é!
 

Trích:







Nguyên văn bởi LoveBlue


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, vừa 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 (nhiều) đa cho người sử dụng cũng được đáp ứng.
 

hllc_yeuanh

New Member

Trích:







Nguyên văn bởi glasseggs


Trong Validation Ruler của Table hay 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 tất cả 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
 

Các chủ đề có liên quan khác

Top