none
Metodo para consulta dinamico RRS feed

  • Pergunta

  • Pessoal,

    Tenho uma classe Cliente e nela preciso ter um metodo para retornar uma lista de clientes. O que acontece é que preciso parassar para este metodo de alguma meneira quais campos vou usar para filtrar apenas os registros que eu preciso. Vou tentar exemplificar:

    A base do metodo:

    public List<Cliente> RetornaListaClientes()
    {}
    Hora eu posso precisar buscar os clientes que tenham "MARIA" no campo NOME da tabela de clientes, hora posso buscar pelo CNPJ, posso tambem buscar pelo numero de telefone e outros campos mais que tenho na tabela.

    Alguem poderia me dar algumas ideias de como fazer isso corretamente?

    Agradeço pela atenção.

    Abs!

    sexta-feira, 17 de fevereiro de 2012 12:51

Respostas

  • Concatene o comando sql de acordo com os parametros... Use o where 1 = 1 para iniciar e depois vai vendo se a propriedade do objeto foi preenchida. se foi vc inclui no filtro!

    EX:

    public List retornarListaClientes(Cliente clsCliente)
    {
         string sql = "Select * from clientes where 1 = 1 ";
    
         if( clsCliente.Nome != "")//SE TEM O NOME POPULADO INCLUI NO WHERE
               sql  = sql + " and cli_nome = " + clsCliente.Nome; 
    
         if(clsCliente.Id_Cidade != 0) //SE TEM CIDADE POPULADO INCLUI CIDADE NO WHERE
              sql = sql + " and cli_Cidade = " + lsCliente.Id_Cidade;
     
         if(clsCliente.Idade != 0) //SE TEM A IDADE POPULADA INCLUI A IDADE NO WHERE
              sql = sql + " and cli_Idade = " + lsCliente.Idade;
    
        //Executa seu comando sql e pronto!!!
    
    }

     No seu form, vc popula um objeto CLIENTE com os dados da tela e envia para o método de pesquisa. Se o Usuario preencher o campo nome consequentemente o objeto terá a propriedade nome populada e o filtro usará o nome na clausula WHERE do select...e assim por diante...

    Se ajudou marque como resposta ;)








    sexta-feira, 17 de fevereiro de 2012 13:06

Todas as Respostas

    • Sugerido como Resposta Rafael Reis sexta-feira, 17 de fevereiro de 2012 16:09
    sexta-feira, 17 de fevereiro de 2012 13:01
  • Concatene o comando sql de acordo com os parametros... Use o where 1 = 1 para iniciar e depois vai vendo se a propriedade do objeto foi preenchida. se foi vc inclui no filtro!

    EX:

    public List retornarListaClientes(Cliente clsCliente)
    {
         string sql = "Select * from clientes where 1 = 1 ";
    
         if( clsCliente.Nome != "")//SE TEM O NOME POPULADO INCLUI NO WHERE
               sql  = sql + " and cli_nome = " + clsCliente.Nome; 
    
         if(clsCliente.Id_Cidade != 0) //SE TEM CIDADE POPULADO INCLUI CIDADE NO WHERE
              sql = sql + " and cli_Cidade = " + lsCliente.Id_Cidade;
     
         if(clsCliente.Idade != 0) //SE TEM A IDADE POPULADA INCLUI A IDADE NO WHERE
              sql = sql + " and cli_Idade = " + lsCliente.Idade;
    
        //Executa seu comando sql e pronto!!!
    
    }

     No seu form, vc popula um objeto CLIENTE com os dados da tela e envia para o método de pesquisa. Se o Usuario preencher o campo nome consequentemente o objeto terá a propriedade nome populada e o filtro usará o nome na clausula WHERE do select...e assim por diante...

    Se ajudou marque como resposta ;)








    sexta-feira, 17 de fevereiro de 2012 13:06