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é!