none
Case com SubConsulta RRS feed

  • Pergunta

  • Oi pessoal. Tenho tabelas Produtos, CodigosBarra e Estados

     

    A tabela CodigosBarra guarda os Códigos de Barra de cada produto. A tabela Estados guarda os estados do registo(A=Activo,N=Cancelado e C=Confirmado).

     

    No formulário Produto "VB .Net" tenho um CheckBox que me permite visualizar na grelha apenas registos Activos

    ou Todos sendo o campo Código do Produto (CodProd) obrigatório pois um Código de Barra deve estar relacionado a um produto. 

     

    O procedimento abaixo so me devolve um registo.

     

    Create Procedure pPesquisarCodigoBarra_Prod(

    @CodProd int,

    @Estado char

    )

    as

    Select CodBar,CodProd,CodigoBarra,Descricao,Estado

    from CodigosBarra

    where CodProd=@CodProd and Estado =

    Case when @Estado='ALL' then (Select Estado FROM Estados)

    Else @Estado

    End

     

    quarta-feira, 7 de janeiro de 2009 14:49

Todas as Respostas

  • Não entendí a sua dúvida.

    quinta-feira, 8 de janeiro de 2009 03:06
  • Se eu entendi bem acho que é isso

    Create Procedure pPesquisarCodigoBarra_Prod(
    @CodProd int,
    @Estado char
    )
    as
    Select CodBar,CodProd,CodigoBarra,Descricao,Estado
      from CodigosBarra
     where CodProd=@CodProd
       and (@Estado = 'ALL' OR Estado = @Estado)
    quinta-feira, 8 de janeiro de 2009 11:25
  • Emanuel.

    Do formulário, o Procedimento armazenado recebe os valores @CodProd e @Estado.

    @CodProd traz o Código do Produto. Aqui não há problema.

    @Estado traz os valores 'A', 'N', 'C' e 'ALL'

    Se for 'A' deve seleccionar todos códigos de barra activos, 'N' os cancelados, 'C' confirmados. Até aqui não problema.

    Se for 'ALL' deve seleccionar todos (activos, cancelados e confirmados). É aqui onde está o problema.

     

    Eis as tabelas:

     

    Produtos(CodProd,Referencia,NomeProd,CodUnid, StockMin,StockMax,QtdPedida,Saldo,Estado,UsuarioGrav,DataGrav,UsuarioAlt,DataAlt)

     

    CodigosBarra(CodBar,CodProd,CodigoBarra,Descricao,Estado,UsuarioGrav,DataGrav,UsuarioAlt,DataAlt)

     

    Não sei se fui claro.

     

    Abraços.

     

    quinta-feira, 8 de janeiro de 2009 12:55