[firebase-br] Dúvida para filtrar registros

Alysson Gonçalves de Azevedo agalysson em gmail.com
Qua Fev 26 15:56:20 -03 2014


Eu faria os ifs na aplicação ao invés de mandar o servidor resolver isso.
sql := 'blablabla';
if (checkbox.text == 'aberto')
  sql := sql + "where (R.CANCELADO_SN = 'N' ) AND (  R.PAGA_SN = 'N' )"
else if (checkbox.text == 'pago')
  sql := sql + "where (R.CANCELADO_SN = 'N' ) AND (  R.PAGA_SN = 'S' )"
else if (checkbox.text == 'cancelado')
  sql := sql + "where (R.CANCELADO_SN = 's' )"

com isso, o select final fica bem mais simples no final, e economiza
processamento no serviço.



Alysson Gonçalves de Azevedo

"Anarcho-syndicalism is a way of preserving freedom." - Monty Python


Em 26 de fevereiro de 2014 15:05, Junior Monteiro <
junior.lucas.nany em gmail.com> escreveu:

> Boa tarde eu faco assim montando where run time na aplicacao exemplo se
> item índex 0 então minha var slqwhere recebe and situação  =A e assim por
> diante ai fecho fecho a query concateno slqpadra que também salvo na
> abertura da query  ai fica
> CDs.close
> Query.SQL.text = sqlpadrap + sqlwhere
> Cds.open
>
> Nao sei se fiquei claro ..
> Att
> Em 26/02/2014 13:58, "Rafael Voltani" <rafael.volts em turbocode.com.br>
> escreveu:
>
> > Boa tarde lista.
> > O item pode estar em 3 status (aberto, pago ou cancelado), que verifico
> da
> > seguinte forma:
> >   - se PAGO = 'N'  e CANCELADO = 'N entao STATUS = 'Aberto'  - se PAGO =
> > 'S' e CANCELADO = 'N' entao STATUS = 'Pago'  - se CANCELADO = 'S' entao
> > STATUS = 'Cancelado'
> > Por não conter o campo STATUS na tabela, tenho de verificar dessa forma.
> > Para exibir no grid utilizei CASE, funciona perfeitamente.
> > Me pediram para trocar o modo de filtrar. Ao invés de usar CheckBox e
> > exibir mais os itens selecionados, utilizar um ComboBox, para exibir
> apenas
> > o selecionado. Tudo por questão de BIOS... hehehe...
> > No ComboBox terá as opções: - Todos / Abertos / Pagos / Cancelados
> > Para o usuário escolher apenas uma delas.
> > Gostaria de uma opinião de vocês de qual melhor forma para resolver isso.
> > Criar o campo STATUS na tabela e TRIGGER que faça a verificação acima e
> > atualizar o campo??
> >
> > Como montar no WHERE essa verificação ??
> > tentei usar case, mas não foi...
> >   AND CASE        WHEN ( :FILTRO = 'A' ) THEN ( (R.CANCELADO_SN = 'N' )
> > AND (  R.PAGA_SN = 'N' ) )        WHEN ( :FILTRO = 'P' ) THEN ( (
> > R.CANCELADO_SN = 'N' ) AND R.PAGA_SN = 'S' )        WHEN ( :FILTRO = 'C'
> )
> > THEN ( R.CANCELADO_SN = 'S' )      END
> > Espero ter conseguido expor a duvida.
> > Grato pela atenção.
> > Rafael Voltani                           Analista Desenvolvedor de
> > SoftwaresDelphi + Firebird
> >               Se for encaminhar esta mensagem para outros, favor retirar
> o
> > meu e-mail do cabeçalho e não esqueça de colocar TODOS os DESTINATÁRIOS
> em
> > CÓPIA OCULTA (cco). Mantenha a privacidade dos e-mails e combata os
> vírus.
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista