APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Pessoal, bom dia, todos bem? Espero que sim !!

Estou tendo um problema na importação de um arquivo txt padrão Conemb/PROCEDA/NOTFIS

No meu sistema importo este padrão para um PDF, e após isso vou tratando linha por linha para importar os dados pra minha tabela interna.

Tudo funciona perfeitamente há anos.

O Problema é que alguns dias atrás um clientes que já utiliza esta rotina, recebeu o arquivo de um novo cliente dele, e este arquivo não importa.

Vou postar aqui a rotina de importação que funciona há muitos anos. e tambem o arquivo que não está importando.

Gostaria de ajuda dos amigos especialistas aqui, pois não estou conseguindo resolver.

Desde já agradeço o apoio deste grupo e de todos !!

// parte da rotina de importação que funciona perfeitamente até hoje --------------------------
sele nfe
set order to 1
mID_COL=SPACe(7)
SELE INEXIST

USE IMPPROC ALIAS IMPPROC NEW
do while .t.
CLEAR
mENCONTRA=SPACE(50)
mTERMOMETR:=0
mPEDACO:=0
mTROCA=SPACE(50)
mENCONTRA=RTRIM(LTRIM(mENCONTRA))
declare arqs[adir("\proceda\*.TXT")]
xPATH='\proceda\'
adir('\proceda\*.txt',arqs)
conta=1
mFIM:=len(arqs)
IF mFIM < 180
@ 10,10 SAY REPLICATE('°',mFIM)
mPEDACO=ROUND(100/mFIM,2)
mTERMOMETRO=mPEDACO
@ 08,00 SAY 'PORCENTAGEM COMPLETADA ==>'
@ 20,05 SAY '° -> Arquivo nao visto'
@ 21,05 SAY '² -> Arquivo vasculhado'
@ 22,05 SAY 'x -> Arquivo alterado'
ENDIF
do while conta <= Mfim
@ 10,(CONTA+9) SAY '²'
Mtexto=memoread(xPATH+arqs[conta])
IF LEN(MTEXTO)<30
FERASE(xPATH+arqs[conta])
CONTA++
LOOP
ENDIF
USE IMPORTA NEW
ZAP
APPEND FROM &(xPATH+ARQS[CONTA]) SDF
GO TOP
DO WHILE .T.
@ 08,40 SAY ' '
@ 08,40 SAY ARQS[conta]
mREG:=mCAMPO:=0

// -----------------------

Anexo está o arquivo real do cliente que não importa no Append FROM SDF
Anexos
edi0000004193.TXT
(82.64 KiB) Baixado 648 vezes
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por Itamar M. Lins Jr. »

Olá!
Agora vc coloca um que ele importa sem problema.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Olá, bom, veja este arquivo em anexo importa sem problemas.

Veja
Anexos
arq1.TXT
(477 KiB) Baixado 475 vezes
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Durante o teste que fiz tentando importar, após a importação SDF, analisei linha por linha (registro por registro) importado

Percebi que, neste arquivo que dá o erro, ele importa dando um espaço em branco em cada letra por exemplo

(o inicio de um determinado registro seria "310RIBEIRAO")

ele importa o seguinte

"3 1 0 R I B E I R A O"
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por Itamar M. Lins Jr. »

Olá!
É diferente.
Por exemplo esse campo enorme, não tem no outro.
0000100000000000049761000000400000NN000000000000000000000000000000CUM5200N000000000000000000000000000000000000000000000000000000000001I000000000000000000000000N

Já comparou as posições ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Sim, ja comparei

O que pode ocorrer é que em alguns txts tem outros registros que nao tem em outros.

então meu sistema compara os primeiros 3 digitos de cada linha por exemplo "310", aí ele sabe que é pra ler no padrão do layout do registro 310.

O registro que não precisa importar, simplesmente ele ignora e passa pra proxima linha

veja exemplo abaixo ele importa se for linha 311, 312 e mais alguns registros, se for diferente disso ele da um skip na linha importada e passa pra proxima até o final do arquivo

O que percebi é que nestes arquivos especificos ele importa dando um espaço em branco em cada numero, faça o teste ai importando um arquivo destes via SDF, vai ver que dá estes erro.


DO WHILE .T.
x=1

mlinha=linha1
ALERT2(LEFT(MLINHA,50)) // TIRAR DEPOIS

IF LEFT(mLINHA,3)='311'
mCGC =substr(mLINHA,04,14)
mCOL_UF =substr(mLINHA,117,02)
mCOLETA =substr(mLINHA,073,35)
mIE =ALLTRIM(substr(mLINHA,018,15))
X=6
mEMIT=SUBSTR(MCGC, 1, 2)+'.'+SUBSTR(MCGC, 3, 3)+'.'+;
SUBSTR(MCGC, 6, 3)+'/'+SUBSTR(MCGC, 9, 4)+'-'+;
SUBSTR(MCGC,13, 2)
ENDIF

