Exibir no total diferença de valores entre quebras

Pessoa,

Estou precisando da ajuda de vocês.

Tenho uma consulta com várias quebras. Um delas, separa as contas que são a crédito das contas que são a débito.

Nessas quebras, eu exibo um subtotal. No total geral, eu preciso exibir a diferença de contasCredito - contasDebito.

Tentei fazer o seguinte:

No OnRecord:
Somei todas as contas a crédito e aloquei em [global_credito].
Somei todas as contas a débito e aloquei em [global_debito].


No onGroupByAll

{fin_valor_sum} = [global_credito] - [global_debito];


Mas me parece que o agrupamento acontece antes mesmo do onRecord, pois na primeira consulta realizada, o valor na totalização vem = 0 e na segunda consulta, vem o resultado da primeira consulta. E assim por diante.

Peço ajuda pra saber como fazer.

Obrigado pessoal…

Variáveis de Totalização
O Scriptcase disponibiliza todas as variáveis de totalização no escopo da grid.

Supondo uma aplicação que tenha dois níveis de quebra (estado e cidade) e que totaliza dois campos (parcela e saldo) , podemos ter acesso aos totais, no evento “onRecord”, da seguinte forma:

Variáveis
Descrição
{count_ger} Contém a quantidade total dos registros.
{sum_parcela} Contém o somatório geral do campo “parcela”.
{sum_saldo} Contém o somatório geral do campo “saldo”.
{count_estado} Contém a quantidade total dos registros, da quebra de “estado” que estiver sendo processada.
{sum_estado_parcela} Contém o somatório do campo “parcela”, da quebra de “estado” que estiver sendo processada.
{count_cidade} Contém a quantidade total dos registros, da quebra de “cidade” que estiver sendo processada.
{sum_cidade_parcela} Contém o somatório do campo “parcela”, da quebra de “cidade” que estiver sendo processada.
{sum_cidade_saldo} Contém o somatório do campo “saldo”, da quebra de “cidade” que estiver sendo processada.
{sum_estado_saldo} Contém o somatório do campo “saldo”, da quebra de “estado” que estiver sendo processada;.

Ex. 1: Em um aplicação com qubra pelo estado e cidade que totaliza um campo valor, e nas quebras usando totais, e possivel exibir a media ao inves do valor, como no exemplo:

{sum_quebra_valor} = {sum_quebra_valor} / {count_quebra};

Escopo da Macro

Consulta
onFooter
onGroupBy
OnGroupByAll
onHeader
onRecord

Variáveis de Totalizacao (quebras)
Durante o processamento das quebras, o Scriptcase disponibiliza todas as variáveis de totalização, a nível geral e a nível da quebra que estiver sendo processada.

Supondo uma aplicação que tenha dois níveis de quebra (estado e cidade) e que totaliza dois campos (parcela e saldo).

Considerando que as fórmulas, definidas para serem processadas no evenro “onGroupBy” estarão atuando para os vários níveis de quebra, as variáveis especiais de totalização, neste escopo, são referenciadas substituindo-se o nome da quebra pela palavra chave “quebra”, ou seja:

Variáveis
Descrição
{count_ger} Contém a quantidade total dos registros.
{sum_parcela} Contém o somatório geral do campo “parcela”.
{sum_saldo} Contém o somatório geral do campo “saldo”.
{count_quebra} Contém a quantidade total dos registros, da quebra que estiver sendo processada.
{sum_quebra_parcela} Contém o somatório do campo “parcela”, da quebra que estiver sendo processada.
{sum_quebra_saldo} Contém o somatório do campo “saldo”, da quebra que estiver sendo processada.

Ex. 1: Em uma aplicação que tenha quebras por estado e cidade e que totalize um campo de saldo, e nos totais das quebras, desejamos exibir a média em substituição ao saldo.

{sum_quebra_saldo} = {sum_quebra_saldo} / {count_quebra};

Escopo da Macro

Consulta
onGroupBy
OnGroupByAll

O problema na verdade não é esse.

O fato é que dependendo do movimento, (crédito ou debito) eu tenho que somar os valores de forma separada.
Depois deles somados (Acredito que seria ideal no OnRecord) eu faria a diferença entre eles para totalizar.

E eu não posso apenas inverter o valor dos débitos para negativos, multiplicando por -1 na query porque eu preciso dar subtotal em cada quebra de movimento.

Entendeu?

eu tambem tenho uma consulta onde o resultado tb nao podem ser multiplicados por -1 eu fiz esse formula e deu certo
organizando a ordem do maior pelo menor

if ({credito} >= {debito})
{
{QTD}= {credito} - {debito};
}

elseif({credito} < {debito})
{
{QTD}={debito}- {credito};

}

Dai é so colocar os restantes das formulas conforme a nescessidade

Espero te ajudado

Att Arquimedes

Olá Arquimedes,

O problema é que eu tenho que somar no onRecord conforme eu expliquei no inicio do post.

Vamos novamente:

Na minha tabela eu tenho um campo que define se a conta é crédito ou débito (tipoMovimento)
Toda conta tem um valor positivo, sendo diferenciada apenas por esse tipo de movimento, ou seja, não entra valores negativos na tabela.

então eu faço uma totalização do campo {valor} na quebra de tipoMovimento

Em uma situação hipotética de ter um total de 300.000,00 na quebra de crédito e 200.000,00 na quebra de débito, eu tenho que apresentar um total Geral de 100.000,00 e não de 500.000,00 conforme aparece hoje.

Para fazer isso, eu uso um codigo no evento onRecord que identifica se o {tipoMovimento} é crédito ou débito e de acordo com cada resultado eu somo o valor em uma variável global. [global_credtio] e [global_debito].

no evento onGroupByAll eu faço o calculo dessas globais atribuindo o valor ao total geral. Assim:

{sum_fin_valor} = [global_credtio] - [global_debito].

O problema é que quando executo isto, a impressão que dá é de que o evento onGroupByAll acontece antes do onRecord, pois na primeira execução da consulta, o resultado vem vazio, na segunda, o resultado vem de acordo com o filtro da primeira, na terceira, de acordo com o filtro da segunda e assim sucessivamente.