Página 1 de 1
Ajuda com Datas Urgente!
Enviado: 13 Jul 2005 15:27
por vaninho
Amigos eu preciso limpar um banco de dados atraves de uma rotina,devido ao bco de dados estar muito grande,com dados desnecessarios.
eu gostaria limpar deixando somente os dados dos ultimos 6 meses.
eu pensei assim,
uma variavel ?
comparar esta variavel com a data do banco de dados de pedido por exemplo campo (dataped) type date.
se a data de pedidos que for encontrando for anterior ao periodo de 6 meses deletar.
neste caso eu tenho que trabalhar com mes e ano
tipo:
goto top
dentro do laço do while
if eof()
limpeza concluida
Close all
return
endif
return
if dataped=variavel
set filter to dataped=variavel
delete
skip
else
endif
loop
ENDDO
o que esta pegando é que eu não sei como criar esta variavel( o Valor a ser comparado) para deixar os registros correspondendo ao 6 meses para fazer a busca nas datas do banco de dados.
Alguém por Favor poderia me dar uma força de como fazer esta rotina,se for possivel usar o meu exemplo acima acrescentando ou tirando o que for nescessario para funcionar como eu expliquei.
desde já agradeço a todos pela ajuda.
obs: eu citei uma variavel dentro desta rotina,porque eu gostaria que esta limpeza fosse automatica,sem precisar o usuario digitar nada,somente ativar a rotina para executar a limpeza quando nescessario.
Enviado: 13 Jul 2005 16:45
por Daniel
tente assim
Código: Selecionar todos
use banco
go top
while .t.
if campo_data <= ctod('01/01/2005')
delete
endif
skip
if eof()
pack
exit
endif
end
Re: Ajuda com Datas Urgente!
Enviado: 27 Jul 2005 15:51
por JLF
vaninho escreveu:Amigos eu preciso limpar um banco de dados atraves de uma rotina,devido ao bco de dados estar muito grande,com dados desnecessarios.
eu gostaria limpar deixando somente os dados dos ultimos 6 meses.
eu pensei assim,
uma variavel ?
comparar esta variavel com a data do banco de dados de pedido por exemplo campo (dataped) type date.
se a data de pedidos que for encontrando for anterior ao periodo de 6 meses deletar.
neste caso eu tenho que trabalhar com mes e ano
tipo:
goto top
dentro do laço do while
if eof()
limpeza concluida
Close all
return
endif
return
if dataped=variavel
set filter to dataped=variavel
delete
skip
else
endif
loop
ENDDO
o que esta pegando é que eu não sei como criar esta variavel( o Valor a ser comparado) para deixar os registros correspondendo ao 6 meses para fazer a busca nas datas do banco de dados.
Alguém por Favor poderia me dar uma força de como fazer esta rotina,se for possivel usar o meu exemplo acima acrescentando ou tirando o que for nescessario para funcionar como eu expliquei.
desde já agradeço a todos pela ajuda.
obs: eu citei uma variavel dentro desta rotina,porque eu gostaria que esta limpeza fosse automatica,sem precisar o usuario digitar nada,somente ativar a rotina para executar a limpeza quando nescessario.
Amigo,
Estou tambem tentando fazer algo parecido, no meu caso quero pegar a data de hoje date() e adicionar ou voltar alguns dias para dar sequencia no programa.
Como vc, quero q seja automatica (interna) sem ação do usuário.
Agradeço a ajuda caso vc conseguiu resolver.
abraços
Enviado: 27 Jul 2005 19:50
por Poka
Olá a todos;
Referente a limpeza de registros de arquivos em um sistema, acredito que o + correto seria fazer uma rotina onde o usuario entraria com a data limite para exclusao de registros, por exemplo exluir registros até o dia 31/12/2004.
Mas não é somente ir testando e excluindo os registros. Na rotina de limpeza faça o tratatamento para cada arquivo, por exemplo no arquivo de contas a receber, teste a data de lancamento do registro e teste ainda se o documento ja foi totalmente baixado. Imagine que a data desse documento é de 30/11/2004 e os vencimentos para 30/12/2004 e 30/01/2005, nesse caso esse documento nao pode ser excluido, em contas pagar idem. No meu modo de ver essa é a maneira + correta e é como eu faço.
Um abraço
Poka
Enviado: 28 Jul 2005 07:39
por spereira
Código: Selecionar todos
set date british
set century on
mDATA_LIM = DATE()-182
mDELETOU = .f.
CLEAR
@10,10 SAY "Informe a data limite: " get mDATA_LIM picture "99/99/9999"
read
select banco new
while .not. eof()
if campo_data <= mDATA_LIM
delete
mDELETOU = .t.
endif
skip
end
if mDELETOU
pack
endif
close all
return
Veja se assim fica melhor. Desta forma o usuário pode alterar a data limite se quizer. Se não houver exclusões durante o processo não haverá a necessidade de fazer o pack.
Atenção que eu não incluí arquivos de índices. Estes deverão ser incluídos na abertura da área.
Enviado: 28 Jul 2005 14:43
por momente
Ola Pessoal!
Olha concordo plenamente com todas as idéias, inclusive a que devemos deletar apenaz documentos contas a pagar e receber previamente quitados, mas a questão do comando PACK, gostaria de dar a idéia de usá-lo antes do comando de indexação do arquivo, fora da rotina, pois em rede, se for usado desta maneira vai dar bug.
Espero ter contribuido!
um abraço! -:]