IF LEFT(mLINHA,3)='312'
mNOME =substr(mLINHA,4,40)
mFANTASIA =substr(mLINHA,4,40)
mCGC =substr(mLINHA,44,14)
mENDE =substr(mLINHA,73,40)
mNUMERO =substr(mLINHA,58,15)
mBAIRRO =substr(mLINHA,113,20)
mCEP =substr(mLINHA,168,09)
mCIDADE =substr(mLINHA,133,35)
mID_CIDADE =substr(mLINHA,177,07)
mFONE=' '
mUF =substr(mLINHA,186,02)
mID_PAIS ='01058'
mPAIS ='BRASIL'
mIE =ALLTRIM(substr(mLINHA,058,15))
X=6
IF EMPTY(mCIDADE)
mOLDALIAS=ALIAS()
// Procura no cadastro interno - parte do cep
SELE CIDADE
mCEPPEDACO=LEFT(RTRIM(mCEP),5)
LOCATE FOR LEFT(CEP,5)=mCEPPEDACO
if !eof()
mCIDADE=CIDADE->CIDADE
mUF=CIDADE->UF
IF EMPTY(mID_CIDADE)
mID_CIDADE=BuscaIBGE(mCIDADE,mUF)
ENDIF
else // PROCURA NO CADASTRO DO IBGE
mCEPPADRAO=RTRIM(mCEP)
SELE CADCEP
SEEK mCEPPADRAO // procurou por cep padrão
if !eof()
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por Itamar M. Lins Jr. »

Olá!
A linha final do que dá erro é maior vai até 322 <LN>
A outra que funciona fica variando 241 e 284. Não sei qual é seu padrão para isso. Talvez versões diferente do sistema que está gerando esse TXT.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

São arquivos de empresas diferentes, gerada por sistemas diferentes

conseguiu importar usando o SDF?
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por JoséQuintas »

Deu uma olhada num editor igual programmers notepad pra conferir o conteúdo ?
file1.png
file2.png
Formato diferente, resultado diferente.
Nem me pergunte que formato é esse, não faço idéia.

Num chute: formato de 2 bytes, o que explicaria uma letra e um possível espaço em branco.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

O estranho é que já uso assim a muito anos, já importei usando esta mesma rotina arquivos padrão CONEMB de muitas empresas diferentes.

é a primeira vez em muitos anos que presencio este problema.

Será que teria algum utilitario que eu executasse e ele mudaria o formato da codificação do arquivo pra eu conseguir importar normalmente como consigo os outros?
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Descobri que estes arquivos não estão no padrão ASCII

Se tiver, ele importa normal

existe algum utilitario de linha de comando que posso usar para fazer essa transoformaçao ?

PS Y:\proceda> Get-Content edi0000003199.txt | Set-Content -Encoding ascii test-ascii2.txt
PS Y:\proceda> Get-Content edi0000004193.txt | Set-Content -Encoding ascii test-ascii3.txt

Eu descobry este acima no powershell,

mas nao consigo colocar caracteres coringas, Será que existe algo mais pratico que posso automatizar tipo gerar um arquivo em lot no dos?
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por Itamar M. Lins Jr. »

Olá!
Basta vc saber em que formato está.
Ai o harbour converte para seu padrão.

Saudações,
Itamar M. LIns Jr.
Saudações,
Itamar M. Lins Jr.
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Fiz o teste e sei que se transformar pro ASCII funciona a importação

Se o harbour fizer isso aí resolve tudo, pois este meu aplicativo está em harbour

qual comando teria que fazer no harbour para transformar para o ASCII ?
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por Itamar M. Lins Jr. »

Olá!
No Linux tem um comando que diz o conteúdo do tipo do arquivo, baseado nisso vc pode fazer ai sua importação.

Código: Selecionar todos

itamar@itamar-desktop:~/Downloads$ file edi0000004193.TXT 
edi0000004193.TXT: Unicode text, UTF-16, little-endian text, with very long lines (321), with CRLF line terminators
Ai vc precisa identificar o arquivo que é UTF8
if hb_StrIsUTF8(memoread("edi0000004193.TXT" )) //identifica
Depois que identifica, vc converte e grava não sei, essa parte é com vc, se vai grava no disco ou vai ler direto da string sem precisar gravar em disco.
cFile := hb_UTF8ToStr( "edi0000004193.TXT" ) //converte

Mas neste caso ai tá dizendo que é UTF16. Veja ai se com UTF8 vai.

Saudações,
Itamar M. LIns Jr.
Saudações,
Itamar M. Lins Jr.
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

APPEND SDF NAO FUNCIONA COM ARQUIVO TXT

Mensagem por leandromiler »

Opa Itamar, vou tentar aqui e retorno

Obrigado por enquanto!!!
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Responder