USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Comparar conteudo entre dois arquivos texto
LUIZ PEDRO
SAO PAULO
SP - BRASIL
Postada em 06/05/2008 13:56 hs            
E ai galera !

Preciso fazer um programa em vb que abra dois arquivos texto, um tem uma relacao de codigos de clientes e o outro tem diversas linhas com varios clientes, preciso abrir os dois arquivos e verificar todos os codigos do primeiro arquivo e localizar no segundo e gravar estas linhas localizadas em um terceiro arquivo, mas nao estou conseguindo fazer esse processo, alguem tem uma dica ? Segue o codigo que tentei fazer.

Private Sub Command1_Click()

Dim caminho As String
Dim arqori As String
Dim arqori2 As String
Dim arqdest As String
Dim codigo1 As String
Dim codigo2 As String
Dim totallinhas As Variant
Dim titulo As String
Dim linha As String
Dim linha2 As String
Dim arquivo As String


'FAZENDO A CRIAÇÃO DO ARQUIVO
nomearquivo = "FINAL" & Now & ".txt" 'criando um novo arquivo
nomearquivo = Replace(nomearquivo, " ", "")
nomearquivo = Replace(nomearquivo, "/", "")
nomearquivo = Replace(nomearquivo, ":", "")

'inicializa
arqdest = FreeFile
  Open App.Path & "" & nomearquivo For Random As arqdest 'abrindo o Arquivo desta forma, se NÃO EXISTIR, ele cria o arquivo.
Close #arqdest
MsgBox "O arquivo  '" & nomearquivo & "'", , "Arquivo Criado com sucesso"

'ABRINDO O ARQUIVO CRIADO
Open App.Path & "" & nomearquivo For Append As arqdest

'ABRINDO O ARQUIVO DE ORIGEM 1(arquivo principal)
arqori = FreeFile
Form1.CommonDialog1.DialogTitle = "Selecione o arquivo para pesquisa"
Form1.CommonDialog1.InitDir = App.Path
Form1.CommonDialog1.Filter = "Arquivos texto (*.txt)|*.txt| Todos os arquivos (*.*)|*.*|"
Form1.CommonDialog1.FilterIndex = 2
Form1.CommonDialog1.ShowOpen
caminho = Form1.CommonDialog1.FileName

Open caminho For Input As arqori
totallinhas = 0

'(arquivo com codigos dos clientes)
arqori2 = FreeFile
Open App.Path & "CEA_CONTRATOS.txt" For Input As #arqori2


Do While Not EOF(arqori2)
Line Input #arqori2, linha2
codigo2 = Mid(linha, 2, 16)
totallinhas = totallinhas + 1
Loop

  
  Do Until EOF(arqori)
  Line Input #arqori, linha
  codigo1 = Mid(linha2, 15, 16)
  
  If codigo1 = codigo2 Then
  totallinhas = totallinhas + 1
   Print #arqdest, linha
  End If
  Loop
  
  Close #arqori
  Close #arqori2
  Close #arqdest
MsgBox "operacao concluida"


End Sub

     
PH1959
Pontos: 2843
SÃO JOSÉ DOS CAMPOS
SP - BRASIL
Postada em 06/05/2008 15:38 hs            
pq vc está usando um txt e não um banco de dados?
 
     
LUIZ PEDRO
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 06/05/2008 16:59 hs            
Porque eu recebo as informacoes dos clientes em arquivo texto para posteriormente serem inseridos no banco de dados, mas agora preciso extrair dados especificos somente dos arquivos texto.
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 06/05/2008 21:05 hs            
Eis a forma faça suas adptações
 
