ARQUIVO TEXTO PROCURANDO REGISTRO

PERCIFILHO 17/04/2012 16:21:24
#400093
Olá, amigos, é o seguinte.
O meu sistema recebe dois arquivos gerados em TXT por outro sistema. Clientes.txt e Pedidos.txt
Pois bem, o arquivo Clientes contém os dados do cliente e o Pedidos contém pedidos gravados na tabela.
O que eu preciso agora é montar um DataGridView com todos os pedidos.
Então, estou abrindo o arquivo de pedidos, leio linha a linha e mostro num DataGridView.

Então, no arquvio de Pedidos, leio a primeira linha e pego o cnpj do cliente e procuro no arquivo de Clientes para mostrar o nome e a cidade do cliente.
Aí passo para a próxima linha e faço novamente.
Só que pode haver casos em que procurando o cnpj no arquivo de clientes, não encontra então tem que me retornar vazio.
Mas não está funcionando.
Estou fazendo dessa maneira:


Dim pedido As String
Dim numeronota As String
Dim data As String
Dim cnpjcpf As String
Dim cliente As String
Dim cidade As String
Dim linhapedido As String
Dim linhacliente As String

Private Sub MontagemCargas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim srpedidos As New System.IO.StreamReader(ArquivoPedidos.TxtArquivoPedidos.Text)
Dim srclientes As New System.IO.StreamReader(ArquivoClientes.TxtArquivoClientes.Text)

[ô] Verifica se o Arquivo não Existe
If (System.IO.File.Exists(ArquivoPedidos.TxtArquivoPedidos.Text) <> True) Then
Throw (New System.IO.FileNotFoundException([Ô]Não foi Possível Localizar o Arquivo de Pedidos[Ô]))
End If
If (System.IO.File.Exists(ArquivoClientes.TxtArquivoClientes.Text) <> True) Then
Throw (New System.IO.FileNotFoundException([Ô]Não foi Possível Localizar o Arquivo de Clientes[Ô]))
End If

[ô] Looping nas Linhas
Do While (Not srpedidos.EndOfStream)
[ô] Recupera a Linha do Arquivo
linhapedido = srpedidos.ReadLine()
cnpjcpf = Mid(linhapedido, 20, 14)
pedido = Mid(linhapedido, 1, 10)
numeronota = Mid(linhapedido, 13, 6)
data = Mid(linhapedido, 411, 8)
Do While (Not srclientes.EndOfStream)
[ô] Recupera a Linha do Arquivo
linhacliente = srclientes.ReadLine()
If Mid(linhacliente, 47, 14) = cnpjcpf Then
cliente = Mid(linhacliente, 1, 45)
cidade = Mid(linhacliente, 156, 4)
End If
Loop
DgvPedidos.Rows.Add(cidade, cliente, pedido, numeronota, data)
Loop


Olhem o resultado do DataGridView na imagem.

Onde posso estar errando?

Até mais.
KERPLUNK 17/04/2012 16:28:35
#400095
1 - Crie duas classes, uma chamada [Ô]Cliente[Ô] e outra chamada [Ô]Pedidos[Ô]
2 - Em cada uma dessas classes adicione propriedades equivalentes aos campos que tem no txt
3 - A rotina de leitura, deve ter dois métodos, um para leitura de clientes e outro para leitura de pedidos, ambas lêem todo o arquivo
4 - Assim que tiver isso pronto, daí sim você vai poder fazer procuras de modo confiável.
PERCIFILHO 18/04/2012 10:50:20
#400145
Obrigado, Kerplunk, mas já resolvi.
Fiz umas alterações no mesmo código e deu certo.

Até mais.
Tópico encerrado , respostas não são mais permitidas