filtro campo calculado
Boa tarde
Fiz um select com UNION ALL funcionando legal. Os filtros estão funcionando, porem, o filtro SALDO > 0 esta dando erro. "Campo SALDO não localizado" . Alguém consegue me ajudar?
Segue código com o filtro do SALDO > 0.
query.SQL.add('SELECT CODIGO, PARTNUMBER, DESCRICAO, SUM(QTDE) AS QTDE_ENTRADA, SUM(QTDS) AS QTDE_SAIDA, SUM(QTDE) - SUM(QTDS) as SALDO FROM');
query.SQL.add('(SELECT TB_ESTOQUE_ENTRADA.CODIGO, TB_ESTOQUE_ENTRADA.PARTNUMBER, TB_ESTOQUE_ENTRADA.DESCRICAO, Sum(TB_ESTOQUE_ENTRADA.QTDE_ENTRADA) AS QTDE, 0 AS QTDS,');
query.SQL.add('TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID');
query.SQL.add('FROM TB_ESTOQUE_ENTRADA INNER JOIN TB_PRODUTOS ON TB_ESTOQUE_ENTRADA.CODIGO = TB_PRODUTOS.CODIGO');
query.SQL.add('GROUP BY TB_ESTOQUE_ENTRADA.CODIGO, TB_ESTOQUE_ENTRADA.PARTNUMBER, TB_ESTOQUE_ENTRADA.DESCRICAO, TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID');
query.SQL.add('UNION ALL');
query.SQL.add('SELECT TB_ESTOQUE_SAIDA.CODIGO, TB_ESTOQUE_SAIDA.PARTNUMBER, TB_ESTOQUE_SAIDA.DESCRICAO, 0 AS QTDE,');
query.SQL.add('Sum(TB_ESTOQUE_SAIDA.QTDEPG) AS QTDS, TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID');
query.SQL.add('FROM TB_ESTOQUE_SAIDA INNER JOIN TB_PRODUTOS ON TB_ESTOQUE_SAIDA.CODIGO = TB_PRODUTOS.CODIGO');
query.SQL.add('GROUP BY TB_ESTOQUE_SAIDA.CODIGO, TB_ESTOQUE_SAIDA.PARTNUMBER, TB_ESTOQUE_SAIDA.DESCRICAO, TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID) A');
query.SQL.add('GROUP BY CODIGO, PARTNUMBER, DESCRICAO, TPFORN, DESC_GRUPO, DESC_SUB_GRUPO');
query.SQL.add('HAVING');
if EDIT1.text <> '' then ///(*****ERROOOOOO*****)
begin
query.SQL.Add(sWhereAnd + ' SALDO > 0');
sWhereAnd := 'AND';
end;
if EDIT2.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' CODIGO = :VARCODIGO');
query.ParamByName('VARCODIGO').Value := strtoint(EDIT2.Text);
sWhereAnd := 'AND';
end;
if EDIT3.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' PARTNUMBER like :VARPN');
query.ParamByName('VARPN').Value := '%' + EDIT3.text + '%';
sWhereAnd := 'AND';
end;
if EDIT11.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' DESCRICAO like :VARDESC');
query.ParamByName('VARDESC').Value := '%' + EDIT11.text + '%';
sWhereAnd := 'AND';
end;
if COMBO_TP.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' TPFORN = :VARTPFORN');
query.ParamByName('VARTPFORN').Value := COMBO_TP.Text;
sWhereAnd := 'AND';
end;
if COMB_GRUPO.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' DESC_GRUPO = :VARGRUPO');
query.ParamByName('VARGRUPO').Value := COMB_GRUPO.Text;
sWhereAnd := 'AND';
end;
if COMBO_SUB.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' DESC_SUB_GRUPO = :VARDUBGRUPO');
query.ParamByName('VARDUBGRUPO').Value := COMBO_SUB.Text;
sWhereAnd := 'AND';
end;
END;
sWhereAnd := 'ORDER BY CODIGO DESC';
query.open;
END;
Fiz um select com UNION ALL funcionando legal. Os filtros estão funcionando, porem, o filtro SALDO > 0 esta dando erro. "Campo SALDO não localizado" . Alguém consegue me ajudar?
Segue código com o filtro do SALDO > 0.
query.SQL.add('SELECT CODIGO, PARTNUMBER, DESCRICAO, SUM(QTDE) AS QTDE_ENTRADA, SUM(QTDS) AS QTDE_SAIDA, SUM(QTDE) - SUM(QTDS) as SALDO FROM');
query.SQL.add('(SELECT TB_ESTOQUE_ENTRADA.CODIGO, TB_ESTOQUE_ENTRADA.PARTNUMBER, TB_ESTOQUE_ENTRADA.DESCRICAO, Sum(TB_ESTOQUE_ENTRADA.QTDE_ENTRADA) AS QTDE, 0 AS QTDS,');
query.SQL.add('TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID');
query.SQL.add('FROM TB_ESTOQUE_ENTRADA INNER JOIN TB_PRODUTOS ON TB_ESTOQUE_ENTRADA.CODIGO = TB_PRODUTOS.CODIGO');
query.SQL.add('GROUP BY TB_ESTOQUE_ENTRADA.CODIGO, TB_ESTOQUE_ENTRADA.PARTNUMBER, TB_ESTOQUE_ENTRADA.DESCRICAO, TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID');
query.SQL.add('UNION ALL');
query.SQL.add('SELECT TB_ESTOQUE_SAIDA.CODIGO, TB_ESTOQUE_SAIDA.PARTNUMBER, TB_ESTOQUE_SAIDA.DESCRICAO, 0 AS QTDE,');
query.SQL.add('Sum(TB_ESTOQUE_SAIDA.QTDEPG) AS QTDS, TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID');
query.SQL.add('FROM TB_ESTOQUE_SAIDA INNER JOIN TB_PRODUTOS ON TB_ESTOQUE_SAIDA.CODIGO = TB_PRODUTOS.CODIGO');
query.SQL.add('GROUP BY TB_ESTOQUE_SAIDA.CODIGO, TB_ESTOQUE_SAIDA.PARTNUMBER, TB_ESTOQUE_SAIDA.DESCRICAO, TB_PRODUTOS.TPFORN, TB_PRODUTOS.DESC_GRUPO, TB_PRODUTOS.DESC_SUB_GRUPO, TB_PRODUTOS.UNID) A');
query.SQL.add('GROUP BY CODIGO, PARTNUMBER, DESCRICAO, TPFORN, DESC_GRUPO, DESC_SUB_GRUPO');
query.SQL.add('HAVING');
if EDIT1.text <> '' then ///(*****ERROOOOOO*****)
begin
query.SQL.Add(sWhereAnd + ' SALDO > 0');
sWhereAnd := 'AND';
end;
if EDIT2.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' CODIGO = :VARCODIGO');
query.ParamByName('VARCODIGO').Value := strtoint(EDIT2.Text);
sWhereAnd := 'AND';
end;
if EDIT3.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' PARTNUMBER like :VARPN');
query.ParamByName('VARPN').Value := '%' + EDIT3.text + '%';
sWhereAnd := 'AND';
end;
if EDIT11.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' DESCRICAO like :VARDESC');
query.ParamByName('VARDESC').Value := '%' + EDIT11.text + '%';
sWhereAnd := 'AND';
end;
if COMBO_TP.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' TPFORN = :VARTPFORN');
query.ParamByName('VARTPFORN').Value := COMBO_TP.Text;
sWhereAnd := 'AND';
end;
if COMB_GRUPO.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' DESC_GRUPO = :VARGRUPO');
query.ParamByName('VARGRUPO').Value := COMB_GRUPO.Text;
sWhereAnd := 'AND';
end;
if COMBO_SUB.text <> '' then
begin
query.SQL.Add(sWhereAnd + ' DESC_SUB_GRUPO = :VARDUBGRUPO');
query.ParamByName('VARDUBGRUPO').Value := COMBO_SUB.Text;
sWhereAnd := 'AND';
end;
END;
sWhereAnd := 'ORDER BY CODIGO DESC';
query.open;
END;
Daniel Antonio
Curtidas 0