none
Condição pesquisa por nome não funciona RRS feed

  • Pergunta

  • Boa noite Galera!

    Mais uma vez aqui pedindo ajuda de vocês, estou com um pequeno problema, já tentei resolver de todas as formas, mas não deu certo, lembrando que o select no banco funciona perfeitamente, mais não esta funcionado usando as condições if else e nem mesmo funcionam sozinhas no visual Studio. Segue código completo da pesquisa, sera que alguem pode meajudar, ficarei grato.

      private void btn_pesquisar_Click(object sender, EventArgs e)
            {
                if(rb_centro_custo.Checked == true)
                {
                    string criteriocmb = "";
    
                    criteriocmb = cmbCentroCusto.Text.ToString();
    
                    sqlString = "SELECT controle.idcontrole   as idcontrole," +
                                                "controle.datacadastro as datacadastro, " +
                                                "fornecedor.fornecedor as fornecedor," +
                                                "controle.descricao    as descricao," +
                                                "parcelas.num_parcela  as num_parcela," +
                                                "centrocusto.centro_custo as centro_custo," +
                                                "parcelas.valor_parc   as valor_parc," +
                                                "parcelas.datavenc     as datavenc," +
                                                "parcelas.datapgto     as datapgto," +
                                                "parcelas.idparcela    as idparcela " +
                                        "FROM parcelas " +
                                        "INNER JOIN controle ON controle.idcontrole = parcelas.idcontrole " +
                                        "INNER JOIN fornecedor ON controle.idfornecedor = fornecedor.idfornecedor " +
                                        "INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro WHERE centro_custo LIKE '" + criteriocmb + "%'AND pago = 0 ORDER BY datavenc";
    
                    carregaGrid(sqlString); FormataTexbox();
                }
                else if (rb_vencimento.Checked == true)
                {
                    sqlString = "SELECT controle.datacadastro, " +
                           "controle.idcontrole, " +
                           "fornecedor.fornecedor, " +
                           "controle.descricao, " +
                           "parcelas.num_parcela, " +
                           "centrocusto.centro_custo, " +
                           "parcelas.valor_parc, " +
                           "parcelas.datavenc, " +
                           "parcelas.datapgto, " +
                           "parcelas.idparcela " +
                       "FROM controle INNER JOIN fornecedor  ON controle.idfornecedor = fornecedor.idfornecedor " +
                       "INNER JOIN parcelas    ON controle.idcontrole = parcelas.idcontrole " +
                       "INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro " +
                       "WHERE datavenc >= '" + dtInicial.Value.ToString("yyyy-MM-dd 00:00:00") + "' AND datavenc <= '" + dtFinal.Value.ToString("yyyy-MM-dd 23:59:59") + "' AND pago = 0 ORDER BY datavenc";
    
                    carregaGrid(sqlString); FormataTexbox();
                }
                else if (rb_fornecedor.Checked == true)
                {
                    string criterio_fornecedor = "";
                    criterio_fornecedor = cmb_forneced.ToString();
    
                    sqlString = "SELECT controle.datacadastro,  controle.idcontrole,  fornecedor.fornecedor,  controle.descricao,  parcelas.num_parcela,  centrocusto.centro_custo,  parcelas.valor_parc, " +
                                "parcelas.datavenc,  parcelas.datapgto,  parcelas.idparcela  FROM controle INNER JOIN fornecedor  ON controle.idfornecedor = fornecedor.idfornecedor " +
                                "INNER JOIN parcelas    ON controle.idcontrole = parcelas.idcontrole   INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro " +
                                "WHERE fornecedor LIKE '" + criterio_fornecedor + "%'AND pago = 0 ORDER BY datavenc";
    
                    carregaGrid(sqlString); FormataTexbox();
                }
                else if (rb_todos_nao_pagos.Checked == true)
                {
                    pesq_Todos_Nao_pagos();
                }
                else
                {
                    pesq_Todos_pagos();
                }           
            }

    terça-feira, 3 de maio de 2016 02:29

