Exportação para TXT
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
Discussão (1)
Carregando comentários...