Autor Tópico: Adicionar linha na grid[RESOLVIDO]  (Lida 569 vezes)

Junior Goes

  • Novato
  • *
  • Mensagens: 16
    • Email
Adicionar linha na grid[RESOLVIDO]
« Online: Setembro 29, 2015, 11:20:16 am »
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.
« Última modificação: Outubro 04, 2015, 12:05:46 pm por Junior Goes »

Willian Fernando

  • Expert
  • *****
  • Mensagens: 1148
  • .....
    • Email
Re:Adicionar linha na grid
« Responder #1 Online: Setembro 29, 2015, 02:55:52 pm »
vai ter que fazer isso no select....

Junior Goes

  • Novato
  • *
  • Mensagens: 16
    • Email
Re:Adicionar linha na grid
« Responder #2 Online: Setembro 29, 2015, 03:23:05 pm »
vou tentar aqui wiliam e te retorno

Junior Goes

  • Novato
  • *
  • Mensagens: 16
    • Email
Re:Adicionar linha na grid
« Responder #3 Online: Setembro 29, 2015, 05:56:56 pm »
William, você fala em colocar no mesmo comando SELECT usando JOIN é isso?

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:Adicionar linha na grid
« Responder #4 Online: Setembro 30, 2015, 11:19:39 am »
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

Junior Goes

  • Novato
  • *
  • Mensagens: 16
    • Email
Re:Adicionar linha na grid
« Responder #5 Online: Setembro 30, 2015, 02:27:51 pm »
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.

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:Adicionar linha na grid
« Responder #6 Online: Setembro 30, 2015, 04:36:57 pm »
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};
}

Junior Goes

  • Novato
  • *
  • Mensagens: 16
    • Email
Re:Adicionar linha na grid
« Responder #7 Online: Outubro 01, 2015, 07:15:24 am »
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.

Junior Goes

  • Novato
  • *
  • Mensagens: 16
    • Email
Re:Adicionar linha na grid
« Responder #8 Online: Outubro 04, 2015, 12:03:57 pm »
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.
Código: [Selecionar]
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')
« Última modificação: Outubro 04, 2015, 12:06:37 pm por Junior Goes »