Respostas

  • Bom dia,

    A consulta não está funcionando ou não está entrando na estrutura condicional (if, else) ?
    Segue o código após duas 3 correções:

    private void btn_pesquisar_Click(object sender, EventArgs e)
    {
    	if(rb_centro_custo.Checked == true)
    	{
    		string criteriocmb = "";
    
    		criteriocmb = cmbCentroCusto.Text.ToString();
    
    		sqlString = "SELECT controle.idcontrole   as idcontrole," +
    									"controle.datacadastro as datacadastro, " +
    									"fornecedor.fornecedor as fornecedor," +
    									"controle.descricao    as descricao," +
    									"parcelas.num_parcela  as num_parcela," +
    									"centrocusto.centro_custo as centro_custo," +
    									"parcelas.valor_parc   as valor_parc," +
    									"parcelas.datavenc     as datavenc," +
    									"parcelas.datapgto     as datapgto," +
    									"parcelas.idparcela    as idparcela " +
    							"FROM parcelas " +
    							"INNER JOIN controle ON controle.idcontrole = parcelas.idcontrole " +
    							"INNER JOIN fornecedor ON controle.idfornecedor = fornecedor.idfornecedor " +
    							"INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro WHERE centro_custo LIKE '" + criteriocmb + "%' AND pago = 0 ORDER BY datavenc";
    
    		carregaGrid(sqlString); FormataTexbox();
    	}
    	else if (rb_vencimento.Checked == true)
    	{
    		sqlString = "SELECT controle.datacadastro, " +
    			   "controle.idcontrole, " +
    			   "fornecedor.fornecedor, " +
    			   "controle.descricao, " +
    			   "parcelas.num_parcela, " +
    			   "centrocusto.centro_custo, " +
    			   "parcelas.valor_parc, " +
    			   "parcelas.datavenc, " +
    			   "parcelas.datapgto, " +
    			   "parcelas.idparcela " +
    		   "FROM controle INNER JOIN fornecedor  ON controle.idfornecedor = fornecedor.idfornecedor " +
    		   "INNER JOIN parcelas    ON controle.idcontrole = parcelas.idcontrole " +
    		   "INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro " +
    		   "WHERE datavenc >= '" + dtInicial.Value.ToString("yyyy-MM-dd 00:00:00") + "' AND datavenc <= '" + dtFinal.Value.ToString("yyyy-MM-dd 23:59:59") + "' AND pago = 0 ORDER BY datavenc";
    
    		carregaGrid(sqlString); FormataTexbox();
    	}
    	else if (rb_fornecedor.Checked == true)
    	{
    		string criterio_fornecedor = "";
    		criterio_fornecedor = cmb_forneced.Text.ToString();
    
    		sqlString = "SELECT controle.datacadastro,  controle.idcontrole,  fornecedor.fornecedor,  controle.descricao,  parcelas.num_parcela,  centrocusto.centro_custo,  parcelas.valor_parc, " +
    					"parcelas.datavenc,  parcelas.datapgto,  parcelas.idparcela  FROM controle INNER JOIN fornecedor  ON controle.idfornecedor = fornecedor.idfornecedor " +
    					"INNER JOIN parcelas    ON controle.idcontrole = parcelas.idcontrole   INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro " +
    					"WHERE fornecedor LIKE '" + criterio_fornecedor + "%' AND pago = 0 ORDER BY datavenc";
    
    		carregaGrid(sqlString); FormataTexbox();
    	}
    	else if (rb_todos_nao_pagos.Checked == true)
    	{
    		pesq_Todos_Nao_pagos();
    	}
    	else
    	{
    		pesq_Todos_pagos();
    	}           
    }

    Att,

     


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 3 de maio de 2016 12:15

