[RESOLVIDO] Somar valores dentro da grid

Olá pessoal, preciso da ajuda de vocês pois estou tentando aqui e ainda não consegui.

Estou fazendo um pequeno sistema para calcular o estoque, preço de compra, preço de custo, última compra, valor de venda por filial e margem de lucro por filial e lista de preço (Promoção, Normal e Atacado).
Já fiz quase tudo exceto por um probleminha que relato abaixo.

Tenho uma tabela no MySQL (outro sistema) que se chama Stock onde tenho os estoques (Sério? Rrsrs) de cada produto por filial. Abaixo vou dar um exemplo de um produto:

ArtCode StockDepo Qty Reserved
17737 DC6 624 \N
17737 CAMBAB559 0 \N
17737 DEPTRANAC 0 \N
17737 01AUTOPJC 15 0
17737 03AUTOBVIS 12 \N
17737 CAMBBY909 0 \N
17737 02AUTOCDE 12 \N
17737 07AUTOBADO 12 \N

Minha pergunto acredito que é simples pra vocês, porque eu bati cabeça até agora e não consegui fazer nada que preste. :frowning:
Lá vai, como faço para que na grid apareça apenas uma vez o código e some os estoques (Qty + Reserved) de cada filial em sua respectiva linha.

Consegui criar um campo Stock que recebe de um evento onRecord ({Stock}={sum_Qty}+{sum_Reserved}) que está calculando certo, o problema é que ele só calcula certo quando mando buscar um produto pelo código, não faz essa contagem certa quando abro a grid com a busca geral.

Enfim, acho que vocês entenderam minha dúvida, se puderem me ajudar agradeço. Obrigado.

Atenciosamente,
David Alberto

Existem várias maneiras de resolver, seguem 2…

1º da maneira que você mencionou porém habilitar quebra estática por {ArtCode} e um totalizador por {Stock}

2º mudar seu select com group by
ex.:
select ArtCode, sum({sum_Qty}+{sum_Reserved}) as Stock
from Stock
group by ArtCode

Obrigado pela resposta Rodrigo Goulart.

Dessa segunda forma que você mencionou será feito select do MySQL?

Atenciosamente,
David Alberto

Isso mesmo, ajuste de acordo com sua query e teste antes de mudar no sql.

Não consegui ainda Rodrigo. Vou colocar mais detalhes abaixo para se puder me ajudar mais. :smiley:

Banco:

Field Type Collation Null Key Default


internalId int(11) (NULL) NO PRI (NULL)
attachFlag tinyint(1) (NULL) YES (NULL)
syncVersion int(11) (NULL) YES (NULL)
ArtCode varchar(20) latin1_general_cs YES MUL (NULL)
StockDepo varchar(20) latin1_general_cs YES (NULL)
StockPos varchar(10) latin1_general_cs YES (NULL)
Qty double (NULL) YES (NULL)
Reserved double (NULL) YES (NULL)
SerialNr varchar(30) latin1_general_cs YES (NULL)

Visualização do programa quando abre:

Visualização detalhada de um ítem:

Veja que quando abro o programa ele não faz a totalização do campo Stock, porém, quando faço a busca por um ítem específico ele faz a totalização certinho. Agora, não sei o porque disso…

Abaixo vou deixar os Eventos que criei, pode ser que fiz alguma coisa errada aí…

onScriptInit:

sc_field_display({Reserved},off);
sc_field_display({Qty},off);

onRecord

{Stock}={Qty_sum}+{Reserved_sum};

//Margem sobre Lista de Preço MINPJC
{MargemMINORISTA}=(({PriceVentMINPJC} - {ItemCost})*100)/ {ItemCost};
	
//Margem sobre Lista de Preço MAYORISTA
{MargemMAYORISTA}=(({PriceVentMAYORISTA} - {ItemCost})*100)/ {ItemCost};
	
//Margem sobre Lista de Preço PROMOCIÓN
{MargemPROMOCION}=(({PriceVentPROMOCION} - {ItemCost})*100)/ {ItemCost};

//Margem sobre Lista de Preço MATRIZ
{MargemMATRIZ}=(({PriceVentMATRIZ} - {ItemCost})*100)/ {ItemCost};

Lookup do campo Qty:

select ArtCode, sum({sum_Qty}+{sum_Reserved}) as Qty
from Stock
where ArtCode = ‘{ArtCode}’
group by ArtCode

Lookup do campo Reserved:

Lookup do campo Stock:

SELECT ArtCode, Qty, Reserved, sum({sum_Qty}+{sum_Reserved}) as Stock
FROM Stock
GROUP BY ArtCode

Além dessas configurações eu marquei a opção Não Repetir Valor para Sim (Não repetir o valor do campo caso este seja igual ao do registro anterior.) em quase todos os campos para ver se essas linhas em branco abaixo somem.

Ainda criei um quebra pelo campo ArtCode.

Enfim, acho que conseguiram ver meu problema. Se puderem me ajudar vocês que tem mais familiaridade com a ferramenta agradeço.

Atenciosamente,
David Alberto

1 Curtida

O que deve estar acontecendo com sua consulta é que ele traz todas as linhas, porém deve estar habilitado a opção de não repetir valor. Para a linha de baixo ficar em branco quando for do mesmo valor.
Na verdade a query que sugeri, com group by, deve ser a principal e não lookup.
Para que não tenha erro, termine de montar essa query que sugeri com group by, faça um select de teste e após estar ok faça uma aplicação nova com essa query e verifique, creio que vai dar certo.

Rodrigo, muito obrigado pela força meu irmão. Deu certo aqui! :smiley:

Fiz meu query dessa forma abaixo e deu certo:

SELECT ArtCode, StockDepo, SUM(Qty)+SUM(Reserved) AS StockTotal
FROM Stock
GROUP BY ArtCode

O problema é que eu estava querendo fazer as alterações na Query depois de criar o primeiro select normal. Executei o select antes de criar a aplicação com o código acima e deu tudo certo. O restante do código só copiei do outro programa que estava fazendo e deu certo. :smiley:

Mais uma vez muito obrigado Rodrigo. Como não posso te agradecer pessoalmente que Deus te abençoe muito… Abraço.

Opá que bem que deu certo. Precisar estamos aqui.
Abraços.