Ir para conteúdo
Fórum Script Brasil
  • 0

Array para comparar CPF


Fells

Pergunta

Bom dia galera, beleza?

Como crio um array de CPF não repetidos?

Vou explicar:

Tenho um banco com varios campos de CPF's (CPF_responsavel, CPF_inspetor, CPF_inspetor2, CPF_inspetor3 ..... ) que podem ser repetidos. Por exemplo, no CPF_inspetor2 tenho o CPF 99988877766. Se eu verificar o campo CPF_inspetor3 eu posso achar o mesmo CPF 99988877766.

O problema não é repetir, o problema é que tem um programa (em VB6) que manda emails para essas pessoas assim que localiza o CPF da mesma em algum desses campos.

Para evitar que a pessoa receba 20 emails iguais (caso o programa ache o CPF dela 20 vezes), queria implementar no codigo um array. Assim a ideia seria comparar o CPF e ver se ele é repetido ou não.

Pego um CPF insiro no vetor, pego outro CPF comparo com o(s) CPF(s) que tem no vetor. Se for igual não guardo ele no array, se for diferente GUARDO no array. Pego outro CPF e comparo novamente e assim por diante até que não tenha mais CPF para comparar.

Desta forma terei uma lista com apenas um CPF de cada pessoa e encaminho apenas um email.

Deu para entender mais o menos galera?

Sou iniciante e não manjo muito de array. Mais preciso desenvolver algo urgente para solucionar o problema.

Abraços.

Editado por Fells
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Seguinte, eu peguei um programa em VB na sexta feira e recebi a missão de criar (de preferencia) um array que fizesse isso que informei na 1ª explicação. Mas eu não sei naaaaaaaada de VB, então me perdoem a "burrice".

No BD tem 6 campos diferentes que guardam CPF's "diferentes". O programa roda as instruções abaixo:

'Instrução para selecionar os dados do Inspetor 1 (1 de 6)
'Essa instrução se repete + 5 vezes para pegar o conteudo dos outros inspetores/campos CPF
strSql = "SELECT Count(Instr_local.CPF_inspetor) as numInstrumentos, Instr_local.CPF_inspetor, Pessoas.nome , Login.Email"
strSql = strSql & " FROM Instrumentos"
strSql = strSql & " INNER JOIN Instr_local ON Instrumentos.Cod_local = Instr_local.Cod_local"
strSql = strSql & " INNER JOIN Pessoas ON Instr_local.CPF_inspetor = Pessoas.CPF"
strSql = strSql & " INNER JOIN Login ON Pessoas.CPF = Login.CPF"
strSql = strSql & " WHERE (" 'Manda Apenas as calibrações vencidas
strSql = strSql & " YEAR(Instrumentos.Prox_calibr) < YEAR(GETDATE()) OR"
strSql = strSql & " MONTH(Instrumentos.Prox_calibr) < MONTH(GETDATE()) AND YEAR(Instrumentos.Prox_calibr) = YEAR(GETDATE())"
strSql = strSql & " )"
strSql = strSql & " GROUP BY Instr_local.CPF_inspetor, Pessoas.Nome, Login.Email"


'Executa a consulta SQL
Set objRS = CreateObject("ADODB.Recordset")
objRS.Open strSql, objCon, 3, 3
If Not (objRS.BOF And objRS.EOF) Then
While Not objRS.EOF

'Define os dados a serem enviados para o usuário via email
strNome = objRS("Nome")
strEmail = objRS("Email")
strCPF = objRS("CPF_inspetor")
strLink = "http://" & strServidor & "/Qualidade/Calibracao/Email_instr_calibr4.asp?CPF=" & strCPF
strMensagem = strNome & "<br><br>Há <span style='color: #ff0000;' >" & objRS("numInstrumentos") & "</span> instrumento(s) de sua responsanbilidade que precisa(m) ser calibrado(s).<br><br><br>Para consultar, <a href=" & strLink & ">clique aqui</a>.<br><br><br>"

'Envia a mensagem de aviso da calibração
str = Envia_email(strDeNome, strDeEmail, strNome, strEmail, strAssunto, strMensagem)
objRS.MoveNext
Wend
End If

Se deixar assim do jeito que esta (lembrando que há mais CPF's de outros inspetores), cada vez que o a instrução localizar o CPF repetido da pessoa, ele mandará um e-mail (o mesmo e-mail).

Por isso a necessidade do Array.

Quando o programa processar o inspetor 1, o array "guardaria" os CPF's encontrados sem repeti-los. Quando o programa rodar a intrução do inspetor 2, o array já tem alguns CPF's lá que irá comparar com os CPF's encontrados para o inspetor 2. Se achasse algum igual ele não faria nada pois já tem aquele CPF, mas se ele achasse algum diferente do que ele já possui no array adicionaria na lista para que quando for para o inspetor 3, 4, 5 e 6 fazer a mesma comparação, adicionar ou não os CPF's e encaminhar apenas um e-mail, uma unica vez, para os inspetores contidos no array.

Podem me ajudar por favor????

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0

Vamos resumir: Não entendo bulhufas... então PORRR FAVOOOR me ajudem a criar um laço onde eu pego um numero de cpf coloco no array, pego outro cpf e comparo com o(s) que esta(ão) no array. Se já tiver algum cpf igual ele pula ou não faz nada ou qualquer coisa, mais não insere no array. Se não tiver nenhum cpf igual a aquele comparado ele é inserido no array.

Quero um array com varios cpfs, porem que nenhum se repita.

O resto eu me improviso.

Só uma duvida: isso abaixo ou algo do tipo, funcionaria?

If Array = Nothing THEN

Array(0) strCPF ' variavel que vai armazenar o num do cpf do BD

End If

For i = 0 to 19 '(ou FOR i = 0 to Array.Length)

If Array(i) = strCPF

Next

Else

Array(i) = strCPF

End If

Editado por Fells
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...