Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

suzaco7

Exportação para TXT

Recommended Posts

Pessoal, tenho esse código que fiz aqui, que em parte funciona o problema que ele apesar de pegar o valor certo na incrementação da variável está colocando numa posição diferente:

Será que alguém poderia me dar uma luz?

Agradeço a ajuda.

 

 

Aqui tá o código completo:

CODE
if btExisteRegistro then

arrRS = oRsCadastro.GetRows

Campos = UBound(arrRS, 1)

Registros = UBound(arrRS, 2)

 

'Cria o nome do arquivo mapeando para pasta exportados

arquivo = request.ServerVariables("APPL_PHYSICAL_PATH") & "exportados\notafiscal.txt"

 

'Cria o objeto FSO

set fso = createObject("Scripting.FileSystemObject")

 

'Cria o objeto TextStream

set t = fso.CreateTextFile(arquivo)

 

'Vetor com o tamanho limite de cada campo estipulado pelo arquivo de layout

TamanhoMov = Array(1,5,30,15,15,15,25,25,12,6,10,1,1,1,1,1,10,10,10,10,15,10,20,5,5,10,10,10,

30,10,10,10,10,10,10,10,10,10)

 

'Posição onde o campo do registro deve ser escrito no arquivo texto estipulado pelo arquivo de layout

PosicaoMov = Array(1,2,7,37,52,67,82,107,132,144,150,160,161,162,163,164,165,175,185,195,205,

220,230,250,255,260,270,280,290,320,330,340,350,360,370,380,390,400)

 

'Faço um loop nos registros

for RegistroAtual = 0 to Registros

 

'Zero contadores e inicializo as variáveis

TamanhoRegTotal = 0

TamanhoTotal = 1

Aux = 0

EspacoAux = " "

 

'Faço um loop em cada campo do regsitro

for CampoAtual = 0 to Campos

'Tamanho total de caracteres na linha, inicial é zero e a variável TamanhoRegTotal

'receberá o tamanho de caracteres do campo atual que foi lido.

TamanhoTotal = TamanhoTotal + TamanhoRegTotal

 

'Se tamanho for maior que zero entro neste bloco.

if TamanhoTotal > 0 then

 

'Se a quantidade de caracter na linha, contando os espaços for menor que

'a posição final onde deve ser escrito o próximo campo do registro entro neste bloco

if TamanhoTotal < PosicaoMov(CampoAtual) then

 

'Diminuo o valor da posição atual onde o campo do registro deve ser inseriro pelo

'tamanho total de caracteres acumulado até o campo do registro atual, contando os espaços.

'O resultado é a quantidade de espaços que preciso preencher até a próxima posição de

'escrita do próximo campo do registro.

Espaco = PosicaoMov(CampoAtual) - TamanhoTotal

 

'Atribuo a variável EspacoAux a quantidade de espaços que deve ser inserida.

EspacoAux = String(Clng(Espaco), " ")

 

'Escrevo este espaço no arquivo texto, que será preenchido até a próxima posição de escrita

'do próximo campo.

t.write(EspacoAux)

end if

end if

 

'Se a quantidade de caracteres do campo atual de leitura for maior que a permitida para o mesmo

'entro neste bloco

if Len(arrRS(CampoAtual,RegistroAtual)) > TamanhoMov(CampoAtual) then

 

'Faço uso da função Mid() para pegar desde a primeira posição do campo deste registro

'até o máximo permitido para ele e atribuo na variável Aux.

Aux = Trim(Mid(arrRS(CampoAtual,RegistroAtual), 1, TamanhoMov(CampoAtual)))

else 'Senão

'Atribuo o campo deste registro a variável Aux.

Aux = Trim(arrRS(CampoAtual, RegistroAtual))

end if

 

'Escrevo no arquivo o valor do campo do registro atual.

t.write(Aux)

 

'Atribuo a variável TamanhoRegTotal a quantidade de caracter do campo que foi escrito.

TamanhoRegTotal = Clng(Len(Aux))

next 'Movo para o próximo campo do registro

 

'Após a leitura do último campo do registro, faço uma quebra para a próxima linha.

t.write(vbCrlf)

next

 

'Fecho o arquivo

t.close()

end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.