Fórum Distribuir dados de uma Query num DBgrid #530498

02/09/2015

0

Tenho um resultado que aparece num DB que vem daqui:

With Dm.ADOCompras do
begin
SQL.Clear;
SQL.Add('with CTE_Sum as ( SELECT PRODUTO, sum(QUANTIDADE) as Quantidade ');
SQL.Add('from ITENS_PED_ORCAMENTO where DATA >= :Data1 and DATA <= :Data2 ');
SQL.Add(' group by PRODUTO ),');
SQL.Add('CTE_RN as ( SELECT PRODUTO, Quantidade, ROW_NUMBER() OVER(ORDER BY produto DESC) as RN ');
SQL.Add('FROM CTE_Sum ) select ROW_NUMBER() OVER (ORDER BY i.referencia) AS Sequencia, ');
SQL.Add('I.ESTOQUE_ID, I.REFERENCIA, I.DESCRICAO, I.MARCA_ID, I.FORNE_ID, I.ULT_COMPRA, ');
SQL.Add('I.ATIVO, t.quantidade, E.Estoque_Calculado FROM ESTOQUE I INNER JOIN ESTOQUE_ATUAL E ');
SQL.Add('ON (I.ESTOQUE_ID = E.ESTOQUE_ID) LEFT JOIN CTE_RN T ON t.PRODUTO = I.ESTOQUE_ID ');
SQL.Add('WHERE I.ATIVO = ' + QuotedStr('Sim'));

if ComboboxFornecedor.Text <> ' ' then
SQL.Add(' AND I.FORNE_ID = ' + QuotedStr(ComboboxFornecedor.Text));

if ComboboxMarca.Text <> ' ' then
SQL.Add(' AND i.MARCA_id = ' + QuotedStr(ComboboxMarca.Text));


Parameters.ParamByName('Data2').Value := Now;

Case ComboBox3.ItemIndex Of
0:
Parameters.ParamByName('Data1').Value := Now - 30;
1:
Parameters.ParamByName('Data1').Value := Now - 60;
2:
Parameters.ParamByName('Data1').Value := Now - 90;
3:
Parameters.ParamByName('Data1').Value := Now - 120;
4:
Parameters.ParamByName('Data1').Value := Now - 150;
5:
Parameters.ParamByName('Data1').Value := Now - 180;
end;

open;
end;

end;

São pegos os valores de 3 combobox, ele tá rodando perfeitamente. quando são selecionados o fornecedor, a marca e tempo que vem dos intervalos de datas ele mostra tudo na coluna QUANTIDADE( tudo o que saiu em quantidades de acordo com o período últimos 30 dias, últimos 60 até chegar nos 180 dias).

O problema é distribuir nas seguintes condições de datas para as colunas no DB grid:

1º Quando for selecionado o período Últimos 30 dias - aparecer as quantidades na coluna Saídas em 30 dias. (desativar as colunas Saídas em 60, 90, 120,150 e 180 dias)

2º Quando for selecionado o período Últimos 60 dias- aparecer as quantidades na coluna Saídas em 30 dias(o que saiu ) e na coluna saídas em 60 dias( as saídas nos 60 dias diminuindo as saídas de 30)

3º E por ai até chegar nos 180 dias (ativando conforme a seleção do tempo e distribuindo as saídas em cada coluna
Hilda Moraes

Hilda Moraes

Responder

Posts

02/09/2015

Mateus Ribeiro

Boa tarde! vc pode ter esse controle dando um VISIBLE:= FALSE nas colunas


ClientDataSet1.Fields[0].Visible:= False;
// Ou
ClientDataSet1.FieldByName('Nome Coluna').Visible: = False; 


Só aplicar de a acordo com suas regras.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar