Recalcular campo especifico baseado em outro campo em tabela
Olá a rodos!!
Sou programador e estou iniciando no Delphi. Preciso fazer um programa no mesmo que recalcule um valor de acordo com o periodo e valor encontrados em outros 2 campos de uma mesma tabela, por exemplo
data Entrada Saida Valor Unitario Preço de Custo
26/03/2009 100 (null) R$10,00 R$10,00
26/03/2009 (null) 10 R$20,00 (Null)
27/03/2009 50 (null) R$5,00 R$5,00
27/03/2009 (null) 10 R$20,00 (Null)
Segundo a tabela acima, preciso que seja atualizados os preços de custo aonde teve saida, mas ele deve pegar sempre o atualizado. Isso deve ser feito na base de dados em diversos itens e sempre pegando da entrada anterior (no exemplo aciuma, dia 26/03 o item vendido teria o custo de R$10,00 e no dia 27/03 teria o custo de R$5,00).
Tentei via SQL mas não deu certo. Algume tem alguma sugestão de como fazer para que eu possa solucionar o caso?
Obrigado a todos!
Sou programador e estou iniciando no Delphi. Preciso fazer um programa no mesmo que recalcule um valor de acordo com o periodo e valor encontrados em outros 2 campos de uma mesma tabela, por exemplo
data Entrada Saida Valor Unitario Preço de Custo
26/03/2009 100 (null) R$10,00 R$10,00
26/03/2009 (null) 10 R$20,00 (Null)
27/03/2009 50 (null) R$5,00 R$5,00
27/03/2009 (null) 10 R$20,00 (Null)
Segundo a tabela acima, preciso que seja atualizados os preços de custo aonde teve saida, mas ele deve pegar sempre o atualizado. Isso deve ser feito na base de dados em diversos itens e sempre pegando da entrada anterior (no exemplo aciuma, dia 26/03 o item vendido teria o custo de R$10,00 e no dia 27/03 teria o custo de R$5,00).
Tentei via SQL mas não deu certo. Algume tem alguma sugestão de como fazer para que eu possa solucionar o caso?
Obrigado a todos!
Dastyler
Curtidas 0
Respostas
Rudá
27/03/2009
UPDATE Teste SET Custo = (SELECT TOP 1 T.Custo FROM Teste T WHERE Saida IS NULL and Custo IS NOT NULL and T.Data <= Teste.Data ORDER BY T.Data DESC) WHERE Saida IS NOT NULL and Custo IS NULL
Fiz com o SQL Server, no MySQL já não vai funcionar (TOP 1).
Se for MySQL me fale que eu tento adaptar.
GOSTEI 0
Dastyler
27/03/2009
Só tem um detalhe que esqueci de mencionar. O banco de dados é PARADOX, pois é um sistema antigo aqui da empresa que precisa fazer a manutenção, e não podemos migra os dados para uma tecnologia mais recente, pois tem que ser rodado no cliente.
Tem algum comando semelhante ao TOP para o Paradox?
Tem algum comando semelhante ao TOP para o Paradox?
GOSTEI 0
Rudá
27/03/2009
Pelo que eu vi em outros sites o paradox não tem Union Group By nada dessas coisas.
Acho que vc vai ter que fazer pelo código.
Seleciona todos que tem que atualizar
Depois vai em um loop
while Not QueryLista.Eof do
Dentro do loop vc pesquisa no segundo query o custo depois da um update.
Acho que vc vai ter que fazer pelo código.
Seleciona todos que tem que atualizar
SELECT * FROM Teste WHERE Saida IS NOT NULL and Custo IS NULL
Depois vai em um loop
while Not QueryLista.Eof do
Dentro do loop vc pesquisa no segundo query o custo depois da um update.
SELECT Custo FROM Teste WHERE Saida IS NULL and Custo IS NOT NULL and Data <= :Data ORDER BY Data DESC
GOSTEI 0