Usuário com melhor resposta
Condição pesquisa por nome não funciona

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(); } }
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.
- Marcado como Resposta WR Services Wadson terça-feira, 3 de maio de 2016 14:35
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
- Editado Manoel Neto MSYS terça-feira, 3 de maio de 2016 03:07
-
-
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
-
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.
- Marcado como Resposta WR Services Wadson terça-feira, 3 de maio de 2016 14:35
-
-
-
-