Inquiridor
Finalizadores de Arquivo no VB.net

Pergunta
-
Pessoal,
Gostaria da ajuda de vocês, pois, estou com problema em criar um arquivo de remessa em formato Texto. O arquivo está sendo gerado normalmente, porém ao tentar válida-lo no ambiente de teste, é exibido a seguinte mensagem, "Tamanho do registro X inválido". Segundo informações de uma pessoa do suporte do banco o arquivo falta um finalizador e por isso o arquivo não é validado.
Gostaria da ajuda de vocês para saber qual o digito que utilizo para realizar a finalização desse arquivo.
Estou utilizando os seguintes comandos:
'Mid para fazer a gravação na string linha, informando a posição inicial e a quantidade de caracteres a serem gravados nessa determinada string
Mid(linha, 1, 1) = "1" 'IDENTIFICAÇÃO DO REGISTRO TRANSAÇÃO
Mid(linha, 2, 3) = "02" 'TIPO DE INSCRIÇÃO DA EMPRESA'E o comando APPENDLINE, para gravar essa linha no arquivo'strARQ.AppendLine(linha)
Help me please!
Todas as Respostas
-
Matheus, bom dia
Quando você fala, "Finalizador" você se refere a aplicação liberar o arquivo da memória ou algum detalhe que precisa ser escrito no arquivo ?
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Facebook Olavo Neto
Linkedin Olavo Neto
Se for útil marque como resposta e faça um Developer feliz :) -
Olá, Olavo. Bom dia!
O finalizador que me refiro é algum detalhe que indique que o arquivo terminou.
Enquanto navegava tentando achar uma solução, encontrei um post que descreve exatamente meu problema, porém, com solução para linguagem clipper, abaixou o link do post para auxiliar o melhor entendimento do problema.
http://www.pctoledo.com.br/forum/viewtopic.php?f=1&t=12511
Segue também parte do código que estou utilizando para gerar o arquivo.
Dim strARQ As New StringBuilder Dim linha As String 'HEADER DO ARQUIVO linha = RepetirCaracter(400, " ") Mid(linha, 1, 1) = "0" 'IDENTIFICAÇÃO DO REGISTRO HEADER Mid(linha, 2, 1) = "1" 'TIPO DE OPERAÇÃO - REMESSA 'Conteúdo de código para preenchimento da linha - * estou colocando apenas o ínicio e o fim para não ficar muito comprida a resposta Mid(linha, 395, 6) = "000001" 'NÚMERO SEQÜENCIAL DO REGISTRO NO ARQUIVO strARQ.AppendLine(linha) 'LINHA DE IDENTIFICAÇÃO DA EMPRESA linha = RepetirCaracter(400, " ") Mid(linha, 1, 1) = "1" 'IDENTIFICAÇÃO DO REGISTRO TRANSAÇÃO Mid(linha, 2, 3) = "02" 'TIPO DE INSCRIÇÃO DA EMPRESA 'Conteúdo de código para preenchimento da linha - * estou colocando apenas o ínicio e o fim para não ficar muito comprida a resposta Mid(linha, 394, 1) = RepetirCaracter(1, " ") 'COMPLEMENTO DO REGISTRO Mid(linha, 395, 6) = "000002" 'Nº SEQÜENCIAL DO REGISTRO NO ARQUIVO strARQ.AppendLine(linha) 'CONTEÚDO DO BOLETO linha = RepetirCaracter(400, " ") Mid(linha, 1, 4) = "7XYZ" 'IDENTIFICAÇÃO DO SEGUIMENTO 7 - MENSAGEM Mid(linha, 5, 2) = "01" 'NÚMERO DA LINHA DA MENSAGEM Mid(linha, 7, 99) = PreencherString("Por questão de segurança os boletos serão recebidos apenas em agencias bancárias", 99, " ") 'CONTEÚDO DA MENSAGEM Mid(linha, 395, 6) = "000003" 'Nº SEQÜENCIAL DO REGISTRO NO ARQUIVO strARQ.AppendLine(linha) 'TRAILLER DO ARQUIVO - ENCERRAMENTO DO ARQUIVO linha = RepetirCaracter(400, " ") Mid(linha, 1, 1) = "9" Mid(linha, 2, 393) = RepetirCaracter(393, " ") Mid(linha, 395, 6) = "000004" 'Nº SEQÜENCIAL DO REGISTRO NO ARQUIVO strARQ.AppendLine(linha) 'COMO O CÓDIGO ASSIMA GERA A ÚLTIMA LINHA DO ARQUIVO, NESSE MOMENTO TENHO QUE INDICAR O DIGITO "FINALIZADOR" DO ARQUIVO Dim fs As New FileStream(txtArquivoGerado.Text, FileMode.Create, FileAccess.Write) Dim byteDados As Byte() byteDados = Encoding.GetEncoding(1252).GetBytes(strARQ.ToString) fs.Write(byteDados, 0, byteDados.Length) fs.Flush() fs.Close() fs.Dispose()
Obrigado pela atenção.
- Editado Matheus Pires terça-feira, 12 de março de 2013 13:51 Alteração no código