Ir para conteúdo

POWERED BY:

Arquivado

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

Davidmg

Ler TXT

Recommended Posts

Salve galera, td na paz?Minha dúvida é a seguinte:Tenho um arquivo txt (com os dados separados por ;) que jogo no servidor e pelo FSO ele faz a atualização do banco de dados.EXEMPLO DO TXT:12;Posto Campos;São Paulo;Sp15;Posto Help;Caconde;SpE assim por diante...O que eu gostaria de fazer é ler esse txt até a penúltima linha. Não queria que ele chegasse até a última. Entenderam??

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque isso??você sabe quantas linhas tem??Voce pode colocar em variavel antes de fazer oq ue quertipo assimvocê começa a ler e armazena, só faz o que você quiser depois de passar a proxima linha e se existir, senão já é a ultima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou explicar melhor:

 

Quero que ele NÃO leia a última linha do txt pq meu txt é criado a partir de um programa, e a última linha dele vem com um quadrado e por causa desse quadrado dá erro na atualização, vejam um exemplo de um txt:

 

712;AUTO POSTO MILENIO DE TORRINHA LTDA         ;1736;AUTO POSTO MONTE CARLO ONDA VERDE LTDA      ;1717;AUTO POSTO NOVA ERA DE MARACAI LTDA         ;1716;AUTO POSTO SALLA LTDA                       ;1709;AUTO POSTO YPE AMARELO LTDA                 ;1713;AUTO POSTO ZE DO LACO LTDA                  ;1694;DELFIM COM. E TRANSP. LTDA                  ;1706;DELFIM COMERCIO E TRANSPORTES LTDA          ;1707;DELFIM COMERCIO E TRANSPORTES LTDA          ;1719;JULIANO LUCHESI BARBOSA COMBUSTIVEIS        ;1720;MACACO AZUL AUTO POSTO LTDA                 ;1715;MARACUJA COM. DE DERIVADOS DE PETROLEO LTDDA;1735;POSTO MONTE CARLO RIO PRETO LTDA            ;1723;TRANSPORTADORA GASPAR LTDA                  ;1726;MORIYYAH AUTO CENTER LTDA                   ;1746;POSTO DO DITO LTDA                          ;1

Viram, quero que não leia a ultima linha pra não erro nesse quadrado que aparece...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode testar alguma parte do txt pra ver se se enquadra no seu padrão tipo neste exemplo, você pode perguntar se tudo que aparece antes do ponto e virgula é numero, se for armazena senão ignora....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, mas esse quadrado que aparece na última linha é considerado linha vazia ou nula?

tanto faz se você testar se o conteudo da linha tem o formato esperado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

if Trim(Right(varLinha),1) = "1" then    ........linha válidaend if

Compartilhar este post


Link para o post
Compartilhar em outros sites

if Trim(Right(varLinha),1) = "1" then    ........linha válidaend if

esta é uma formamas é só um exemplo pois só funcionará se o ultimo caracter sempre for 1se tiver certeza que sempre será um numero por exemplo você poderia fazer assimif IsNumeric(Trim(Right(varLinha),1)) then ........linha válidaend if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho certeza de que a última linha é um quadrado...veja no txt a última linha como fica:

 

Link do Arquivo TXT

 

Esse quadrado sempre aparece na última linha. Então queria eliminá-lo ou fazer com que essa linha não seje lida.

 

Entenderam...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara como disse você deve tentar arrumar um padrão para as linhas validas, fazendo isso se codigo irá ignorar este quadrado ou qualquer outra coisa estranha que apareça...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste seu código de leitura desse TXT, assim adapto uma Matriz ou algo do tipo nele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste seu código de leitura desse TXT, assim adapto uma Matriz ou algo do tipo nele.

Segue abaixo o código de leitura desse txt:
<%set conn = server.CreateObject("ADODB.Connection")Dim dbqdbq = Server.MapPath("../../databases/vendas.mdb")Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & dbqexecutar = "select * from cidade"set rs = server.createobject("ADODB.Recordset")rs.open executar, conn, 3, 3sql = "delete from cidade"conn.execute(sql)Set fs = Server.CreateObject("Scripting.FileSystemObject")caminho = Server.Mappath("txt/cidades.txt")Set txt= fs.OpenTextFile(caminho, 1,0)while ( not txt.AtEndOfStream) and response.isclientconnected()linha_txt = txt.readlinearrayx = split(linha_txt,";")rs.addnewif arrayx(0) <> "" then rs("cidade") = arrayx(0)if arrayx(1) <> "" then rs("uf") = arrayx(1)if arrayx(2) <> "" then rs("custo_frete") = arrayx(2)if arrayx(3) <> "" then rs("km") = arrayx(3)rs.updatewendresponse.write " Ok, os CADASTRO DE CIDADES foi atualizado com sucesso!!!"txt.closeset txt = nothingset fs = nothingconn.closeset conn = nothing%>
Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui voce faz os testes

 

