• Chặn ghi trùng dữ liệu với Validaction
  • 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 ạ

    [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
  • 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

    [Hình: ScreenHunter_09Jun092037.jpg]

    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:
    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
  • 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

    (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ố?
  • 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:
    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
  • 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.