GARANTIR DESCONTO

Fórum Atualizar os registros do banco de dados #272871

17/03/2005

0

Tenho um sistema onde são cadastrados os débitos dos clientes de uma determinada empresa. Na hora do cadastro é colocado num campo chamado ´Situação´ a mensagem ´Em dias´. Como devo proceder para que no momento em que o form for aberto, ele assumir a mensagem ´Em atraso´ em todos os registros onde a data estiver vencida??? (Automaticamente).

Obrigado a todos que puderem me ajudar.

Bjs.


Anjinho Loiro

Anjinho Loiro

Responder

Posts

17/03/2005

Ehvasc

Cara Colega,


No OnCreate do form vc coloca uma Query que execute o seguinte comando:
 
UPDATE TABELA SET SITUACAO = ´Em Atraso´ 
WHERE VENCIMENTO < HOJE AND NÃO ESTIVEREM PAGOS (AQUI VC DEVE COLOCAR A VALIDAÇÃO QUE VC EXECUTA PRA SABER SE O DÉBITO ESTÁ PAGO)


Espero ter ajudado. Qualquer dúvida manda um email. Boa Sorte e até a próxima


Responder

Gostei + 0

17/03/2005

Anjinho Loiro

Já tentei algo parecido, mas o problema é justamente na validação que não estou conseguindo.
Toda vez que entra o formulário trava e os botões do DBNavigato ficam piscando sem parar e aí, só CTRL+ALT+DELETE.

O resumo do que quero é isso, a data venceu, o campo situação assume o valor ´Está em atraso´.

Será que vc pode me dar um exemplo mais detalhado. Desculpe-me por bancar a chata.

Bjs.


Responder

Gostei + 0

18/03/2005

Gordonsp

Que banco de dados vc. esta utilizando?
Voce poderia criar uma procedure e deixar criar um JOB que a cada 6 horas ele verifique e atualize o status para vc., sendo assim nao precisaria fazer isso com nenhum codigo dentro de seu sistema, ou entao, pode executar essa procedure assim que abrir o sistema.
Qualquer duvida estarei a disposiçao.


Responder

Gostei + 0

18/03/2005

Anjinho Loiro

Utilizo o Paradox, Query e Delphi 3 - Client/Server.

Prefiro a sua segunda sugestão. Se vc puder me dar uma dica de como fazer, eu agradeço.

Bjs.


Responder

Gostei + 0

18/03/2005

Marcio.theis

Por quê no caso deve de ser um campo na base de dados???? Na minha opinião seria mais fácil você cirar um campo calculado e executar pelo calcfield, e sempre que navegar ele executa o calcfield e te atualiza na tela.


Responder

Gostei + 0

18/03/2005

Gordonsp

Concordo com vc., mas na minha opiniao, tudo o que puder fazer no banco eh melhor, pois vc. nao tem que ficar utilizando recursos extras para fazer uma coisa que num banco de dados eh meramente facil e na minha visao correta.
Hoje tudo o que desenvolvo e que tenha regras e recurso de banco, faço tudo no banco, por exemplo, insert, updates e relatorios, fica facil de dar manutençao, pois se voce nao alterar a regra do negocio, as alteracoes ficam mais facil.


Responder

Gostei + 0

18/03/2005

Marcio.theis

Tudo bem tb concordo com vc... Mas no momento que um futuro cliente chega para vc e diz, ´Eu quero o sistema na base de dados X´ e esse banco não da suporte aos seus requerimentos de banco anteriores... Ai vc tera um problema, eu já sou mais a favor de colocar no código mesmo, temos aqui sistemas rodando direto em mais de cinco bd diferentes.


Responder

Gostei + 0

18/03/2005

Gordonsp

voce esta certo marcio, infelizmente eu todos os clientes que trabalho utilizam postgresql, sendo assim, consigo montar um padrao e, que facilita muito.
Os bancos que utilizo hoje sao: Mysql, Postgre, Oracle e SQL-Server, eu tenho desenvolvido padroes para todos esses bancos.
Valeu pela troca de informaçoes.


Responder

Gostei + 0

18/03/2005

Gordonsp

Irei pesquisar para voce como montar essa procedure em Paradox, uma vez que nunca utilizei esse banco.
Na minha opiniao, voce deveria pensar na possibilidade de futuramente migrar para um banco melhor(mais recursos).
Quero ver se ainda hoje vejo isso para vc.
Um grande abraço


Responder

Gostei + 0

18/03/2005

Andremuller

No Paradox não há como criar procedimentos até porque Paradox não é um banco de dados, é sistema de arquivos, como DBF.

Como funciona esse seu form?
Normalmente o que acontece: seleciona-se um cliente e aparecem seus pagamentos. Faça então a atualização do status desses pagamentos preferencialmente sem utilizar query porque são muito muito lerdas qdo utiliza-se paradox com BDE.

Caso seja necessária uma atualização em massa, avalie pela quatindade de registros a possiblidade de utiliazar a query já enviada para esse tópico.
Caso a tabela seja muito grande, crie um rotina com while que certamente será mais rápida no caso de Paradox/BDE.


Responder

Gostei + 0

18/03/2005

Anjinho Loiro

Como devo montar esse ´Do While´???

Bjs.



Obs>:
O form é assim

Venct. Cliente Valor Situação
20/03/05 NYVEA BEATRIZ R$ 25,00 Em dias
15/03/05 GUILHERME MOREIRA R$ 35,00 Em atraso

A situação é o que eu quero que mude automaticamente.


Responder

Gostei + 0

18/03/2005

Andremuller

Se o form é só aquilo então você não deveria armazenar esse estado no banco.
Calcula na hora porque ele vai estar todo dia desatualizado.
Crie um campo calculado como um colega já sugeriu e verifique se está atrazado.


Responder

Gostei + 0

18/03/2005

Joaoshi

Colega,

Talvez o mais correto seria criar um campo calculado (como dito antes), já que esta informação mudaria a cada dia.

Adicionar os fields na TTable.
Criar o campo calculado

No onCalcfieds da Tabela:

if Data.Tabela >= Date then
Situacao.Text := ´Em Dias´
else
Situacao.Text := ´Em Atraso´;

Espero ter ajudado.


Responder

Gostei + 0

31/03/2005

Anjinho Loiro

Sobe[/url]


Responder

Gostei + 0

31/03/2005

Pro-luck

Coloque no seu form um botão e passe para ele o seguinte código:


dm_.QrySuaQuery.First;
While not dm_.QrySuaQuery.EOF do
begin
if dm_.QrySuaQueryVencimento.Value < StrToDateTime(DateToStr(Now)) then
begin
dm_.QrySuaQuery.Edit;
dm_.QrySuaQuerySituacao.Text := ´Pendências´;
dm_.QrySuaQuery.Post;
dm_.QrySuaQuery.Next;
end
else
begin
dm_.QrySuaQuery.Edit;
dm_.QrySuaQuerySituacao.Text := ´Atualizado´;
dm_.QrySuaQuery.Post;
dm_.QrySuaQuery.Next;
end;
end;

Assim, no ínicio do expediente da empresa, clica-se uma vez sobre o botão ele faz a atualização que servirá até o dia seguinte...

Espero que te sirva e qualquer coisa manda um e-mail...


Beijos...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar