-
Chặn ghi trùng dữ liệu với Validaction
Noname > 27-08-10, 10:07 AM
Hỏ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.
Đáp:
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:
Mã:DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CusID] <>'" & [Forms]![Customer]![CusID] & "'") Is Null
Mã:ValidationText property : "Số phone này đã được nhập , vui lòng xem lại"
Demo -
RE: Chặn ghi trùng dữ liệu với Validaction
uronmapu > 09-06-12, 08:30 PM
Form và Table cùng tên thế thì e biết phân biệt chỗ nào bác ởi????? mà bá viết CusID có sai chỗ nào ko ạ?
Em làm theo bị lỗi này ạ
Em có 1 bảng tblContacts có trường Mobile với ID là khóa chính, mobile ở dạng texr, em có 1 bảng NewContact
Bác có thể chỉ bảo e đoạn code sau sai ở đâu ko ạ
Mã:DLookUp("[Mobile]","tblContacts","[Mobile] = '" & [Forms]![NewContact]![Mobile] & "' and [CustID] <>" & [Forms]![NewContact]![ID]) Is Null
Xin bác noname tư vấn
Thanks -
RE: Chặn ghi trùng dữ liệu với Validaction
Noname > 11-06-12, 08:02 PM
Bạn có thể xem file demo. Mình không biết thực tế bạn thế nào để giúp -
RE: Chặn ghi trùng dữ liệu với Validaction
uronmapu > 11-06-12, 11:45 PM
(11-06-12, 08:02 PM)Noname Đã viết: Bạn có thể xem file demo. Mình không biết thực tế bạn thế nào để giúp
Bác có thể xem file đính kèm của e và xem lỗi ở đâu được ko ạ?
http://www.mediafire.com/?avvg8h0dy0qu856
E có 1 table tblNames có RecordID là khóa chính, First, Last và Mobile là các trường
Một bảng frmNewContact để nhập giá trị mới với First, Last, Mobile
Khi chạy bảng frmSearchExample và click vào nút NewContact thì bảng NewContact sẽ mở ra
E nhập thông tin mới vào đây, nếu nhập số mobile đã trùng thì thông báo là đã có số mobile này rồi và thoát
Em làm theo bác thì bị lỗi
Cảm ơn bác và mọi người nhiều -
RE: Chặn ghi trùng dữ liệu với Validaction
Noname > 12-06-12, 11:33 AM
Form frmNewContact của bạn không có textbox nào tên là RecordID hay ID cả. Vì vậy bạn đặt rules không được là phải rồi, nếu chỉ xem xét mỗi số mobile
(Trên form của bạn đang là Text4), thì nhập như sau:
ValidationRule property:
ValidationText property :Mã:=DLookUp("[Mobile]","tblNames","[Mobile] = '" & [Forms]![frmNewContact]![text4] & "'") Is Null
Bản Fix:Mã:"Số phone này đã được nhập , vui lòng xem lại"
https://dl.dropbox.com/u/38360355/Access...12_fix.rar -
RE: Chặn ghi trùng dữ liệu với Validaction
uronmapu > 12-06-12, 12:35 PM
Tuyệt vời bác NoName
Có thể chặn việc nhầm 2 thông tin 1 lúc được ko ạ?
Ví dụ nếu nhập tên trùng rồi mà nhập tiếp số mobile trùng nữa thì có thông báo là Tên và Mobile trùng
Cảm ơn bác -
RE: Chặn ghi trùng dữ liệu với Validaction
Noname > 12-06-12, 01:51 PM
-
RE: Chặn ghi trùng dữ liệu với Validaction
uronmapu > 12-06-12, 02:01 PM
Nói như bác cũng đúng, thật khó để giải quyết vấn đề trùng lặp nếu có nhiều trường thông tin trong bảng ....
Xin bác ý kiến thêm -
RE: Chặn ghi trùng dữ liệu với Validaction
camau > 22-10-12, 04:32 PM
(12-06-12, 11:33 AM)Noname Đã viết: Form frmNewContact của bạn không có textbox nào tên là RecordID hay ID cả. Vì vậy bạn đặt rules không được là phải rồi, nếu chỉ xem xét mỗi số mobile
(Trên form của bạn đang là Text4), thì nhập như sau:
ValidationRule property:
ValidationText property :Mã:=DLookUp("[Mobile]","tblNames","[Mobile] = '" & [Forms]![frmNewContact]![text4] & "'") Is Null
Bản Fix:Mã:"Số phone này đã được nhập , vui lòng xem lại"
https://dl.dropbox.com/u/38360355/Access...12_fix.rar
bạn thử dùng câu lệnh sau nhé, mình đang sài thấy OK lắm:
Đầu tiên, tại trường Phone ở Table bạn nên chọn YES ở mục Required, trong hộp Field Properties để bắt buột phải nhập vào trường Phone, không được để trống.
Tiếp theo tạo nút LƯU bằng công cụ Command Buttton có câu lệnh thế này để trong lúc nhập bạn nhấn vào mà kiểm tra.
Option Compare Database
Private Sub LUU_Click()
If IsNull(Me.Phone) = True Then
MsgBox "CHUA NHAP SO PHONE - NHAP VAO", , "THONG BAO"
Me.Phone.SetFocus
Exit Sub
ElseIf DCount("Phone", "Customer", "Phone='" & Phone & "'") = 1 Then
MsgBox "SO PHONE CO NHAP ROI - NHAP LAI", , "THONG BAO"
Me.Phone.SetFocus
Exit Sub
Else
End If
DoCmd.RunCommand acCmdSaveRecord
End Sub
Chúc bạn thành công -
RE: Chặn ghi trùng dữ liệu với Validaction
LeThuy > 29-09-15, 10:19 PM
Không biết bài viết này lâu rồi có ai trả lời mình không, mình muốn dựa vào câu lệnh của Noname nhưng với trường hợp: có form tên: bienlai(....,kyhieu,soquyen,sobl). Mình muốn cả 3 cột này trùng nhau thì mới báo lỗi, còn nếu kyhieu, soquyen trùng nhưng khác sobl thì vân cho nhập bình thường. Thì câu lệnh thế nào ạ. Bạn có thể giúp mình được không.