LER ARQUIVO DE TEXTO

DIEGO.DUARTE 30/11/2006 14:27:26
#187211
Boa tarde,
Galera, estou com uma dúvida URGENTE =/
Estou tendo que importar um aquivo texto com n linhas porém ao inportar o sistemas esta lendo tudo como se estivesse na mesma linha ignorando o enter...ao abrir o arquivo com bloco de notas no local do enter tem uma especie d eum "quadradinho"...
Alguem sabe alguma forma de ler este quadradinho ou então de ler o arquivo delimitando a quantidade de colunas de uma linha, por exemplo eu sei que o arquivo tem fixado 400 colunas por linha, ou seja se tivesse alguma forma de eu ler de 400 em 400 colunas...fazendo um loop pra ler todas as linhas ou algo assim....
qualquer ajuda é muito bem vinda.
Obrigado galera que sempre tem me dado uma força ae =)
Abraço,
Diego
LIONHEART 30/11/2006 14:30:35
#187214
tem como vc postar aqui um pedaço do arquivo texto com esse quadradinho?

Precisa ser em ANEXO no post, e não copiar e colar a linha
DIEGO.DUARTE 30/11/2006 14:34:04
#187216
O arquivo encontra-se em anexo.......e a função que estou usando para ler o mesmo é a seguinte:

Private Sub cmd_Importar_Click()
Dim Arquivo As String

'verifica se existe algum arquivo selecionado
If Trim(File1.Path) = "" Or Trim(File1.FileName) = "" Then Exit Sub

Arquivo = File1.Path & "\" & File1.FileName
prc_MsgBarra "Iniciando Importação"

' *** Importando dados do Bradesco
Open Arquivo For Input As #2
prc_MsgBarra "Importando Dados..."
Do While Not EOF(2)
'captura a proxima linha
Line Input #2, wrk_StrImport
If Mid(Trim(wrk_StrImport), 1, 1) = 1 Then 'Registro tipo 1 (somente este tipo interessa)

If Mid(Trim(wrk_StrImport), 109, 2) = "06" Or Mid(Trim(wrk_StrImport), 109, 2) = "17" Or Mid(Trim(wrk_StrImport), 109, 2) = "10" Then ' Liquidição título
wrk_NumDoc = Val(Mid(Trim(wrk_StrImport), 117, 10))

SQL = "Update tab_GastosCredito set vfd_FlagBaixa = 1 where vfd_NumDocumento = " & wrk_NumDoc
Cn.Execute (SQL)

End If

End If

Loop

Close #2
MsgBox "Importação realizada com sucesso!", vbInformation
prc_MsgBarra "Importação realizada!"

End Sub


------------------------
Agradeço desde já pela atenção, sempre que precisei o pessoal do forum me ajudou. obrigado

ESLEYSANCHES 30/11/2006 14:37:33
#187217
Tente ao abrir no NotePad abra no RichTextBox

Inclua no projeto um richtextbox depois para carregar algum arquivo use assim:

RICHTEXTBOX1.LoadFile(CAMINHO)

veja se agora os | são subtituídos pelo Enter !!

Abraços !!
DIEGO.DUARTE 30/11/2006 14:45:52
#187220
desculpe é que na verdade estas informações irão alimentar um banco de dados diretamente.....creio que no exemplo do richtextbox não resolveria...=/
LIONHEART 30/11/2006 14:51:47
#187223
esse quadradinho equivale ao caractere CarrierReturn (código ASCII 10)

o que vc pode fazer é ler assim:

Open sCaminho For Input As iArquivo
sTexto = Input(LOF(iArquivo), iArquivo)
Close iArquivo

vLinhas = Split(sTexto, chr(10))

e trabalhar com as linhas:

vLinhas(0) = linha 1
vLinhas(1) = linha 2
...

vLinhas(n) = linha n-1

pra cada indice do array vc vai ter uma linha do seu texto.

Aí vc trabalha com o texto.

OU

vc le o arquivo, faz um replace (texto, asc(10), vbCrLf)


e mantem a rotina.
DIEGO.DUARTE 30/11/2006 14:54:50
#187226
Para utilizar o replace como foi indicado pelo angelo acima eu sibstituiria qual parte na minha rotina, (minha rotina esta acima), desculpa estar perguntando isso é que ja fundi todos os meus DOIS neuronios com esse caso, to meio perdidão...=/

Obrigado pela atenção galera =)
USUARIO.EXCLUIDOS 30/11/2006 15:25:45
#187237
Resposta escolhida
Colega, abri o arquivo e de fato só tinha uma linha, mas tb não tinha quadrado algum...

Se quiser ler de 400 em 400 vc pode usar assim:

Private Sub cmd_Importar_Click()
Dim Arquivo As String
Dim Dado As String
Dim i As Integer

'verifica se existe algum arquivo selecionado
If Trim(File1.Path) = "" Or Trim(File1.FileName) = "" Then Exit Sub

Arquivo = File1.Path & "\" & File1.FileName
prc_MsgBarra "Iniciando Importação"

' *** Importando dados do Bradesco
Open Arquivo For Input As #2
prc_MsgBarra "Importando Dados..."
Dado = Input(LOF(2), 2)
Close #2
For i = 1 To Len(Dado) Step 400
'captura a proxima linha
wrk_StrImport = Mid(Dado, i, 400)
If Mid(Trim(wrk_StrImport), 1, 1) = 1 Then 'Registro tipo 1 (somente este tipo interessa)

If Mid(Trim(wrk_StrImport), 109, 2) = "06" Or Mid(Trim(wrk_StrImport), 109, 2) = "17" Or Mid(Trim(wrk_StrImport), 109, 2) = "10" Then ' Liquidição título
wrk_NumDoc = Val(Mid(Trim(wrk_StrImport), 117, 10))

SQL = "Update tab_GastosCredito set vfd_FlagBaixa = 1 where vfd_NumDocumento = " & wrk_NumDoc
Cn.Execute (SQL)

End If

End If

Next i

MsgBox "Importação realizada com sucesso!", vbInformation
prc_MsgBarra "Importação realizada!"

End Sub
DIEGO.DUARTE 30/11/2006 15:44:33
#187249
Obrigado pela atenção.
Resolveu o problema!

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