[firebase-br] Dúvida para filtrar registros

Gladiston Santana gladiston em vidy.com.br
Qua Fev 26 15:54:45 -03 2014


Se esse processo de where para calcular um status for repetitivo, então
simplifica sua vida e crie um campo calculado em sua tabela:
CREATE TABLE TABELA(
(...)
PAGO VARCHAR(1),
CANCELADO VARCHAR(1),
STATUS                 COMPUTED BY (
  CASE
      WHEN (PAGO='N') AND ( CANCELADO='N') THEN 'Aberto'
      WHEN (PAGO='S') AND ( CANCELADO='N') THEN 'Pago'
      WHEN (CANCELADO='S') THEN 'Cancelado'
  END)
)

Na sua aplicação voce filtra pelo campo STATUS ou STATUS e mais outro campo
que irá funcionar.




Em 26 de fevereiro de 2014 14:56, 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
>



-- 
--
B em B@BU     iB em M@B.  B em MBBO   MBBMMB em B@BZLr    E@@@@i      r@@@BU
vB em M@O     E em B@Bu   BBBM em 0   G em MMM@N8MBB em ZP5r  B em B@k      8B@@O
 OB em B@q   2 em BBBM    B em B@BO   BB em B@B,.:,7B em B@@L uB em B@,    OB em B@.
 ,@@@B@   @BBB@,    @BBB em 8   M em M@@@     PB em B@B  @@@BN   iB em B@L
  U em B@B2 LB em B@X     B em MBBO   MBBM em B     i em BBB@. 7 em B@Bi  B em B@E
   B@@@BiM em M@B.     @BBM em G   M em MMB@     v@@M em B,  G em B@Z v em B@B.
   7B em B@O em B@B5      B em B@B8   BBBM em B     Z@@@B@   iB@@@2 em B@Br
    NB em M@B em B8       @B em B@8   M em B@B em i:i75 em B@B em r    E@@B em B@Bq
    . em B@@@B@:       B em B@B@   @B@@@B em B@B@@@ME;     .BB em MBB@
     55.ANOS        OMOGBS   PBZGGOOMOO117,        7 em BBB@r
     ==============================================r@@@@F=====
     Gladiston Santana                             8 em B@B,
     Supervisor de TI                             G em B@B7
     Tel.:+551147873122 R:228                    :@B em B0
     Grupo VIDY - SGQ ISO9001 - 55 ANOS          @B em B@.
     Visite nosso site: www·vidy·com·br         BB@@@u
     Visite também : www·expolabor·com·br      GB em B@N



Mais detalhes sobre a lista de discussão lista