AJUDA VB6 E ARQUIVO TXT
tenho uma rotina que le as linhas de um txt por delimitador [Ô]|[Ô] no caso...
bom ta funcionando normalmente so que gostaria de fazer uma verificação nesses arquivos TXT para caso haja linha em branco ele contornar o problema
ou deletando essas linhas em branco a mais que tem no arquivo ou seja la como for.
o exemplo eh o seguinte... tenho 10 registros num txt, 10 linhas com conteudo.... o programa funciona normal, mas se eu simplesmente for na linha 10
e dar 5 enters, ou seja vai ter 15 linhas o txt, porem 10 apenas com conteudo e o delimitador... essas ultimas 5 linhas ficam em branco, por causa do ENTER q dei...
e com esses enters o meu programa da erro, e nao importa os dados do txt pro banco de dados
desde ja agradeço
importa a linha
endif
bom o meu código é o seguinte:
Citação:
Do While fsStream.AtEndOfStream = False
line = Split(fsStream.ReadLine, [Ô]|[Ô])
NovoValor00 = Replace(line(0), [Ô][ô][Ô], [Ô] [Ô])
NovoValor01 = Replace(line(1), [Ô][ô][Ô], [Ô] [Ô])
NovoValor02 = Replace(line(2), [Ô][ô][Ô], [Ô] [Ô])
NovoValor03 = Replace(line(3), [Ô][ô][Ô], [Ô] [Ô])
NovoValor04 = Replace(line(4), [Ô][ô][Ô], [Ô] [Ô])
NovoValor05 = Replace(line(5), [Ô][ô][Ô], [Ô] [Ô])
NovoValor06 = Replace(line(6), [Ô][ô][Ô], [Ô] [Ô])
NovoValor07 = Replace(line(7), [Ô][ô][Ô], [Ô] [Ô])
NovoValor08 = Replace(line(8), [Ô][ô][Ô], [Ô] [Ô])
NovoValor09 = Replace(line(9), [Ô][ô][Ô], [Ô] [Ô])
NovoValor10 = Replace(line(10), [Ô][ô][Ô], [Ô] [Ô])
NovoValor11 = Replace(line(11), [Ô][ô][Ô], [Ô] [Ô])
NovoValor12 = Replace(line(12), [Ô][ô][Ô], [Ô] [Ô])
NovoValor13 = Replace(line(13), [Ô][ô][Ô], [Ô] [Ô])
NovoValor14 = Replace(line(14), [Ô][ô][Ô], [Ô] [Ô])
con.Execute [Ô]INSERT INTO tabela(Col001, Col002, Col003, Col004, Col005, Col006, Col007, Col008, Col009, Col010, Col011, Col012, Col013, Col014,Col015) VALUES ([ô][Ô] & NovoValor00 & [Ô][ô],[ô][Ô] & NovoValor01 & [Ô][ô],[ô][Ô] & NovoValor02 & [Ô][ô],[ô][Ô] & NovoValor03 & [Ô][ô],[ô][Ô] & NovoValor04 & [Ô][ô],[ô][Ô] & NovoValor05 & [Ô][ô],[ô][Ô] & NovoValor06 & [Ô][ô],[ô][Ô] & NovoValor07 & [Ô][ô],[ô][Ô] & NovoValor08 & [Ô][ô],[ô][Ô] & NovoValor09 & [Ô][ô],[ô][Ô] & NovoValor10 & [Ô][ô],[ô][Ô] & NovoValor11 & [Ô][ô],[ô][Ô] & NovoValor12 & [Ô][ô],[ô][Ô] & NovoValor13 & [Ô][ô],[ô][Ô] & NovoValor14 & [Ô][ô])[Ô]
sCodigo_cliente = oRsNome
iContador = iContador + 1
Form1.progressBar.Caption = iContador & [Ô] clientes de [Ô] & Format$(num_lines)
Form1.statusBar.Caption = [Ô]Importando Clientes[Ô]
DoEvents
Loop
ai ele vai importando linha a linha conforme for encontrando o delimitador...
o que você me sugeriu foi usar a variavel line que eu criei e colocar se ela for nula ir para error é isso?
abraços
Do While fsStream.AtEndOfStream = False
line = Split(fsStream.ReadLine, [Ô]|[Ô])
if line <> [Ô][Ô] then
NovoValor00 = Replace(line(0), [Ô][ô][Ô], [Ô] [Ô])
NovoValor01 = Replace(line(1), [Ô][ô][Ô], [Ô] [Ô])
NovoValor02 = Replace(line(2), [Ô][ô][Ô], [Ô] [Ô])
NovoValor03 = Replace(line(3), [Ô][ô][Ô], [Ô] [Ô])
NovoValor04 = Replace(line(4), [Ô][ô][Ô], [Ô] [Ô])
NovoValor05 = Replace(line(5), [Ô][ô][Ô], [Ô] [Ô])
NovoValor06 = Replace(line(6), [Ô][ô][Ô], [Ô] [Ô])
NovoValor07 = Replace(line(7), [Ô][ô][Ô], [Ô] [Ô])
NovoValor08 = Replace(line(8), [Ô][ô][Ô], [Ô] [Ô])
NovoValor09 = Replace(line(9), [Ô][ô][Ô], [Ô] [Ô])
NovoValor10 = Replace(line(10), [Ô][ô][Ô], [Ô] [Ô])
NovoValor11 = Replace(line(11), [Ô][ô][Ô], [Ô] [Ô])
NovoValor12 = Replace(line(12), [Ô][ô][Ô], [Ô] [Ô])
NovoValor13 = Replace(line(13), [Ô][ô][Ô], [Ô] [Ô])
NovoValor14 = Replace(line(14), [Ô][ô][Ô], [Ô] [Ô])
con.Execute [Ô]INSERT INTO tabela(Col001, Col002, Col003, Col004, Col005, Col006, Col007, Col008, Col009, Col010, Col011, Col012, Col013, Col014,Col015) VALUES ([ô][Ô] & NovoValor00 & [Ô][ô],[ô][Ô] & NovoValor01 & [Ô][ô],[ô][Ô] & NovoValor02 & [Ô][ô],[ô][Ô] & NovoValor03 & [Ô][ô],[ô][Ô] & NovoValor04 & [Ô][ô],[ô][Ô] & NovoValor05 & [Ô][ô],[ô][Ô] & NovoValor06 & [Ô][ô],[ô][Ô] & NovoValor07 & [Ô][ô],[ô][Ô] & NovoValor08 & [Ô][ô],[ô][Ô] & NovoValor09 & [Ô][ô],[ô][Ô] & NovoValor10 & [Ô][ô],[ô][Ô] & NovoValor11 & [Ô][ô],[ô][Ô] & NovoValor12 & [Ô][ô],[ô][Ô] & NovoValor13 & [Ô][ô],[ô][Ô] & NovoValor14 & [Ô][ô])[Ô]
sCodigo_cliente = oRsNome
iContador = iContador + 1
Form1.progressBar.Caption = iContador & [Ô] clientes de [Ô] & Format$(num_lines)
Form1.statusBar.Caption = [Ô]Importando Clientes[Ô]
DoEvents
end if
Loop
abraços
por exemplo tenho um arquivo txt assim:
001|RODRIGO|SP|2010
002|BARTO|SP|2010
003|MARIA|SP|2010
004|JOSE|SP|2010
o meu código le e insere no banco bunitinho essas linhas... porém se eu der uns 5 enters no meu TXT ficando assim
001|RODRIGO|SP|2010
002|BARTO|SP|2010
003|MARIA|SP|2010
004|JOSE|SP|2010
.
.
.
onde estes pontos seriam ENTERS,
quando eu faço a importação pro banco, meu programa da erro... gostaria de saber como tratar isso, retirar esses enters, ou simplesmente ignoralos caso existam, pois isso que estou fazendo seria uma carga automatica, entao precisava tratar isso pro programa nao dar pal.... eu consegui tratar para me comunicar via email q deu este problema, mas para trata e contornar esse problema eu nao consegui.
abraços
Do While fsStream.AtEndOfStream = False
line = Split(fsStream.ReadLine, [Ô]|[Ô])
NovoValor00 = Replace(line(0), [Ô][ô][Ô], [Ô] [Ô])
NovoValor01 = Replace(line(1), [Ô][ô][Ô], [Ô] [Ô])
NovoValor02 = Replace(line(2), [Ô][ô][Ô], [Ô] [Ô])
NovoValor03 = Replace(line(3), [Ô][ô][Ô], [Ô] [Ô])
NovoValor04 = Replace(line(4), [Ô][ô][Ô], [Ô] [Ô])
NovoValor05 = Replace(line(5), [Ô][ô][Ô], [Ô] [Ô])
NovoValor06 = Replace(line(6), [Ô][ô][Ô], [Ô] [Ô])
NovoValor07 = Replace(line(7), [Ô][ô][Ô], [Ô] [Ô])
NovoValor08 = Replace(line(8), [Ô][ô][Ô], [Ô] [Ô])
NovoValor09 = Replace(line(9), [Ô][ô][Ô], [Ô] [Ô])
NovoValor10 = Replace(line(10), [Ô][ô][Ô], [Ô] [Ô])
NovoValor11 = Replace(line(11), [Ô][ô][Ô], [Ô] [Ô])
NovoValor12 = Replace(line(12), [Ô][ô][Ô], [Ô] [Ô])
NovoValor13 = Replace(line(13), [Ô][ô][Ô], [Ô] [Ô])
NovoValor14 = Replace(line(14), [Ô][ô][Ô], [Ô] [Ô])
if NovoValor00 <> [Ô][Ô] or NovoValor01 <> [Ô][Ô] or NovoValor02 <> [Ô][Ô] etc.... then
con.Execute [Ô]INSERT INTO tabela(Col001, Col002, Col003, Col004, Col005, Col006, Col007, Col008, Col009, Col010, Col011, Col012, Col013, Col014,Col015) VALUES ([ô][Ô] & NovoValor00 & [Ô][ô],[ô][Ô] & NovoValor01 & [Ô][ô],[ô][Ô] & NovoValor02 & [Ô][ô],[ô][Ô] & NovoValor03 & [Ô][ô],[ô][Ô] & NovoValor04 & [Ô][ô],[ô][Ô] & NovoValor05 & [Ô][ô],[ô][Ô] & NovoValor06 & [Ô][ô],[ô][Ô] & NovoValor07 & [Ô][ô],[ô][Ô] & NovoValor08 & [Ô][ô],[ô][Ô] & NovoValor09 & [Ô][ô],[ô][Ô] & NovoValor10 & [Ô][ô],[ô][Ô] & NovoValor11 & [Ô][ô],[ô][Ô] & NovoValor12 & [Ô][ô],[ô][Ô] & NovoValor13 & [Ô][ô],[ô][Ô] & NovoValor14 & [Ô][ô])[Ô]
sCodigo_cliente = oRsNome
iContador = iContador + 1
Form1.progressBar.Caption = iContador & [Ô] clientes de [Ô] & Format$(num_lines)
Form1.statusBar.Caption = [Ô]Importando Clientes[Ô]
DoEvents
end if
Loop
de qq forma muito obrigado pelas respostas.... vou continuar tentando
e se alguem tiver qualquer dica, será mto bem vinda
abraços
Do While fsStream.AtEndOfStream = False
line = Split(fsStream.ReadLine, [Ô]|[Ô])
if line(0) <> [Ô][Ô] then
NovoValor00 = Replace(line(0), [Ô][ô][Ô], [Ô] [Ô])
NovoValor01 = Replace(line(1), [Ô][ô][Ô], [Ô] [Ô])
NovoValor02 = Replace(line(2), [Ô][ô][Ô], [Ô] [Ô])
NovoValor03 = Replace(line(3), [Ô][ô][Ô], [Ô] [Ô])
NovoValor04 = Replace(line(4), [Ô][ô][Ô], [Ô] [Ô])
NovoValor05 = Replace(line(5), [Ô][ô][Ô], [Ô] [Ô])
NovoValor06 = Replace(line(6), [Ô][ô][Ô], [Ô] [Ô])
NovoValor07 = Replace(line(7), [Ô][ô][Ô], [Ô] [Ô])
NovoValor08 = Replace(line(8), [Ô][ô][Ô], [Ô] [Ô])
NovoValor09 = Replace(line(9), [Ô][ô][Ô], [Ô] [Ô])
NovoValor10 = Replace(line(10), [Ô][ô][Ô], [Ô] [Ô])
NovoValor11 = Replace(line(11), [Ô][ô][Ô], [Ô] [Ô])
NovoValor12 = Replace(line(12), [Ô][ô][Ô], [Ô] [Ô])
NovoValor13 = Replace(line(13), [Ô][ô][Ô], [Ô] [Ô])
NovoValor14 = Replace(line(14), [Ô][ô][Ô], [Ô] [Ô])
con.Execute [Ô]INSERT INTO tabela(Col001, Col002, Col003, Col004, Col005, Col006, Col007, Col008, Col009, Col010, Col011, Col012, Col013, Col014,Col015) VALUES ([ô][Ô] & NovoValor00 & [Ô][ô],[ô][Ô] & NovoValor01 & [Ô][ô],[ô][Ô] & NovoValor02 & [Ô][ô],[ô][Ô] & NovoValor03 & [Ô][ô],[ô][Ô] & NovoValor04 & [Ô][ô],[ô][Ô] & NovoValor05 & [Ô][ô],[ô][Ô] & NovoValor06 & [Ô][ô],[ô][Ô] & NovoValor07 & [Ô][ô],[ô][Ô] & NovoValor08 & [Ô][ô],[ô][Ô] & NovoValor09 & [Ô][ô],[ô][Ô] & NovoValor10 & [Ô][ô],[ô][Ô] & NovoValor11 & [Ô][ô],[ô][Ô] & NovoValor12 & [Ô][ô],[ô][Ô] & NovoValor13 & [Ô][ô],[ô][Ô] & NovoValor14 & [Ô][ô])[Ô]
sCodigo_cliente = oRsNome
iContador = iContador + 1
Form1.progressBar.Caption = iContador & [Ô] clientes de [Ô] & Format$(num_lines)
Form1.statusBar.Caption = [Ô]Importando Clientes[Ô]
DoEvents
end if
Loop
o que você me sugeriu neste ultimo post funcionou, ele so faz enquanto tem coisa na linha, blz...
porém agora o problema é outro... nesse caso depois que ele verifica todas as linhas e faz o insert, o programa ainda acusa erro. como faço para contornar o erro... ou seja
ao encontrar linha em branco ele continuar com o programa, e nao acusar erro?
abraços
EDIT
Na verdade quando o programa executa esta linha:
if line(0) = [Ô][Ô] then
o VB acusa o seguinte erro:
run-time error [ô]13[ô]
Type mismatch
abraços
if line(0) <> [Ô][Ô] then