COMPARAR LISTAS

ALANTB 14/10/2011 17:14:02
#386720
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!!!
MARCELO.TREZE 14/10/2011 17:18:49
#386723
Resposta escolhida
bom nas dicas do forum eu postei esta função

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

ALANTB 14/10/2011 17:43:09
#386726
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)...
MARCELO.TREZE 14/10/2011 18:02:58
#386728
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
MARCELO.TREZE 14/10/2011 18:04:14
#386729
mais nada somente isso um form um command buttom e pronto.

ALANTB 17/10/2011 09:27:47
#386840
MARCELO-TREZE inseri nos arquivos teste1 e no teste2 um mesmo nome, mas ao executar não atira para o arquivo IGUAIS.....
MARCELO.TREZE 17/10/2011 12:35:27
#386862
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
ALANTB 17/10/2011 12:46:07
#386864
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...
MARCELO.TREZE 17/10/2011 14:04:55
#386867
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

ALANTB 17/10/2011 14:16:54
#386868
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...????
ALANTB 17/10/2011 15:24:39
#386876
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..

Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas