ERG_M7 Postado Janeiro 30, 2009 Denunciar Share Postado Janeiro 30, 2009 (editado) Olá pessoal, preciso de uma ajuda. Tenho que comparar dois arquivos csv e gravar as linhas presentes em ambos em um 3º Arquivo: No primeiro arquivo eu tenho: e-mail; nome; departamento; ramal;No segundo arquivo temos : e-mail; id; nome_para_exibição; Data_de_ativação;NO terceiro arqruivo eu preciso eu preciso das linhas do primeiro arquivo, cujo o e-mail consta no segundo arquivo.Eu fiz o seguinte:<% Set File = Server.CreateObject("Scripting.FileSystemObject") Set arquivo1 = File.OpenTextFile(Server.MapPath("ListaDeEmaiAlfal.csv")) Set arquivo2 = File.OpenTextFile(Server.MapPath("relatorio_email_28012009.csv")) Set comparado = File.OpenTextFile(Server.MapPath("comparado.csv"))i While (not arquivo1.AtEndOfStream) LeArquivo1 = arquivo1.readline SeparaLinha1 = split(LeArquivo1,";") While (not arquivo2.AtEndOfStream) LeArquvio2 = arquivo2.readline SeparaLinha2 = split(LeArquivo2,";") If SeparaLinha1(0) = SeparaLinha2 (0) then comparado.writeline LeArquivo1 End If Wend Wend arquivo1.close arquivo2.close comparado.close %>Mas não ta rolando.Será qie alguém pode me ajudar? Editado Janeiro 30, 2009 por Rafael Spilki Tags code Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 webdeveloper Postado Janeiro 30, 2009 Denunciar Share Postado Janeiro 30, 2009 Está dando algum erro ou coisa do tipo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ERG_M7 Postado Fevereiro 2, 2009 Autor Denunciar Share Postado Fevereiro 2, 2009 (editado) Está dando algum erro ou coisa do tipo?Não esta dando erro, mas a as informações gravadas no arquivo de saída não estão corretas.Pelo que pude perceber, é como se a rotina estivesse lendo a primeira linha do primeiro arquivo, compara com todo o segundo arquivo...Pega a segunda linha do primeiro, mas não consegue mais com parar com o segundo e assim não aparece mais nenhuma informação no arquivo de saída. Editado Fevereiro 2, 2009 por ERG_M7 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Fevereiro 2, 2009 Denunciar Share Postado Fevereiro 2, 2009 Acho que o jeito seria colocar o último set dentro do primeiro loop... acho! não entendi muito bem a dinâmica... mas deve resolver... teste aí e poste aqui os resultados... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 webdeveloper Postado Fevereiro 2, 2009 Denunciar Share Postado Fevereiro 2, 2009 Aparentemente não tem nada de errado no seu código, ele está comparando cada linha do arquivo 1 com todas as linhas do arquivo 2, caso o primeiro campo das linhas sejam EXATAMENTE iguais, ele grava no terceiro arquivo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ERG_M7 Postado Fevereiro 3, 2009 Autor Denunciar Share Postado Fevereiro 3, 2009 (editado) Graças a dica de um amigo, achei o problema e com outra dica a solução.Como pensei, do jeito que esta o segundo loop só vai ser executad uma vez pois a partir deste instante o segundo arquivo sempre vai estar no final e não haverá nova comparação.A solução encontrada foi:Dim File1(),File2() i = 0 j = 0 Set File = CreateObject("Scripting.FileSystemObject") Set arquivo1 = File.OpenTextFile(Server.MapPath(Server.MapPath("ListaDeEmaiAlfal.csv"), 1) Set arquivo2 = File.OpenTextFile(Server.MapPath(Server.MapPath("relatorio_email_28012009.csv), 1) arquivo3 = Server.MapPath("comparado.csv") Do Until arquivo1.AtEndOfStream Redim Preserve File1(i) File1(i) = arquivo1.ReadLine i = i + 1 Loop Do Until arquivo2.AtEndOfStream Redim Preserve File2(j) File2(j) = arquivo2.ReadLine j = j + 1 Loop arquivo1.Close arquivo2.Close For l = Lbound(File1) to UBound(File1) Step 1 SeparaLinha1 = split(File1(l),";") For m = Lbound(File2) to UBound(File2) Step 1 SeparaLinha2 = split(arrFile2(m),";") if Separalinha1(0) = Separalinha2(0) Then Set NewFile = File.OpenTextFile(arquivo3, 8, True, 0) NewFile.WriteLine File1(l) NewFile.Close End if Next NextE Funcionou Editado Fevereiro 3, 2009 por ERG_M7 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 webdeveloper Postado Fevereiro 6, 2009 Denunciar Share Postado Fevereiro 6, 2009 Parabéns pela solução. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ERG_M7
Olá pessoal, preciso de uma ajuda.
Tenho que comparar dois arquivos csv e gravar as linhas presentes em ambos em um 3º Arquivo:
No primeiro arquivo eu tenho: e-mail; nome; departamento; ramal;
No segundo arquivo temos : e-mail; id; nome_para_exibição; Data_de_ativação;
NO terceiro arqruivo eu preciso eu preciso das linhas do primeiro arquivo, cujo o e-mail consta no segundo arquivo.
Eu fiz o seguinte:
Mas não ta rolando.
Será qie alguém pode me ajudar?
Editado por Rafael SpilkiTags code
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.