Fórum Recalcular campo especifico baseado em outro campo em tabela #369422
27/03/2009
0
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
Curtir tópico
+ 0Posts
29/03/2009
Rudá
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
30/03/2009
Dastyler
Tem algum comando semelhante ao TOP para o Paradox?
Gostei + 0
30/03/2009
Rudá
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
Clique aqui para fazer login e interagir na Comunidade :)