Đánh giá chủ đề:
  • 5 Votes - 3.8 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Chặn ghi trùng dữ liệu với Validaction
#1
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
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thongngat
#2
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 ạ

[Hình: ScreenHunter_09Jun092037.jpg]

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
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#3
Bạn có thể xem file demo. Mình không biết thực tế bạn thế nào để giúp
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn uronmapu
#4
(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

[Hình: ScreenHunter_09Jun092037.jpg]

Cảm ơn bác và mọi người nhiều
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#5
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:
Mã:
=DLookUp("[Mobile]","tblNames","[Mobile] = '" & [Forms]![frmNewContact]![text4] & "'") Is Null
ValidationText property :
Mã:
"Số phone này đã được nhập , vui lòng xem lại"
Bản Fix:
https://dl.dropbox.com/u/38360355/Access...12_fix.rar
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn uronmapu
#6
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
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#7
(12-06-12, 12:35 PM)uronmapu Đã viết: 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

Vậy nếu tên khác mà mobile trùng thì thế nào? 2 người xài chung 1 số?
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn uronmapu
#8
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
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#9
(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:
Mã:
=DLookUp("[Mobile]","tblNames","[Mobile] = '" & [Forms]![frmNewContact]![text4] & "'") Is Null
ValidationText property :
Mã:
"Số phone này đã được nhập , vui lòng xem lại"
Bản Fix:
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
Chữ ký của camau Xin chào, mình là camau, Tham gia http://thuthuataccess.com/forum từ ngày 30-07 -12.
Reply
Những người đã cảm ơn
#10
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.
Chữ ký của LeThuy LeThuy,gia nhập Thủ Thuật Access từ 29-09 -15.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Cách thêm dữ liệu vào form Main_Sub NganNguyen 1 24 6 Giờ trước
Bài mới nhất: maidinhdan
  [Help] Cập nhật combobox 2 từ combobox 1 (dữ liệu ở nhiều bảng) votinh.tq 6 200 22-11-16, 11:34 PM
Bài mới nhất: votinh.tq
  [Hỏi] Tổng hợp dữ liệu theo thời gian hoanghai902 1 139 21-10-16, 09:55 PM
Bài mới nhất: maidinhdan
  [Help] Áp dụng query lọc dữ liệu nhập vào form amazonvn82 8 1,327 05-10-16, 03:11 PM
Bài mới nhất: amazonvn82
  Click đúp chuột hiện form và cập nhật dữ liệu theo số phiếu Ranju 1 129 05-10-16, 11:02 AM
Bài mới nhất: lmthu

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