locked
Duplicidade No ! RRS feed

  • Pergunta

  • Bom dia
    Colaboradores

    Eu tenho uma base de dados no access 2007 onde estou cadastrando dados de contatos, atraves de um formulário integrado com a tabela no bd. Alguém sabe um caminho mais simples para não cadastrar os mesmos dados de contatos sem dar duplicidade? Como faço ?


    J3
    quinta-feira, 29 de outubro de 2009 11:24

Todas as Respostas

  • Faça o teste no evento Antes de atualizar do seu campo:


    Private Sub NomeCidade_BeforeUpdate(Cancel As Integer)
    '---------------------------------------------------------------------------------------
    ' Procedimento : NomeCidade_BeforeUpdate
    ' Data e Hora  : 13/08/07 12:13
    ' Autor        : Osmar José Correia Júnior
    ' O que faz    : Verifica se a cidade já não está cadastrada. Se estiver, carrega
    '---------------------------------------------------------------------------------------
    On Error GoTo Erro_NomeCidade_BeforeUpdate

    Dim strCodigo As String
    Dim rs As DAO.Recordset

        If IsNull(DLookup("IdCidade", "tblCidades", "([NomeCidade] = '" & Forms![frmManutençãoDeCidades]![NomeCidade] & "')")) Then
            GoTo Saida ' Não existe na tabela - Cadastra novo
        End If
        If MsgBox("A Cidade " & UCase(Me!NomeCidade) & " já existe. Deseja alterar?", vbExclamation + vbYesNo, "Já existe...") = vbNo Then
            Cancel = True   ' Cancela a entrada e permanece no campo
            GoTo Saida
        End If
        strCodigo = Me!NomeCidade
        Set rs = Me.RecordsetClone
        rs.FindFirst "NomeCidade = '" & UCase(strCodigo) & "'"
        Me.Undo
        Me.Bookmark = rs.Bookmark
        Set rs = Nothing
    Saida:
       Exit Sub
    Erro_NomeCidade_BeforeUpdate:
        MsgBox Err.Description & vbCrLf & vbCrLf & "No módulo Form_frmManutençãoDeCidades, tipo Documento VBA, procedimento NomeCidade_BeforeUpdate", vbExclamation + vbOKOnly, "Erro: " & CStr(Err.Number)
    #If DESENV Then
        Stop
        Resume
    #End If
        Cancel = True
        GoTo Saida
    End Sub


    Bem aventurados os pessimistas: eles fazem backups!!!
    quinta-feira, 29 de outubro de 2009 13:18
  • Onde eu posso escrever o código no access 2007? Não conheço muito bem ?
    J3
    quinta-feira, 29 de outubro de 2009 23:44
  • Coloque o cursor no campo do formulário. Exiba as propriedades. Na aba Evento, dê dois cliques na linha Antes de atualizar (aparece [Procedimento de evento]). Clique no botão com ...

    Bem aventurados os pessimistas: eles fazem backups!!!
    sexta-feira, 30 de outubro de 2009 11:52
  • Amigo, bom dia.

    Fiz alterações em algumas variáveis e não funcionou ? Vê o código abaixo:
    //------------------------------------------------------------------------------------

    Private Sub Empresa_BeforeUpdate(Cancel As Integer)
    On Error GoTo Erro_Empresa_BeforeUpdate

    Dim strCodigo As String
    Dim rs As DAO.Recordset

        If IsNull(DLookup("Id_prospects", "Prospects", "([Empresa] = '" & Forms![Form_Prospects]![Empresa] & "')")) Then
            GoTo Saida ' Não existe na tabela - Cadastra novo
        End If
        If MsgBox("A Empresa " & UCase(Me!Empresa) & " já existe. Deseja alterar?", vbExclamation + vbYesNo, "Já existe...") = vbNo Then
            Cancel = True   ' Cancela a entrada e permanece no campo
            GoTo Saida
        End If
        strCodigo = Me!Empresa
        Set rs = Me.RecordsetClone
        rs.FindFirst "Empresa = '" & UCase(strCodigo) & "'"
        Me.Undo
        Me.Bookmark = rs.Bookmark
        Set rs = Nothing
    Saida:
       Exit Sub
    Erro_Empresa_BeforeUpdate:
        MsgBox Err.Description & vbCrLf & vbCrLf & "No módulo Form_Prospects, tipo Documento VBA, procedimento Empresa_BeforeUpdate", vbExclamation + vbOKOnly, "Erro: " & CStr(Err.Number)
    #If DESENV Then
        Stop
        Resume
    #End If
        Cancel = True
        GoTo Saida
    End Sub


    J3
    sexta-feira, 30 de outubro de 2009 13:07
  • O que acontece? Tem mensagem de erro? Se sim, em que linha?

    Bem aventurados os pessimistas: eles fazem backups!!!
    sexta-feira, 30 de outubro de 2009 14:39
  • Não aparece nenhuma mensagem de erro.

    J3
    sábado, 31 de outubro de 2009 10:57
  • Verifique nesta linha:

     If IsNull(DLookup("Id_prospects", "Prospects", "[Empresa] = '" & Forms![Form_Prospects]![Empresa] & "'")) Then

    Se Forms![Form_Prospects]![Empresa] é texto deve ser codificado:  

        If IsNull(DLookup("Id_prospects", "Prospects", "[Empresa] = '" & Forms![Form_Prospects]![Empresa] & "'")) Then

    Se Forms![Form_Prospects]![Empresa] é data deve ser codificado

        If IsNull(DLookup("Id_prospects", "Prospects", "[Empresa] = #" & Format(Forms![Form_Prospects]![Empresa], "mm/dd/yyyy")  & "#")) Then

    Se Forms![Form_Prospects]![Empresa] é numérico deve ser codificado

        If IsNull(DLookup("Id_prospects", "Prospects", "[Empresa] = " & Forms![Form_Prospects]![Empresa])) Then



    Bem aventurados os pessimistas: eles fazem backups!!!
    terça-feira, 3 de novembro de 2009 12:53