Jump to content
Fórum Script Brasil
  • 0

Array para comparar CPF


Fells

Question

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.

Edited by Fells
Adicionar tag CODE
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

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

Edited by kuroi
Adicionar tag CODE
Link to comment
Share on other 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

Edited by Fells
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...