Gravar datas no DBF com ano 2000?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Dilson José
Usuário Nível 1
Usuário Nível 1
Mensagens: 24
Registrado em: 06 Jun 2007 08:09
Localização: www.pop.com.br
Contato:

Gravar datas no DBF com ano 2000?

Mensagem por Dilson José »

Boa tarde a todos!

Como gravo datas do formato 2000 em um arquivo dbf atraves da minha aplicação?

A quem ajudar agradeço

Obrigado

Dilson
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Gravar datas no DBF com ano 2000?

Mensagem por anacatacombs »

Tente assim:

Código: Selecionar todos

SET EPOCH TO 2000
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Gravar datas no DBF com ano 2000?

Mensagem por Pablo César »

E utilize-se de SET CENTURY ON para trabalhar com 4 dígitos nas datas.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Gravar datas no DBF com ano 2000?

Mensagem por anacatacombs »

Ixe, entendi errado a pergunta do rapaz !
Acho que preciso de férias O.o
Obrigada Pablo
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Gravar datas no DBF com ano 2000?

Mensagem por alxsts »

Olá!

Relaxe Aninha, suspenda as férias. Você entendeu certo sim! E a dica do Pablo vem complementar.

Use SET CENTURY ON ou Set ( _SET_DATEFORMAT, "DD/MM/YYYY" ) para exibir o ano das datas com 4 dígitos.

Use ou SET DATE [TO] BRITISH ou Set ( _SET_DATEFORMAT, "DD/MM/YYYY" ) para formatar datas no padrão que usamos.

Use SET EPOCH TO <nVal> ou Set( _SET_EPOCH, <nVal> ) para definir um janelamento no tempo, quando estiver trabalhando com datas no formato DD/MM/AA.

Por exemplo:
SET EPOCH TO 1930 ou Set( _SET_EPOCH, 1930 ) ativaria a interpretação de datas com anos entre 00 e 29 como do século 21 (2000 a 2029) e anos entre 30 e 99 como século 20 (1930 a 1999). O janelamento do Windows era 1930 (não sei se mudou).

Se preferir utilizar a função Set() demostrada acima, não deixe de fazer um #include "set.ch"
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Gravar datas no DBF com ano 2000?

Mensagem por Eolo »

Já que a pergunta do Dilson fala em gravação ("Como gravo datas do formato 2000"), vale uma observação: as datas, no DBF, são SEMPRE gravadas no formato AAAAMMDD. O que pode mudar é só a exibição. Se você usar por exemplo SET DATE BRITISH e SET CENTURY OFF, as datas são exibidas no formato DDMMAA, mas dentro do DBF elas continuam AAAAMMDD.

set date british
set century off
set epoch to 2000
data:=ctod("22/01/12")
replace campodata with data
* vai ser gravado 20120122 no DBF

set epoch to 1900
data:=ctod("22/01/12")
* vai ser gravado 19120122

Um cuidado a tomar: o default do Clipper é o formato americano de data, MMDDAA.
Se vc não usar o SET DATE BRITISH e fizer data:=ctod("22/01/12")
? data -> vai aparecer vazio, pq o clipper vai entender MM 22, DD 01 AA 12

Como não existe mês 22, a variável data vai conter uma data vazia.
Responder