none
Evitar registro duplicado RRS feed

  • Pergunta

  • Olá, pessoal!

    Estou com um problema aqui que é o seguinte. TÔ desenvolvendo um projeto VBA que consiste em efetuar cadastro de funcionários temporários para um de nossos clientes.

    Acontece que não consigo desenvolver um código que faça a verificação por CPF para que o funcionário não seja cadastrado em duplicidade.

    TÔ começando agora a mexer com VBA e não tenho conhecimento suficiente para este desenvolvimento.

    Obrigado quem puder ajudar.

    Junior

    sexta-feira, 23 de setembro de 2016 17:42

Respostas

  • Suponha que os CPFs sejam armazenados na coluna A:

    Sub Main()
        Dim MatchRow As Long
        Dim ws As Worksheet
        Dim CPF As String
        
        Set ws = ThisWorkbook.Worksheets("Plan1")
        CPF = InputBox("Digite o CPF:")
        If CPF = "" Then Exit Sub
        
        If Not IsError(Application.Match(CPF, ws.Columns("A"), 0)) Then
            MsgBox "CPF já existe!", vbExclamation
            Exit Sub
        End If
        
        '...
        
        MsgBox "CPF cadastrado!", vbInformation
    End Sub
    


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    segunda-feira, 26 de setembro de 2016 10:28
    Moderador

Todas as Respostas

  • VEJA ESTE EXEMPLO E ADAPTA A SUA NECESSIDADE ELE VERIFICA SE NÃO EXISTE ELE SALVA, SE JÁ EXISTE ELE ATUALIZA DADOS NÃO DEIXA DUPLICAR. CÓDIGO DO BOTÃO SALVAR

     If obterAsos(txtnomeAsos.Text) = False Then

                        Dim sql As String = "INSERT INTO Tab_Asos (Nome,Tipo_Exame,Data_Exame,Proximo_exame,Obs) VALUES (?,?,?,?,?)"
                        Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

                        cmd.Parameters.Add(New OleDb.OleDbParameter("@nome", txtnomeAsos.Text))
                        cmd.Parameters.Add(New OleDb.OleDbParameter("@Tipo_Exame", txtexame.Text))
                        cmd.Parameters.Add(New OleDb.OleDbParameter("@Data_Exame", txtdataExame.Text))
                        cmd.Parameters.Add(New OleDb.OleDbParameter("@Proximo_exame", txtProximoExame.Text))
                        cmd.Parameters.Add(New OleDb.OleDbParameter("@Obs", txtObsAsos.Text))
                        cmd.ExecuteNonQuery()
                        MsgBox("CADASTRO SALVO COM SUCESSO", MsgBoxStyle.Information, Title:="Sucesso!")
                        txtnomeAsos.Text = Nothing
                        txtexame.Text = Nothing
                        txtdataExame.Text = Nothing
                        txtProximoExame.Text = Nothing
                        txtObsAsos.Text = Nothing
                        txtnomeAsos.Focus()

                    Else
                        Dim sql As String
                        sql = "UPDATE Tab_Asos SET Nome='" & txtapagarnomeAsos.Text & "'"
                        sql = sql & ",Tipo_Exame ='" & txtexame.Text & "'"
                        sql = sql & ",Data_Exame ='" & txtdataExame.Text & "'"
                        sql = sql & ",Proximo_exame ='" & txtProximoExame.Text & "'"
                        sql = sql & ",Obs ='" & txtObsAsos.Text & "'"

                        sql = sql & "  WHERE Nome='" & txtapagarnomeAsos.Text & "'"
                        Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
                        cmd.ExecuteNonQuery()
                    End If
                    MsgBox("EXAME DE ASOS   ATUALIZADO COM  SUCESSO ", MsgBoxStyle.Information, Title:="Sucesso!")

                Catch ex As Exception
                    MsgBox(ex.Message)

                Finally
                End Try

    sexta-feira, 23 de setembro de 2016 18:13
  • @Junior,

    Está usando Access ou Excel?


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sábado, 24 de setembro de 2016 16:01
    Moderador
  • @Felipe,

    To usando o Excel 2013.

    @Arlindo,

    Obrigado pela dica, mas não quero que ele salve se encontrar um dado igual. Preciso que ele me alerte que aquele CPF já está registrado.

    Sds,

    Junior

    domingo, 25 de setembro de 2016 03:25
  • Suponha que os CPFs sejam armazenados na coluna A:

    Sub Main()
        Dim MatchRow As Long
        Dim ws As Worksheet
        Dim CPF As String
        
        Set ws = ThisWorkbook.Worksheets("Plan1")
        CPF = InputBox("Digite o CPF:")
        If CPF = "" Then Exit Sub
        
        If Not IsError(Application.Match(CPF, ws.Columns("A"), 0)) Then
            MsgBox "CPF já existe!", vbExclamation
            Exit Sub
        End If
        
        '...
        
        MsgBox "CPF cadastrado!", vbInformation
    End Sub
    


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    segunda-feira, 26 de setembro de 2016 10:28
    Moderador
  • @Felipe,

    Fiz as adaptações necessárias aqui e deu tudo certo.

    Era isso mesmo que eu precisava!

    Muito obrigado pela ajuda! : )

    Junior

    terça-feira, 27 de setembro de 2016 17:14