Importar data com Append

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Grings
Usuário Nível 3
Usuário Nível 3
Mensagens: 340
Registrado em: 18 Ago 2004 13:51

Importar data com Append

Mensagem por Grings »

Preciso importar com Append uma data de um arquivo TXT que se encontra no formato 31122006 para um DBF campo cujo campo é data. Não estou conseguindo, é possível fazer isso com o Append ??
Nota de Moderação:
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: Mensagem recuperada através de citações de outros usuários. Pois esta mensagem foi re-editada pelo próprio autor apagando o seu conteúdo e prejudicando o entendimento do tópico. Esta prática não é aceita no fórum.
Editado pela última vez por Grings em 22 Mai 2009 21:31, em um total de 1 vez.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, abaixo segue um exemplo completo....

Código: Selecionar todos

cls
vARQ:={}
aadd( vARQ, {"data","D",8,0} )
DBcreate("TESTE.DBF", vARQ)

use teste alias teste shared new
hand=FOPEN("c:\teste.txt")
xdata=FREADSTR(hand,8)
FCLOSE(hand)
xDATA1=left(xdata,2)
xDATA2=left(xdata,4)
xDATA3=RIGHT(xdata2,2)
xDATA4=RIGHT(xdata,4)
xDATA4=xDATA1+"/"+xDATA3+"/"+xDATA4

@ 10,10 SAY XDATA        COLOR("B/W*")
@ 11,10 SAY XDATA4       COLOR("B/W*")
@ 12,10 SAY CTOD(XDATA4) COLOR("B/W*")

sele teste
append blank
repl data with xdata4
return
Qualquer duvida prende o grito....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Leonardo,
De onde foi que você tirou que a data em questão reside nas primeiras 8 posições do arquivo texto?
E que jeito esdrúxulo é esse de converter o texto em DATE? Não seria mais fácil algo do tipo:

Código: Selecionar todos

set date british
set century on // não é essencial
cData := "31122006"
dData := CtoD(Transf(cData,"@R 99/99/9999"))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Importar data com Append

Mensagem por Maligno »

Grings escreveu:Preciso importar com Append uma data de um arquivo TXT que se encontra no formato 31122006 para um DBF campo cujo campo é data. Não estou conseguindo, é possível fazer isso com o Append ??
Não me lembro exatamente dessa parte (nunca usei e não vi o NG) mas acredito que não, pois o APPEND provavelmente espera que a data esteja no formato ANSI (YYYYMMDD). Então, você terá que fazer (+/-) como o Leonardo sugeriu: abrir o arquivo texto e capturar a porção que registra essa data. Daí é converter e importar da forma que precisar.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

De onde foi que você tirou que a data em questão reside nas primeiras 8 posições do arquivo texto?
Tche, ele disse que esta em um TXT , eu não disse se sabe abrir ou localizar algo no TXT....ele não detalhou pq não esta conseguindo...
E que jeito esdrúxulo é esse de converter o texto em DATE?
Maligno....acho que vossa senhoria deveria medir as palavras antes de Postar...sou postei uma ajuda a um colega....
Não seria mais fácil algo do tipo:
Código:
set date british
set century on // não é essencial
cData := "31122006"
dData := CtoD(Transf(cData,"@R 99/99/9999"))
Seu exemplo não esta pegando de um TXT.....alias de onde vc tirou que essa DATA esta vindo de uma variavel fixa.......?

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Código: Selecionar todos

xDATA1=left(xdata,2) 
xDATA2=left(xdata,4) 
xDATA3=RIGHT(xdata2,2) 
xDATA4=RIGHT(xdata,4) 
xDATA4=xDATA1+"/"+xDATA3+"/"+xDATA4
Se fosse um iniciante, até nem me preocuparia. Mas esse código, pra um sujeito com a sua experiência, não só é uma forma bem esdrúxula como um desperdício. Refatorando fica com uma só linha. Não fica melhor usar a única linha abaixo?

Código: Selecionar todos

CtoD(Transf(xdata,"@R 99/99/9999"))
E é óbvio que eu sei que você postou seu exemplo pra ajudar o colega. Não precisava nem se dar ao trabalho de dizer isso. Gastou o verbo à toa. :\
Seu exemplo não esta pegando de um TXT.....alias de onde vc tirou que essa DATA esta vindo de uma variavel fixa.......?
Meu código é um exemplo simples que trata apenas da conversão. Por isso "inventei" uma variável. Agora, de onde o cara vai pegar a data é problema dele. Além do que, a pergunta dele foi "é possível fazer isso com o Append ??". E dei minha resposta. Ele não pediu código exemplo pra ler um TXT.

Inclusive, o exemplo de conversão que dei foi mais direcionado à você, que me deixou surpreso. Imagino que você devia estar bem distraído para compor aquilo.

Mas, por favor, atente para o fato de que minha crítica não é ofensiva, mas construtiva.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno,
Faltou um SET DATE BRIT...

