COMPARAR LISTAS
Olá pessoal, tenho duas listas de nomes em arquivos txt, a primeira tem 504 linhas e a segunda tem 109.210 linhas. Preciso de uma rotina que busque se tem alguem da primeira lista(504 linhas) na segunda (109.210 linhas) e que de alguma forma saia algum tipo de msg com os nomes, pois trata-se de uma lista de obitos. O nomes encontrados devem ser excluidos de uma folha de pagamento (morto não gasta dinheiro, só os vivos que ficam recebendo em seu lugar...).Alguém tem alguma coisa em VB6 ou VBA ou que facilite o serviço, pois se torna meio cansativo ter de ler mais de 100.000 linhas.Talvez até mesmo importar esses arquivos(que tem textos fixos) para um sistema e compara-los. O problema é como comparar isso.Valeu gente!!!
bom nas dicas do forum eu postei esta função
para usar
Public Function ComparaTXT(Original As String, Comparacao As String, Iguais As String, Diferentes As String)
Dim Arq1 As Integer
Dim Arq2 As Integer
Dim Arq3 As Integer
Dim Arq4 As Integer
Dim OrigLine As String [ô] Linha Original
Dim CompLine As String [ô] Linha de Comparação
Arq1 = FreeFile
Open Original For Input As #Arq1
Arq3 = FreeFile
Open Iguais For Output As #Arq3
Arq4 = FreeFile
Open Diferentes For Output As #Arq4
Do While Not EOF(Arq1)
Line Input #Arq1, OrigLine
Arq2 = FreeFile
Open Comparacao For Input As #Arq2
Do While Not EOF(Arq2)
Line Input #Arq2, CompLine
If OrigLine = CompLine Then
Print #Arq3, OrigLine
OrigLine = [Ô][Ô]
End If
Loop
Close #Arq2
If OrigLine <> [Ô][Ô] Then
Print #Arq4, OrigLine
End If
Loop
Close #Arq2
Close #Arq3
Close #Arq4
End Function
para usar
Private Sub Command1_Click()
ComparaTXT [Ô]c: este1.txt[Ô], [Ô]c: este2.txt[Ô], [Ô]c:\iguais.txt[Ô], [Ô]c:\diferentes.txt[Ô]
End Sub
Marcelo-treze, preciso informar ao sistema os arquivos de origem?Os arquivos que aparecem teste1 e 2 ,iguais e diferentes é o sistema que cria ou devo cria-los para que os dados sejam jogados neles??A principio no código acima vejo apenas um form com um commandbutton e a function..Precisa de mais alguma coisa para rodar???Os nomes dos meus txt são: Nomes.txt(504 linhas) e obitos.txt(109.210 linhas)...
Exatamente informe apenas os dois arquivos s serem comparados, e os iguais e diferentes, vc pode colocar um nome qualquer, que este será gerado automáticamente
mais nada somente isso um form um command buttom e pronto.
MARCELO-TREZE inseri nos arquivos teste1 e no teste2 um mesmo nome, mas ao executar não atira para o arquivo IGUAIS.....
se for o mesmo arquivo não i'ra funcionar, os arquivos podem ter o mesmo nome, nmas não poderão estar na mesma pasta
Marcelo eu fiz assim: crie o sistema conforme tua orientação, e na mesma pasta que salvei o sistema coloquei os txt's para comparação.Em teste1 e teste2 escrevi um nome em comum nos dois, mas no resultado do arquivo IGUAIS não aparece esse nome....Tem a ver do txt maior pro menor ou vice-versa..mesmo assim tá dando algo errado...
alan realmente não sei o que está acontecendo, o código esta correto, vc deve verificar o seguinte, os arquivos possuem linhas iguais?, pois só com linhas iguais irá funcionar
exemplo de arquivo
teste 1
marcelo
joão
pedro joaquim
teste 2
marcelo
carlos
pedro joaquim
joão alves
jorge tibiriçá
iguais
marcelo
pedro joaquim
diferentes
joão
carlos
joão alves
jorge tibiriçá
entendeu
exemplo de arquivo
teste 1
marcelo
joão
pedro joaquim
teste 2
marcelo
carlos
pedro joaquim
joão alves
jorge tibiriçá
iguais
marcelo
pedro joaquim
diferentes
joão
carlos
joão alves
jorge tibiriçá
entendeu
Se estas se referindo ao número de linhas: NÃO. Pois os arquivos que pretendo comparar, como falei no inicio do tópico, um tem 504 linhas e o outro 109.210 linhas. O que realmente me interessa é que o sistema me retorne se existe alguém do arquivo de 504 linhas no arquivo de 109.210 linhas. Sendo que, o arquivo menor lista os nomes de funcionarios que ainda estão na folha de pagamento. Se ao comparar, e aparecer um ou mais nomes na lista maior, estes devem ser excluidos da folha de pagamento.A principio eu iria tentar VBA com a formula PROCV mas me lembrei que cada planilha de entorno de 65.000 linhas e o meu arquivo maior tem mais de 100.000. Sendo assim precisaria de um sistema que leia esses arquivos pelo VB6 ou de alguma forma criar duas tabelas no ACCESS cada uma com um arquivo e dentro do ACCESS mesmo criar uma rotina que compare essas duas tabelas...mas como...????
Marcelo, funcionou, o que estava dando inconsistencia pra mim é que o nome de exemplo que eu estava usando, no arquivo teste2 tinha 2 espaços no final o que causava diferença entre os dois.
Uma ultima coisa: como exibir uma msg que o proceso de comparação terminou?nesses testes eu tive de orientar pelo cursor que estava ocupado ou não..
Uma ultima coisa: como exibir uma msg que o proceso de comparação terminou?nesses testes eu tive de orientar pelo cursor que estava ocupado ou não..
Tópico encerrado , respostas não são mais permitidas