Postada em 10/02/2009 14:18 hs
Ai pessoal, consegui escrever um sql, e achei muito bom e resolvi compartilhar com todos do forum, espero q possa ajudar alguem q precise agilizar o tempo de resposta de informações.
O código é o seguinte: sql = "SELECT P.PRODUTO, P.ESTOQUE, P.VALOR, P.VALORCOMPRA, P.GRUPO, SUM(D.ENTRADA) AS SOMENT, SUM (D.SAIDA) AS SOMSAI, (SOMSAI * p.valor) as VlrProdSai, " sql = sql & " iif(p.valorcompra = 0, (0 * SOMSAI), ((P.VALOR - P.VALORCOMPRA) * SOMSAI)) as LUCROPER, " sql = sql & "D.CODIGOPRODUTO FROM PRODUTO AS P INNER JOIN DETESTOQUE AS D " sql = sql & "ON D.CODIGOPRODUTO = P.CODIGO " sql = sql & "WHERE D.DATA BETWEEN #" & Format(FrmParSaidaPorPeriodo.Ctxt(0).Text, "mm/dd/yyyy") & "# " sql = sql & "AND #" & Format(FrmParSaidaPorPeriodo.Ctxt(1).Text, "mm/dd/yyyy") & "#" If FrmParSaidaPorPeriodo.CmbGrupo.Text = Empty Then Else sql = sql & " and p.grupo like '" & FrmParSaidaPorPeriodo.CmbGrupo.Text & "' " End If sql = sql & "GROUP BY P.PRODUTO, D.CODIGOPRODUTO, P.ESTOQUE, P.VALOR, p.valorcompra, P.GRUPO" sql = sql & " ORDER BY P.GRUPO"
Agora irei explicar o q é cada linha sql = "SELECT P.PRODUTO, P.ESTOQUE, P.VALOR, P.VALORCOMPRA, P.GRUPO, SUM(D.ENTRADA) AS SOMENT, SUM (D.SAIDA) AS SOMSAI, (SOMSAI * p.valor) as VlrProdSai, " **aqui eu fiz o sql denominei os campos da tabela produtos e fiz a soma dos campos da tabela detestoque que precisava somar, e ainda fiz um calculo do total de saida * o valor de compra (obs ajuda do treze e da ivonne) sql = sql & " iif(p.valorcompra = 0, (0 * SOMSAI), ((P.VALOR - P.VALORCOMPRA) * SOMSAI)) as LUCROPER, " **aqui eu implementei um iif pra fazer uma outra verificação! q é a seguinte se por acaso o valorcompra estiver zerado ele faz aquele calculo pra continuar zerado, caso contrario ele faz o calculo q eu pedi e denomina o nome do campo como lucroper (lucro do periodo) sql = sql & "D.CODIGOPRODUTO FROM PRODUTO AS P INNER JOIN DETESTOQUE AS D " aqui eu faço o from e o inner join com das tabelas sql = sql & "ON D.CODIGOPRODUTO = P.CODIGO " sql = sql & "WHERE D.DATA BETWEEN #" & Format(FrmParSaidaPorPeriodo.Ctxt(0).Text, "mm/dd/yyyy") & "# " ** a clausula where sql = sql & "AND #" & Format(FrmParSaidaPorPeriodo.Ctxt(1).Text, "mm/dd/yyyy") & "#" If FrmParSaidaPorPeriodo.CmbGrupo.Text = Empty Then Else sql = sql & " and p.grupo like '" & FrmParSaidaPorPeriodo.CmbGrupo.Text & "' " End If e aqui eu coloquei um condição mas a condição agora não esta no sql e sim na concatenação do sql, se o usuario tiver selecionado o grupo ele filtra senão traz todos grupos ordenados por grupo sql = sql & "GROUP BY P.PRODUTO, D.CODIGOPRODUTO, P.ESTOQUE, P.VALOR, p.valorcompra, P.GRUPO" sql = sql & " ORDER BY P.GRUPO" é basicamente isto! Espero q vcs possam aproveitar tambem o codigo!
Abraço a todos
|