Private Sub Command1_Click()
   Dim sArquivo      As String
   Dim sLinha        As String
   Dim iARQ          As Integer
   Dim ArqTemp1()    As String
   Dim ArqTemp2()    As String
  
   For A = 1 To 3 ' criei um laço para fazer os tres passos
                       ' 1 = Ler o arquivo teste1.text e armazenar na array ArqTemp1
                       ' 2 = Ler o Arquivo teste2.text comparar com a array ArqTemp1 e...
                       ' ... Salvar as linhas iguais em ArqTemp2
                       ' 3 = Gravar os dados de ArqTemp2 em um arquivo teste3.txt
   Select Case A

   Case 1 ' Primeiro passo
      sArquivo = App.Path & "\teste1.TXT" ' ARQUIVO 1
   iARQ = FreeFile
   Open sArquivo For Input As iARQ
   Do While Not EOF(iARQ)
   Line Input #iARQ, sLinha
   Cont = Cont + 1
   ReDim Preserve ArqTemp1(Cont) As String   'Criei um array dinamico (ArqTemp1)
   ArqTemp1(Cont) = sLinha                         'Onde serão armazenados as linhas do
   List1.AddItem ArqTemp1(Cont)                  'teste1.txt
   Loop
   Close iARQ
   Cont = 0
  
   Case 2 ' Segundo passo...
   sArquivo = App.Path & "\teste2.TXT" ' ARQUIVO 2 PARA COMPARAÇÃO
   iARQ = FreeFile
   Open sArquivo For Input As iARQ
   Do While Not EOF(iARQ)
   Line Input #iARQ, sLinha
   For B = 1 To UBound(ArqTemp1)
   If sLinha = ArqTemp1(B) Then
   Cont = Cont + 1
   ReDim Preserve ArqTemp2(Cont) As String
   ArqTemp2(Cont) = sLinha
   List1.AddItem ArqTemp2(Cont)
   End If
   Next B
   Loop
   Close iARQ
  
   Case 3 ' Terceiro passo...
   sArquivo = App.Path & "\teste3.TXT" ' ARQUIVO 3 QUE SERÁ SALVO
   iARQ = FreeFile
   Open sArquivo For Output As iARQ
   For C = 1 To UBound(ArqTemp2)
   Print #iARQ, ArqTemp2(C)
   Next C
   Close iARQ
   End Select
   Next A
  
End Sub
 

espero ter sido especifico qualquer duvida pergunte
 
at+
TÓPICO EDITADO
   
LUIZ PEDRO
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 07/05/2008 13:59 hs            
E ai Treze !

O programa esta apresentando erro "run time erro '9' subscript out of range", esta parando neste trecho:

Case 3 ' Terceiro passo...
   sArquivo = App.Path & "     este3.TXT" ' ARQUIVO 3 QUE SERÁ SALVO
   iARQ = FreeFile
   Open sArquivo For Output As iARQ
   For C = 1 To UBound(ArqTemp2)
   Print #iARQ, ArqTemp2(C)
   Next C
   Close iARQ
   End Select
   Next A
  
End Sub

Esta parando no FOR
   
Treze
não registrado
ENUNCIADA !
Postada em 07/05/2008 15:26 hs   
Veja se não tem nenhum erro de digitação
 
fiz o teste novamente e funcionou aqui:
 
vou postar o código:
 
Private Sub Command1_Click()
   Dim sArquivo      As String
   Dim sLinha        As String
   Dim iARQ          As Integer
   Dim ArqTemp1()    As String
   Dim ArqTemp2()    As String
  
   For A = 1 To 3 ' criei um laço para fazer os tres passos
                       ' 1 = Ler o arquivo teste1.text e armazenar na array ArqTemp1
                       ' 2 = Ler o Arquivo teste2.text comparar com a array ArqTemp1 e...
                       ' ... Salvar as linhas iguais em ArqTemp2
                       ' 3 = Gravar os dados de ArqTemp2 em um arquivo teste3.txt
   Select Case A
   Case 1 ' Primeiro passo
      sArquivo = App.Path & "\teste1.TXT" ' ARQUIVO 1
   iARQ = FreeFile
   Open sArquivo For Input As iARQ
   Do While Not EOF(iARQ)
   Line Input #iARQ, sLinha
   Cont = Cont + 1
   ReDim Preserve ArqTemp1(Cont) As String   'Criei um array dinamico (ArqTemp1)
   ArqTemp1(Cont) = sLinha                         'Onde serão armazenados as linhas do
                                                              'teste1.txt
   Loop
   Close iARQ
   Cont = 0
  
   Case 2 ' Segundo passo...
   sArquivo = App.Path & "\teste2.TXT" ' ARQUIVO 2 PARA COMPARAÇÃO
   iARQ = FreeFile
   Open sArquivo For Input As iARQ
   Do While Not EOF(iARQ)
   Line Input #iARQ, sLinha
   For B = 1 To UBound(ArqTemp1)
   If sLinha = ArqTemp1(B) Then
   Cont = Cont + 1
   ReDim Preserve ArqTemp2(Cont) As String
   ArqTemp2(Cont) = sLinha
   End If
   Next B
   Loop
   Close iARQ
  
   Case 3 ' Terceiro passo...
   sArquivo = App.Path & "\teste3.TXT" ' ARQUIVO 3 QUE SERÁ SALVO
   iARQ = FreeFile
   Open sArquivo For Output As iARQ
   For C = 1 To UBound(ArqTemp2)
   Print #iARQ, ArqTemp2(C)
   Next C
   Close iARQ
   End Select
   Next A
  
End Sub
faça o teste novamente
   
Página(s): 1/6      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página