AJUDA VB6 E ARQUIVO TXT

NAM4 05/11/2010 07:21:35
#356682
Olá a todos, pesso mais uma vez a ajuda de alguem


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
ACG1574 05/11/2010 07:30:59
#356683
Resposta escolhida
if linha <> [Ô][Ô] then
importa a linha
endif
NAM4 05/11/2010 07:46:28
#356684
primeiramente muito obrigado pela resposta rapida...

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
ACG1574 05/11/2010 07:50:41
#356685
nao, faz assim

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

NAM4 05/11/2010 08:35:53
#356689
Alexandre eu fiz o que você me indicou, porem quando vai ler esse if line <> [Ô][Ô] ele da erro

abraços
NAM4 05/11/2010 10:13:46
#356699
vou tentar se um pouco mais claro sobre minha duvida...

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
ACG1574 05/11/2010 10:22:50
#356700
entao, faz assim: e tire esses replace ok.

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

NAM4 05/11/2010 10:50:27
#356701
nada =(, nesse caso NovoValor00, etc seria os valores entre os delimitadores |, e o que preciso eh saber se a linha esta vazia, nao o campo dentro do delimitador, ou seja, esta variavel NovoValorXX....


de qq forma muito obrigado pelas respostas.... vou continuar tentando
e se alguem tiver qualquer dica, será mto bem vinda


abraços
ACG1574 05/11/2010 10:53:23
#356702
kra daquele jeito tava certo , é pq é uma matriz a linha, esquecemos foi de colocar o indice da matriz

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

NAM4 05/11/2010 12:24:47
#356710
Alexandre, muito obrigado,

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
ACG1574 05/11/2010 12:56:12
#356716
mas, nao é igual e sim diferente
if line(0) <> [Ô][Ô] then
Página 1 de 3 [21 registro(s)]
Tópico encerrado , respostas não são mais permitidas