xdata="31122006"
?CtoD(Transf(xdata,"@R 99/99/9999")) -> data vazia...

xdata="31122006"
set date brit
?CtoD(Transf(xdata,"@R 99/99/9999")) -> 31/12/2006
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eolo escreveu:Maligno,
Faltou um SET DATE BRIT...
Não faltou, Eolo. Está na minha primeira mensagem. Veja lá.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Ops, é vero, Maligno. Peguei pela citação, no seu último post, e falei besteira...
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Distraiu-se. Tudo bem. Acontece comigo o tempo todo. :)
Mas se você reparar bem, faltou sim um SET DATE BRITISH, mas no exemplo do Leonardo, em sua primeira mensagem. O código dele sempre gravará uma data vazia no DBF.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Grings
Usuário Nível 3
Usuário Nível 3
Mensagens: 340
Registrado em: 18 Ago 2004 13:51

Importar data com Append

Mensagem por Grings »

De fato Maligno, Append From não aceita campos data em nenhum formato.
Nota de Moderação:
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: Mensagem recuperada através de citações de outros usuários. Pois esta mensagem foi re-editada pelo próprio autor apagando o seu conteúdo e prejudicando o entendimento do tópico. Esta prática não é aceita no fórum.
Editado pela última vez por Grings em 22 Mai 2009 21:22, em um total de 1 vez.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Se fosse um iniciante, até nem me preocuparia. Mas esse código, pra um sujeito com a sua experiência, não só é uma forma bem esdrúxula como um desperdício. Refatorando fica com uma só linha. Não fica melhor usar a única linha abaixo?
Toda vida ficaria melhor....não desmereci em momento algum o seu exemplo...apenas comentei.....coloquei um exemplo que veio na cabeça....na aquela hora...
Meu código é um exemplo simples que trata apenas da conversão. Por isso "inventei" uma variável. Agora, de onde o cara vai pegar a data é problema dele. Além do que, a pergunta dele foi "é possível fazer isso com o Append ??". E dei minha resposta. Ele não pediu código exemplo pra ler um TXT.

Inclusive, o exemplo de conversão que dei foi mais direcionado à você, que me deixou surpreso. Imagino que você devia estar bem distraído para compor aquilo
Realmente Maligno....vc tem razão...eu deveria esta bem distraido....talvez cansado....afinal jah era 21:30 da noite...eu tava desde cedo na luta....mas o que me deixa....as vezes com má impressão de vossa senhoria é que vc tenta tripudiar....em cima dos outros, acho que todos aqui no forum de uma certa maneira estão querendo colaborar.....seria muito mais simples.....vc postar seu codigo dando sua dica....e pronto..
Mas, por favor, atente para o fato de que minha crítica não é ofensiva, mas construtiva.
Obrigado e Igualmente.....
Mas se você reparar bem, faltou sim um SET DATE BRITISH, mas no exemplo do Leonardo, em sua primeira mensagem. O código dele sempre gravará uma data vazia no DBF.

Realmente esqueci do SET DATE BRITISH......




Abraços
Leonardo Machado
#$%#%%¨&%&#
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Importar data com Append

Mensagem por Maligno »

Grings escreveu:De fato Maligno, Append From não aceita campos data em nenhum formato.
Mas aceita. Como eu disse, no formato ANSI. Se você ainda tivesse a data nesse formato e pudesse importar tudo, seria mais fácil. Mas se você tem a data no formato britânico e precisa importar apenas parte dos dados, só manualmente mesmo.
Aliás, nunca uso APPEND pra isso. Sempre faço manualmente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

É, a gente se distrai mesmo. Deve ser por causa da 6a. feira... eheheh

Mas, voltando ao começo, se eu fosse você, Grings, esquecia o APPEND FROM (que é o que eu acho que você tem em mente quando diz "...preciso importar com Append..."). Eu já tentei usar esse comando, por achar que era a salvação da lavoura, e foi um saco: gastei muito tempo e não resolveu 100%.

Eu faria como já foi dito acima: ler linha a linha do TXT, isolar cada campo, testar a consistência de cada um (no caso das datas, por ex, confirmar que não tem nenhuma "vazia" ou incorreta), e depois fazer o APPE BLAN e REPL...
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

sygecom escreveu:Realmente Maligno....vc tem razão...eu deveria esta bem distraido....talvez cansado....afinal jah era 21:30 da noite...eu tava desde cedo na luta....
A essa hora,... Sei bem como é. Estou trabalhando todos os dias até 3 ou 4 da manhã. Quando chega nesse ponto é fácil perder a concentração. Mais cedo ou mais tarde será você a me corrigir numa outra thread qualquer. E aceitarei sua intervenção humildemente.
mas o que me deixa....as vezes com má impressão de vossa senhoria é que vc tenta tripudiar....em cima dos outros
Não tripudiei coisa alguma. Foi impressão sua. Apenas estranhei um código desse tipo partindo de "Vossa Senhoria". Considere essa última observação um elogio. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder