Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

1/14/10

Chặn ghi trùng dữ liệu với Validaction

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:
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CusID] <>'" & [Forms]![Customer]![CusID] & "'") Is Null


ValidationText property : "Số phone này đã được nhập , vui lòng xem lại"

Demo

____________________________________________________________________________________
Thảo luận thêm: http://thuthuataccess.com/forum

5 comments:

  1. Có sửa 1 chút, nếu thấy trùng số phone nhưng trùng thêm mã khách hàng thì vẫn cho thêm, như vậy tránh được trường hợp không cho sửa.

    ReplyDelete
  2. [quote]Giả sử bạn có 1 table là Customers(maKH,phone,...), 1 form tên là Customers[/quote]
    Ví dụ gì mà hiểm hóc thế?
    để 2 tên khác nhau người ta còn biết đường mà mò chứ !
    Lỗi loạn lên rồi :@

    ReplyDelete
  3. Có chương trình demo kèm theo đấy bạn! Sao không down về xem thử mà than vãn! Giống như chưa làm thì ai cũng bảo khó, nhưng làm rồi thấy dễ ợt à!

    ReplyDelete
  4. 'Các ban có the bỏ bớt dòng mã phía trên
    'Cach này kiểm tra mã bị trùng rất hiệu quả

    Private Sub cmdLuuthongtin_Click()
    'On Error GoTo Err_cmdLuuthongtin_Click
    Dim Dulieu As Database
    Dim mautin As Recordset
    Set Dulieu = CurrentDb()
    Set mautin = Dulieu.OpenRecordset("THONGTIN", dbOpenTable)
    Do While Not mautin.EOF
    If mautin!MA_KH = Me.MA_KH Then
    If mautin!TEN_KH = Me.TEN_KH Then
    mautin.Edit
    mautin.Update
    Exit Do
    Exit Sub
    DoCmd.Close
    Else
    MsgBox "Ma khach hang da bi trung", vbInformation, "Canh bao"
    Me.MA_KH.SetFocus
    Me.MA_KH = ""

    Exit Sub
    End If
    Else

    mautin.Edit
    mautin.Update
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.Close
    Exit Sub

    End If
    Loop
    mautin.Close
    Dulieu.Close
    DoCmd.Close

    'Exit_cmdLuuthongtin_Click:
    ' Exit Sub

    'Err_cmdLuuthongtin_Click:
    'MsgBox Err.Description
    'Resume Exit_cmdLuuthongtin_Click

    End Sub

    ReplyDelete
  5. cản ơn các bạn tôi đã làm được, nhưng có một vấn đề là tôi muốn khi nhập số phone trùng và tên trùng luôn thì mới báo lỗi có được không có nghĩa là khi hai điều kiện Phone vàTen mà đã được nhập rồi thì mới báo trùng, mong sự hồi âm của các bạn

    ReplyDelete

» Hãy để lại tên, email của bạn khi bạn post comment, để mình có thể dễ dàng trả lời comment của bạn khi cần.
» Có thể sử dụng các thẻ < b>,< i>,< a>. Và các icon thông dụng trên YM