Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leozeferino

Apagar dados repetidos

Recommended Posts

Olá.Tenho uma tabela com mais de 9.000 nomes e e-mails. Porém há muitos e-mails repetidos. Existe algum código que eu posso fazer para deletar esses e-mails repetidos (as vezes o nome não é o mesmo)? Ou teria como deleta-los automaticamente pelo access???Valewssssss! :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

seleciona os emails distintos depois voce usa-os em um loop onde voce pergunta se tem amis de uma ocorrencia se tiver deleta senão não faz nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

seleciona os emails distintos depois voce usa-os em um loop onde voce pergunta se tem amis de uma ocorrencia se tiver deleta senão não faz nada

Boa kra...só pra lembrar....Para pegar emails distintos, o codigo pode ser algo assim?
sql = "select distinct Email FROM Newsletter"rstRegistro.Open sql, Conex, 3, 3
Depois farei um loop com whilee como posso fazer para ver se tem mais de uma ocorrencia?Desde já,Valewsss!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro do loop voce pode selecionar a quantidade (COUNT) de emails iguais ao registro atual

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro do loop voce pode selecionar a quantidade (COUNT) de emails iguais ao registro atual

Kra, fiz esse código abaixo mas ele apagou todos os registros. Como posso fazer para apagar somente os repetidos?
<%'Criando conexãoSet conex=Server.createObject("ADODB.connection")conex.Open "DBQ=" & Server.MapPath("banco.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};" 'Criando o RecordSet set rstRegistro=server.createobject("ADODB.recordset")   rstRegistro.cursorlocation=2  rstRegistro.cursortype=1  rstRegistro.locktype=3 sql = "Select distinct Email FROM Newsletter"rstRegistro.Open sql, Conex, 3, 3rstRegistro.movefirstwhile not rstRegistro.eofnEmail = rstRegistro("Email")set rstEmail=server.createobject("ADODB.recordset")ssql = "Select * FROM Newsletter where Email = '" & nEmail & "'"rstEmail.Open ssql, Conex, 3, 3if not rstEmail.eof thenrstEmail.closerstEmail.open "DELETE * FROM Newsletter where Email = '" & nEmail & "' ", ConexelserstEmail.closeend ifrstRegistro.movenextwend%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim

 

<%Set conex=Server.createObject("ADODB.connection")conex.Open "DBQ=" & Server.MapPath("banco.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"SET RS = Conex.Execute("Select distinct Email FROM Newsletter")WHILE NOT RS.EOFnEmail = RS("Email")SET RS2 = Conex.Execute("Select COUNT(Email) AS TOTAL FROM Newsletter where Email = '" & nEmail & "'")IF TOTAL > 1 THEN	SET RS3 = server.createobject("ADODB.recordset")	RS3.Open "SELECT * FROM Newsletter where Email = '" & nEmail & "'", Conex, 3, 3	IF NOT RS3.EOF		RS3.Delete	END IF	RS3.Close	Set RS3 = NothingEND IFRS2.CloseSET RS2 = NothingRS.MOVENEXTWENDRS.CloseSET RS = Nothing%>

Bem não testei mas deve apagar uma ocorrencia de cada email repetido

 

Se tiver emails que seja repetido 3 ou mais vezes basta executar o codigo ate não excluir mais nada...

 

Ali na parte de excluir bastaria colocar um loop para excluir de uma vez só mas tente assim mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltava atribui o total apenas

 

e um THEN na hora de deletar

 

<%Set conex=Server.createObject("ADODB.connection")conex.Open "DBQ=" & Server.MapPath("banco.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"SET RS = Conex.Execute("Select distinct Email FROM Newsletter")WHILE NOT RS.EOFnEmail = RS("Email")SET RS2 = Conex.Execute("Select COUNT(Email) AS TOTAL FROM Newsletter where Email = '" & nEmail & "'")TOTAL = RS2("TOTAL")IF TOTAL > 1 THEN	SET RS3 = server.createobject("ADODB.recordset")	RS3.Open "SELECT * FROM Newsletter where Email = '" & nEmail & "'", Conex, 3, 3	IF NOT RS3.EOF THEN		RS3.Delete	END IF	RS3.Close	Set RS3 = NothingEND IFRS2.CloseSET RS2 = NothingRS.MOVENEXTWENDRS.CloseSET RS = Nothing%>

tente agora...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, podicrer.Agora deu certo.Valewsss. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Abraços!

de nada tiozinho... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif nada como testar o codigo.. o primeiro mandei só no olho ai passou os dois furos... :o então como não tinha como testar o ASP pois tou sem acessoa o IIS no trampo colei o codigo todo num formulario do Access e adaptei o que tinha que adaptar para funcionar e percebi os dois erros :lol: Agora ta tudo em paz ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.