VERIFICANDO DADOS DUPLICADOS TXT
Bom dia pessoal,
Estou precisando verificar em um txt dados duplicados, da seguinte forma.
1, 1254, 45879, 256
2, 5845, 45878, 698
3, 4587, 58744, 698
4, 5845, 45878, 698
Preciso comparar as três colunas finais, observem que os a Linha 2 a Linha 4 são iguais e preciso deletar uma delas, na média esse arquivo deve ter umas 300 linhas.
Como poderia fazer essa comparação e depois deletar, pensei em alguma coisa com ARRAY mas não consegui fazer nada.
Abraço
Estou precisando verificar em um txt dados duplicados, da seguinte forma.
1, 1254, 45879, 256
2, 5845, 45878, 698
3, 4587, 58744, 698
4, 5845, 45878, 698
Preciso comparar as três colunas finais, observem que os a Linha 2 a Linha 4 são iguais e preciso deletar uma delas, na média esse arquivo deve ter umas 300 linhas.
Como poderia fazer essa comparação e depois deletar, pensei em alguma coisa com ARRAY mas não consegui fazer nada.
Abraço
Segue uma dica possÃvel:
1. Crie uma base MDB e uma tabela TEMP com a mesma estrutura do arquivo TXT
2. Percorra o arquivo TXT e insira as linhas na tabela TEMP
3. Assim que concluir, percorra novamente o arquivo TXT fazendo uma QUERY Ã cada iteração
4. Caso encontre mais de uma linha, exclua uma delas e continue na iteração
5. Assim que finalizar, gere um novo arquivo com os registros da tabela TEMP
1. Crie uma base MDB e uma tabela TEMP com a mesma estrutura do arquivo TXT
2. Percorra o arquivo TXT e insira as linhas na tabela TEMP
3. Assim que concluir, percorra novamente o arquivo TXT fazendo uma QUERY Ã cada iteração
4. Caso encontre mais de uma linha, exclua uma delas e continue na iteração
5. Assim que finalizar, gere um novo arquivo com os registros da tabela TEMP
Existiria uma outra forma sem usar MDB?
Sim existe.
Crie uma MATRIZ e pesquise nesta matriz a cada linha inserida. Demora um pouco mas resolve.
Você pode alimentar um LIST com SORT automático. Mas a demora é a mesma.
Crie uma MATRIZ e pesquise nesta matriz a cada linha inserida. Demora um pouco mas resolve.
Você pode alimentar um LIST com SORT automático. Mas a demora é a mesma.
vou colocar para voce uma rotina feita no DAO, mas e so adaptar para ADO, veja se entende.
Sub ImportarArquivodeClientes()
If txtAnexo.Text = Empty Then
MsgBox [Ô]Selecione o Arquivo para Importação![Ô], vbCritical, [Ô]Tech Size[Ô]
Call ProcurarArquivo
Exit Sub
Else
Dim Coluna() As String
Dim Verifica() As String
Dim F As Long, sLine As String
Dim DB As Database, RS As Recordset, Proc As Recordset
Dim StrSql As String
On Error Resume Next
[ô]On Error GoTo trata_erro
F = FreeFile
Open txtAnexo.Text For Input As F
Do While Not EOF(F)
Line Input #F, sLine
Coluna = Split(sLine, [Ô];[Ô])
caminho = ReadINI([Ô]Geral[Ô], [Ô]Caminho[Ô], App.Path & [Ô]\Config.ini[Ô])
Set DB = DBEngine(0).OpenDatabase(caminho)
[ô]Aqui verifico na tabela se ja tem a informaçao comparando com o arquivo txt.. ok
StrSql = ([Ô]SELECT * FROM CadClientes Where CliCodigo = [ô][Ô] & Coluna(0) & [Ô][ô][Ô])
Set RS = DB.OpenRecordset(StrSql)
If RS.EOF Then
RS.AddNew
RS(0) = Coluna(0)
RS(1) = f_RemoveAcento(MMCase(Coluna(1)))
RS(2) = f_RemoveAcento(MMCase(Coluna(2)))
If Len(Coluna(3)) <= 11 Then
Coluna(3) = Format(Coluna(3), [Ô]@@@.@@@.@@@-@@[Ô])
RS(26) = [Ô]-1[Ô]
Else
Coluna(3) = Format(Coluna(3), [Ô]@@.@@@.@@@/@@@@-@@[Ô])
RS(27) = [Ô]-1[Ô]
End If
RS(3) = f_RemoveAcento(MMCase(Coluna(3)))
RS(4) = f_RemoveAcento(MMCase(Coluna(4)))
RS(5) = [Ô]([Ô] & Left(Coluna(5), 2) & [Ô])[Ô] & Mid(Coluna(5), 3, 4) & [Ô]-[Ô] & Right(Coluna(5), 4)
RS(6) = f_RemoveAcento(MMCase(Coluna(6)))
RS(7) = f_RemoveAcento(MMCase(Coluna(7)))
RS(8) = f_RemoveAcento(MMCase(Coluna(8)))
RS(9) = f_RemoveAcento(MMCase(Coluna(9)))
RS(10) = f_RemoveAcento(MMCase(Coluna(10)))
RS(11) = Left(Coluna(11), 5) & [Ô]-[Ô] & Mid(Coluna(11), 6, 8)
RS(12) = f_RemoveAcento(MMCase(Coluna(12)))
RS(13) = f_RemoveAcento(MMCase(Coluna(13)))
RS(14) = f_RemoveAcento(MMCase(Coluna(14)))
RS(15) = f_RemoveAcento(MMCase(Coluna(15)))
RS(16) = f_RemoveAcento(MMCase(Coluna(16)))
RS(17) = f_RemoveAcento(MMCase(Coluna(17)))
RS(18) = f_RemoveAcento(MMCase(Coluna(18)))
RS(34) = (Coluna(15))
If Len(Coluna(16)) Then
Coluna(16) = Format(Coluna(16), [Ô]@@@@@@@@[Ô])
End If
RS(34) = (Coluna(16))
RS(35) = [Ô]CLI[Ô]
RS.Update
End If
bar.Visible = True
bar.Value = bar.Value + 1
Loop
DB.Execute ([Ô]Delete * from CadClientes where clicodigo=[ô][Ô] & [Ô]Cliente[Ô] & [Ô][ô][Ô])
DB.Execute ([Ô]DELETE * FROM CADCLIENTES WHERE CLICODIGO=[ô][Ô] & [Ô][Ô] & [Ô][ô][Ô])
RS.Close
DB.Close
Close #F
frmCadClientes.Data1.Refresh
frmAviso.Label2 = [Ô]Arquivo Importado com Sucesso![Ô]
frmAviso.Show 1
MsgBox [Ô]Arquivo Importado com Sucesso !! [Ô], vbInformation, [Ô]Tech Size[Ô]
bar.Visible = False
Exit Sub
If Err.Number <> 0 Then
trata_erro:
MsgBox [Ô]Um Erro Inesperado Ocorreu, Descrição do Erro : > [Ô] & Err.Description
End If
End If
End Sub
bem que eu tava precisando de um codigo destes ........ só que no meu caso são mais de 700.000 palavras ....
LVFIOROT show de bola!
Melhor não poderia ser! RSRS
Abraço
Melhor não poderia ser! RSRS
Abraço
aki é 4gb ...... eu acho que o meu problema é tempo .......... e naum memoriaaaa ........
Tópico encerrado , respostas não são mais permitidas