Olá amigos, sou novo no SC, estou desenvolvendo um sistema para controle financeiro, estou com um problema em uma grid, acho que não é bem um problema, apenas não sei fazer ainda e não encontrei no fórum.
É o seguinte, eu tenho uma grid onde mostro o movimento do mês (Entradas e saídas do mês) e no final da grid com a TOTALIZAÇÃO do SC mostro o saldo do mês, até ai tudo blz e funcionando perfeito. O problema é que quero adicionar abaixo do saldo do Mês uma linha com o saldo do “Mês anterior” e depois outra linha abaixo com o Saldo Total.
Obs:Os códigos PHP que acessa o banco de dados para pegar o valor do saldo do mês anterior eu já tenho pq já utilizava em outro sistema fora do SC, é pq estou migrando meu projeto para o SC, ou seja, estou precisando saber apenas como colocar a linha abaixo do subtotal e o campo e em qual evento chamo os códigos php,
Quem puder ajudar agradeço.
vai ter que fazer isso no select…
vou tentar aqui wiliam e te retorno
William, você fala em colocar no mesmo comando SELECT usando JOIN é isso?
Já montei diversos relatórios dessa forma, para isso você deve usar union all
Tendo em vista que o filtro não vai funcionar corretamente com union all, se for o caso monte um storage procedure para executar pelo SC e passe os campos como parâmetro para filtrar
Olá Rodrigo Goulart , desculpe a ignorância mas como faço para usar o union all? ainda estou engatinhando no SC, kk, pode me dar um exemplo ou um link falando sobre isso?
Obrigado.
Exemplo
select nome, descricao, preco, taxa from site_planos where nome like ‘a%’
union all
(
select ‘zzz’,‘zzz’,0,0
)
order by nome
obs:
- os nomes das colunas serão sempre da primeira query
- order by só funciona após os unios
Para implementar faz por storage procedure passando o where como parâmetro para não dar erro de query
** para totalizar recomendo usar programação->atributos, crie um novo atributo
** no onRecord para saber qual linha deve ser acumulada faça por if, ex:
if({nome}==‘zzz’)
{
{total} = [atributo_criado];
[atributo_criado] = 0;//ajuste para não duplicar o valor
}
else
{
{total} = {preço};
[atributo_criado] += {preco};
}
Rodrigo, vou tentar fazer dessa maneira, logo deixo o feedback.
Rodrigo Goulart, consegui adicionar as linhas com o seu exemplo, demorei um pouco pq não sabia sobre union all, mas consegui depois de várias tentativas com o código abaixo. Obrigado a todos pela ajuda.
SELECT
p.pc_plano,
m.mov_data_lan,
m.mov_historico,
m.mov_entrada,
m.mov_saida
FROM
mov_caixa m , plano_conta p
where
p.pc_id = m.mov_pc_id and
mov_data_lan between '2015-09-01' and '2015-09-31'
and
(mov_entrada or mov_saida!='0')
union all
select '','','Saldo do Mês', sum(mov_entrada), sum(mov_saida) from mov_caixa where (mov_data_lan between '2015-09-01' and '2015-09-31')
union all
select '','','Saldo do Anterior', sum(mov_entrada), sum(mov_saida) from mov_caixa where (mov_data_lan < '2015-09-01')
union all
select '','','Saldo Total', sum(mov_entrada), sum(mov_saida) from mov_caixa where (mov_data_lan < '2015-09-31')