Todas as Respostas

  • Olá,

    Você tem que verificar as condições como ela esta retornando.

    o else if é usado quando uma condicional é diferente de outra veja este exemplo

    // Change the values of these variables to test the results.
    bool Condition1 = true;
    bool Condition2 = true;
    bool Condition3 = true;
    bool Condition4 = true;
    
    if (Condition1)
    {
        // Condition1 is true.
    }
    else if (Condition2)
    {
        // Condition1 is false and Condition2 is true.
    }
    else if (Condition3)
    {
        if (Condition4)
        {
            // Condition1 and Condition2 are false. Condition3 and Condition4 are true.
        }
        else
        {
            // Condition1, Condition2, and Condition4 are false. Condition3 is true.
        }
    }
    else
    {
        // Condition1, Condition2, and Condition3 are false.
    }
     

    Link exemplo:https://msdn.microsoft.com/pt-br/library/5011f09h.aspx?f=255&MSPPError=-2147217396

    A 1primeira condicional é verdadeira mas para else if da segunda condicional entra a primeira tem que ser falsaTem que realiza os teste para verificar os Check o valores que eles estão trazendo não pode ter dois valores true ao mesmo tempo em um else if.

    Tipo pelo que vejo no seu if else, se caso rb_centro de custo esteve true o rb_vencimento só vai entra se rb_centro for falso. se não tive entrando em alguma condição que você queira você tem que ver a logica das possíveis condições usa tabela verdade.

    At. te. Manoel Neto

     

    terça-feira, 3 de maio de 2016 03:01
  • Amigo, já debugou? Se sim, ele para aonde? Tente por um espaço antes do AND nas querys.
     "%'AND 
    terça-feira, 3 de maio de 2016 03:17
  • Wadson,

    Conforme nosso colega Lailson Conceição respondeu, falta espaço entre "%'AND pago"... Onde o correto seria "%' AND pago"...

    Uma forma de encontrar esses problemas e por um breakpoint na linha "carregaGrid(sqlString); FormataTexbox();" e pegar o valor da variável sqlString e executar a query fora.


    Carlos Eduardo Ferreira

    terça-feira, 3 de maio de 2016 12:05
  • Bom dia,

    A consulta não está funcionando ou não está entrando na estrutura condicional (if, else) ?
    Segue o código após duas 3 correções:

    private void btn_pesquisar_Click(object sender, EventArgs e)
    {
    	if(rb_centro_custo.Checked == true)
    	{
    		string criteriocmb = "";
    
    		criteriocmb = cmbCentroCusto.Text.ToString();
    
    		sqlString = "SELECT controle.idcontrole   as idcontrole," +
    									"controle.datacadastro as datacadastro, " +
    									"fornecedor.fornecedor as fornecedor," +
    									"controle.descricao    as descricao," +
    									"parcelas.num_parcela  as num_parcela," +
    									"centrocusto.centro_custo as centro_custo," +
    									"parcelas.valor_parc   as valor_parc," +
    									"parcelas.datavenc     as datavenc," +
    									"parcelas.datapgto     as datapgto," +
    									"parcelas.idparcela    as idparcela " +
    							"FROM parcelas " +
    							"INNER JOIN controle ON controle.idcontrole = parcelas.idcontrole " +
    							"INNER JOIN fornecedor ON controle.idfornecedor = fornecedor.idfornecedor " +
    							"INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro WHERE centro_custo LIKE '" + criteriocmb + "%' AND pago = 0 ORDER BY datavenc";
    
    		carregaGrid(sqlString); FormataTexbox();
    	}
    	else if (rb_vencimento.Checked == true)
    	{
    		sqlString = "SELECT controle.datacadastro, " +
    			   "controle.idcontrole, " +
    			   "fornecedor.fornecedor, " +
    			   "controle.descricao, " +
    			   "parcelas.num_parcela, " +
    			   "centrocusto.centro_custo, " +
    			   "parcelas.valor_parc, " +
    			   "parcelas.datavenc, " +
    			   "parcelas.datapgto, " +
    			   "parcelas.idparcela " +
    		   "FROM controle INNER JOIN fornecedor  ON controle.idfornecedor = fornecedor.idfornecedor " +
    		   "INNER JOIN parcelas    ON controle.idcontrole = parcelas.idcontrole " +
    		   "INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro " +
    		   "WHERE datavenc >= '" + dtInicial.Value.ToString("yyyy-MM-dd 00:00:00") + "' AND datavenc <= '" + dtFinal.Value.ToString("yyyy-MM-dd 23:59:59") + "' AND pago = 0 ORDER BY datavenc";
    
    		carregaGrid(sqlString); FormataTexbox();
    	}
    	else if (rb_fornecedor.Checked == true)
    	{
    		string criterio_fornecedor = "";
    		criterio_fornecedor = cmb_forneced.Text.ToString();
    
    		sqlString = "SELECT controle.datacadastro,  controle.idcontrole,  fornecedor.fornecedor,  controle.descricao,  parcelas.num_parcela,  centrocusto.centro_custo,  parcelas.valor_parc, " +
    					"parcelas.datavenc,  parcelas.datapgto,  parcelas.idparcela  FROM controle INNER JOIN fornecedor  ON controle.idfornecedor = fornecedor.idfornecedor " +
    					"INNER JOIN parcelas    ON controle.idcontrole = parcelas.idcontrole   INNER JOIN centrocusto ON controle.idcentro = centrocusto.idcentro " +
    					"WHERE fornecedor LIKE '" + criterio_fornecedor + "%' AND pago = 0 ORDER BY datavenc";
    
    		carregaGrid(sqlString); FormataTexbox();
    	}
    	else if (rb_todos_nao_pagos.Checked == true)
    	{
    		pesq_Todos_Nao_pagos();
    	}
    	else
    	{
    		pesq_Todos_pagos();
    	}           
    }

    Att,

     


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 3 de maio de 2016 12:15
  • o problema não esta nas condicionais, fiz o teste com o código sozinho e nao retornou nada.
    terça-feira, 3 de maio de 2016 14:32
  • coloquei o espaço mas continua do mesmo jeito
    terça-feira, 3 de maio de 2016 14:32
  • Obrigado a todos mais uma vez
    terça-feira, 3 de maio de 2016 14:37
  • E o problema o que foi?
    terça-feira, 3 de maio de 2016 14:38