Fórum Como calcular esta SQL #265468
15/01/2005
0
Olá!
Tudo bem?
Dentro da propriedade SQL do componente IBQuery coloquei este comando
Deixei os Fields em branco.
Fiz esta SQL
O campo VLR_PAGO não pode ser somente somado. Existe um outro campo que é LIQ_EST que diz que o movimento foi uma liquidação ou um estorno, portanto dependendo do valor deste campo eu vou ter de somar ou subtrair para achar o valor pago.
Tentei fazer um campo calculado, mas dá erro no SQL.
Melhor explicando, eu tenho uma tabela com os títulos e outra com os movimentos. Na tabela com os títulos eu pego os dados dos títulos e na tabela de movimento eu somo as parcelas pagas ou subtraio as parcelas que foram estornadas.
Neste caso ainda terá mais alguns problemas.
Teria que mostrar os títulos pagos e os títulos que estão em aberto testando o resultado do SUM de uma tabela com o valor do título que está em outra tabela.
Fazer o cálculo de dias em atraso com o resultado de MAX de uma tabela com a data de vencimento que está em outra tabela.
Também com o resultado de MAX mostrar os títulos que já foram pagos e os títulos que estão em aberto.
Usando Delphi 7 Interbase 6
Será que alguém poderia me dizer como resolver algum destes problemas?
Desde já agradeço a ajuda recebida.
Tudo bem?
Dentro da propriedade SQL do componente IBQuery coloquei este comando
select a.*, b.* from cad_recebimento a, cad_recebimento_mov b
Deixei os Fields em branco.
Fiz esta SQL
with IBQuery1 do begin Close; SQL.Clear; SQL.Add(´select A.CODIGO, A.TITULO, A.PARCELA, A.DOCUMENTO, A.SERIE, A.DT_EMIS, A.DT_VCTO, A.VLR_TIT,´); SQL.Add(´SUM(B.VLR_PAGO) PAGO,´); SQL.Add(´MAX(B.DT_MOVIMENTO) MOVIMENTO´); SQL.Add(´From CAD_RECEBIMENTO A´); SQL.Add(´Left Join CAD_RECEBIMENTO_MOV B´); SQL.Add(´On(A.CODIGO = B.CODIGO and A.TITULO = B.TITULO and A.PARCELA = B.PARCELA)´); SQL.Add(´GROUP BY A.CODIGO, A.TITULO, A.PARCELA, A.DOCUMENTO, A.SERIE, A.DT_EMIS, A.DT_VCTO, A.VLR_TIT´); Open; end;
O campo VLR_PAGO não pode ser somente somado. Existe um outro campo que é LIQ_EST que diz que o movimento foi uma liquidação ou um estorno, portanto dependendo do valor deste campo eu vou ter de somar ou subtrair para achar o valor pago.
Tentei fazer um campo calculado, mas dá erro no SQL.
if ibquery1LIQ_EST.Value = ´Estorno´ then begin IBQuery1TOT_PAGO.Value:= IBQuery1TOT_PAGO.Value - ibquery1VLR_PAGO.Value; end; if ibquery1LIQ_EST.Value = ´Liquidação´ then begin IBQuery1TOT_PAGO.Value:= IBQuery1TOT_PAGO.Value + ibquery1VLR_PAGO.Value; end;
Melhor explicando, eu tenho uma tabela com os títulos e outra com os movimentos. Na tabela com os títulos eu pego os dados dos títulos e na tabela de movimento eu somo as parcelas pagas ou subtraio as parcelas que foram estornadas.
Neste caso ainda terá mais alguns problemas.
Teria que mostrar os títulos pagos e os títulos que estão em aberto testando o resultado do SUM de uma tabela com o valor do título que está em outra tabela.
Fazer o cálculo de dias em atraso com o resultado de MAX de uma tabela com a data de vencimento que está em outra tabela.
Também com o resultado de MAX mostrar os títulos que já foram pagos e os títulos que estão em aberto.
Usando Delphi 7 Interbase 6
Será que alguém poderia me dizer como resolver algum destes problemas?
Desde já agradeço a ajuda recebida.
Joao_schroeder
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)