[tr][/tr][tr][/tr]
ASP linha_txt = txt.readline

arrayx = split(linha_txt,";")

 

rs.addnew

 

if arrayx(0) <> "" then rs("cidade") = arrayx(0)

if arrayx(1) <> "" then rs("uf") = arrayx(1)

if arrayx(2) <> "" then rs("custo_frete") = arrayx(2)

if arrayx(3) <> "" then rs("km") = arrayx(3)

 

rs.update

 

exemplo

 

[tr][/tr][tr][/tr]
ASP linha_txt = txt.readline

If IsNumeric(Trim(Right(varLinha),1)) then

arrayx = split(linha_txt,";")

 

rs.addnew

 

if arrayx(0) <> "" then rs("cidade") = arrayx(0)

if arrayx(1) <> "" then rs("uf") = arrayx(1)

if arrayx(2) <> "" then rs("custo_frete") = arrayx(2)

if arrayx(3) <> "" then rs("km") = arrayx(3)

 

rs.update

End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adaptando uma Matriz no código

<%

 

set conn = server.CreateObject("ADODB.Connection")

 

Dim dbq

 

dbq = Server.MapPath("../../databases/vendas.mdb")

Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & dbq

 

executar = "select * from cidade"

set rs = server.createobject("ADODB.Recordset")

rs.open executar, conn, 3, 3

 

sql = "delete from cidade"

conn.execute(sql)

 

Set fs = Server.CreateObject("Scripting.FileSystemObject")

caminho = Server.Mappath("txt/cidades.txt")

Set txt= fs.OpenTextFile(caminho, 1,0)

 

'while ( not txt.AtEndOfStream) and response.isclientconnected()

'linha_txt = txt.readline

Linha_txt = txt.ReadAll

Linha_txt = Split(Linha_txt, Chr(13)) ' Chr(13) = ao Enter

For x = Lbound(Linha_txt) To (Ubound(linha_txt) - 1)

arrayx = split(linha_txt(X),";")

 

rs.addnew

 

if arrayx(0) <> "" then rs("cidade") = arrayx(0)

if arrayx(1) <> "" then rs("uf") = arrayx(1)

if arrayx(2) <> "" then rs("custo_frete") = arrayx(2)

if arrayx(3) <> "" then rs("km") = arrayx(3)

 

rs.update

Next

'wend

 

response.write " Ok, os CADASTRO DE CIDADES foi atualizado com sucesso!!!"

 

txt.close

 

set txt = nothing

set fs = nothing

 

conn.close

set conn = nothing

 

%>

[/tr]
Veja se rola certinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado, com esse código que me passou, atualizou certinho, mas no bd ele gravou o tal "quadrado" antes de todos os nomes das cidades menos o da 1ª linha. E quando vai exibir no asp, exibe as cidades certinhos sem o tal quadrado que está no bd mas não exibe a 1ª cidade que está na 1ª linha onde nao foi gravado o tal quadrado no inicio...entendeu?David

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém tem uma luz?

tente assim

 

[tr][/tr][tr][/tr]
ASP <%

set conn = server.CreateObject("ADODB.Connection")

 

Dim dbq

 

dbq = Server.MapPath("../../databases/vendas.mdb")

Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & dbq

 

executar = "select * from cidade"

set rs = server.createobject("ADODB.Recordset")

rs.open executar, conn, 3, 3

 

sql = "delete from cidade"

conn.execute(sql)

 

Set fs = Server.CreateObject("Scripting.FileSystemObject")

caminho = Server.Mappath("txt/cidades.txt")

Set txt= fs.OpenTextFile(caminho, 1,0)

 

WHILE NOT txt.AtEndOfStream

linha_txt = txt.readline

If INSTR(linha_txt,";") > 0 then

arrayx = split(linha_txt,";")

 

rs.addnew

 

if arrayx(0) <> "" then rs("cidade") = arrayx(0)

if arrayx(1) <> "" then rs("uf") = arrayx(1)

if arrayx(2) <> "" then rs("custo_frete") = arrayx(2)

if arrayx(3) <> "" then rs("km") = arrayx(3)

 

rs.update

End If

WEND

 

response.write " Ok, os CADASTRO DE CIDADES foi atualizado com sucesso!!!"

 

txt.close

 

set txt = nothing

set fs = nothing

 

conn.close

set conn = nothing

%>

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.