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.
Ajuda com Datas Urgente!
Moderador: Moderadores
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
endDaniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Re: Ajuda com Datas Urgente!
Amigo,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.
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
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Clipper 5.3 - Blinker 7
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
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
-
spereira
- Usuário Nível 2

- Mensagens: 85
- Registrado em: 19 Jul 2004 11:42
- Localização: Porto - Portugal
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
returnAtenção que eu não incluí arquivos de índices. Estes deverão ser incluídos na abertura da área.
- momente
- Usuário Nível 3

- Mensagens: 496
- Registrado em: 03 Mar 2005 11:53
- Localização: São Carlos-SP
- Contato:
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! -:]
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! -:]
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br

