Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) procedure para filtro


edipoRei

Pergunta

Ola,

Estou utilizando asp e o sql server.

Tenho uma página com uma tabela e estou tentando fazer um filtro.

O filtro consistirá de duas tags <select> que representam duas colunas da minha tabela.

Ao escolher determinado valor dos selects, a tabela deverá mostrar apenas os valores correspondentes.

o seguinte código:

<select id="nome">

<option value="0">TODAS</option>

<option value="1">A</option>

<option value="2">B</option>

</select>

<select id="endereco">

<option value="0">TODAS</option>

<option value="1">C</option>

<option value="2">D</option>

</select>

A minha duvida é como tratar essas variáveis na procedure...

Por exemplo se eu selecionar no select nome a oção "A" e no select endereco selecionar a opção C

na procedure basta fazer:

select * from tbl where nome=@nome and endereco=@endereco

O problema é quando escolha a opção TODAS...

Se enviar este valor para a prc ele irá parar na clausula where fazendo não retornar valor algum...

O que faço?

Testo os valores das variáveis e faço quatro selects?

EX:

select * from tbl;

select * from tbl where nome=@nome and endereco=@endereco;

select * from tbl where nome=@nome;

select * from tbl where endereco=@endereco

Não gostaria de fazer isso , pois posteriormente posso ter que aumentar a quantidade de selects

ow a estrutura da tabela...

Teria uma outra maneira????

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Edipo,

você pode criar uma variável do tipo string, testar os valores das variáveis atribuindo a cláusula que desejar, e depois concatenar sua string com o select. Assim você montará seu select de acordo com a navegação do usuário.

Se eu fosse fazer, preferiria fazer um select para cada cláusula. Fica maior, mas o código fica mais legível.

Não é uma boa prática de programação criar string e depois realizar concatenações em selects. Mas caso não tenha jeito... rs. É uma opção válida!!! :.)

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Edipo,

Uma dica:

Ao utilizar a cláusula OR, você onera significativamente a performance do Banco. Fazendo pesquisa em string, ficará ainda pior.

Se sua tabela tiver muita concorrência e/ou muitos registros, provavelmente terá problemas de performance.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...