PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Lendo Arquivo Texto Até Final de Arquivo - EOT
Lendo Arquivo Texto Até Final de Arquivo - EOT
Iniciado por ANDRE MARTINI / IS2, mar., 16 2016 9:55 PM - 2 respostas
Membro registado
208 mensagems
Popularité : +25 (25 votes)
Publicado em março, 16 2016 - 9:55 PM
Olá,

quero compartilhar com vocês uma situação que aconteceu comigo na importação de arquivo texto para tabelas do sistema.

O primeiro código é para importar os registros para a tabela Paises e por o campo chave (Codigo_do_pais) ser do tipo INT o final de arquivo funcionou a variável nCodigo é igual a 0
IF HNbRec(Paises) = 0 THEN
nNomeArquivo = fOpen(fCurrentDir()+"\Lista_Paises.txt",foRead)
IF nNomeArquivo <> -1 THEN
LOOP
sLinha = fReadLine(nNomeArquivo)
nCodigo = Middle(sLinha,1,4)
IF nCodigo = 0 THEN
BREAK
ELSE
sNome = Upper(NoAccent(Middle(sLinha,5)))
HReadSeekFirst(Paises,Codigo_do_pais,nCodigo)
IF NOT HFound() THEN
HReadSeekFirst(Paises,Nome_do_pais,sNome)
IF NOT HFound() THEN
HReset(Paises)
Paises.Codigo_do_pais = nCodigo
Paises.Nome_do_pais = sNome
HAdd(Paises)
END
END
END
END
END
END


quando fui fazer a importação para a tabela Unidades Federativas tive problemas pois como o campo chave (Uf) é do tipo STRING no final do arquivo a variável não ficava em branco e sim com o valor EOT (debuguei para ver), dai alterei o código e pude incluse fazer a rotina semelhante a que faço no VB6 com o WHILE e sem BREAK, veja abaixo

IF HNbRec(Unidades_federativas) = 0 THEN
nNomeArquivo = fOpen(fCurrentDir()+"\Lista_Uf.txt",foRead)
IF nNomeArquivo <> -1 THEN
sLinha = fReadLine(nNomeArquivo)
WHILE sLinha <> EOT
sCodigo = Upper(NoAccent(Left(sLinha,2)))
HReadSeekFirst(Unidades_federativas,Uf,sCodigo)
IF NOT HFound() THEN
HReset(Unidades_federativas)
Unidades_federativas.Uf = sCodigo
Unidades_federativas.Codigo_da_uf_ibge = Middle(sLinha,3,2)
Unidades_federativas.Aliquota_icms_ufdest= Middle(sLinha,5,2)
HAdd(Unidades_federativas)
END
sLinha = fReadLine(nNomeArquivo)
END
END
END


--
André Martini
IS2 Automotive http://www.is2.inf.br/is2automotive/index.html
IS2 Construtive http://www.is2.inf.br/is2construtive/index.html
IS2 Store http://www.is2.inf.br/is2store/index.html
IS2 Gerent http://www.is2.inf.br/is2gerent/index.html
Membro registado
3.657 mensagems
Popularité : +175 (223 votes)
Publicado em março, 17 2016 - 6:09 PM
Prezado André,

Faltou dizer se deu certo ou não fiquei na dúvida se é uma afirmação ou uma dúvida... Pode esclarecer os resultados se foram satisfatórios, voce precisa de ajuda?

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Membro registado
208 mensagems
Popularité : +25 (25 votes)
Publicado em março, 17 2016 - 6:17 PM
Deu certo, os dois códigos estão funcionando, só compartilhei porque tive problema quando a variável que armazenava o valor obtido do TXT era STRING, neste caso tive que mudar o teste para EOT.

--
André Martini
IS2 Automotive http://www.is2.inf.br/is2automotive/index.html
IS2 Construtive http://www.is2.inf.br/is2construtive/index.html
IS2 Store http://www.is2.inf.br/is2store/index.html
IS2 Gerent http://www.is2.inf.br/is2gerent/index.html