none
Verificar quantas vezes um campo se repete no Banco RRS feed

  • Pergunta

  • Gente, preciso de ajuda para desenvolver um método que busque no banco o código digitado e retorne o numero de vezes que ele se repetiu. Eu tenho um código que retorna apernas False ou true sobre ser encontrado no Banco, mas isso não resolve pra mim, pois no sistema bibliotecário q estou desenvolvendo o aluno pode locar no máximo dois livros, ou seja quando o id dele aparecer duas vezes na tabela locação, o mesmo n poderia mais alugar. A condição seria tipo: 

    if(ResultadoDeBusca>2){

    Não pode locar, a menos q devolva os  alugados}

    else

    realiza locação

    -----------------

    eu tenho esse código que usei para evitar duplicação, mas ele n me retorna o numero, apenas se existe ou n. Tem como eu adaptá-lo para a situação descrita acima??

    conn = new MySqlConnection("server=localhost;database=biblioteca;uid=root;pwd=''");
                conn.Open();
                string sql = string.Empty;
                sql = "select idleitor from tbl_itemlocacao where idleitor=@idleitor";
                MySqlCommand cm = new MySqlCommand(sql, conn);
                cm.Parameters.AddWithValue("@idleitor", txtcodigo.Text);
    
    
                cm.BeginExecuteNonQuery();
                bool ver = cm.ExecuteReader().HasRows;
                if (ver == true)
                {
                   //existe
                }
                //SENÃO NÃO ENTRA
                else
    
                    //n existe

    domingo, 15 de novembro de 2015 13:42

Respostas

  • Boa tarde.

    Tente:

     sql = "select COUNT(idleitor) from tbl_itemlocacao where idleitor=@idleitor";
                MySqlCommand cm = new MySqlCommand(sql, conn);
                cm.Parameters.AddWithValue("@idleitor", txtcodigo.Text);
    
    
                int count = int.Parse(cm.ExecuteScalar().ToString());


    Att., Rafael Simor

    • Marcado como Resposta tt0022 domingo, 15 de novembro de 2015 18:33
    domingo, 15 de novembro de 2015 16:09
  • Coloque um breaking point ou faça isso

    MessageBox.Show(String.Format("Leitor possui {0} locação(es)!", count.ToString()));
    no lugar do if/else para verificar qual valor está trazendo.


    Att., Rafael Simor


    • Editado SimorC domingo, 15 de novembro de 2015 17:15
    • Marcado como Resposta tt0022 domingo, 15 de novembro de 2015 18:33
    domingo, 15 de novembro de 2015 17:15
  • Não é perturbação alguma.

    Estou aqui finalizando meu TCC, pretendo ficar o dia todo programando, não custa nada ajudar os outros. :)

    Mas voltando ao tópico...

    Tente:

    MessageBox.Show(String.Format("Leitor de ID {0} possui {1} locação(es)!", txtCodigo.Text, count.ToString()));

    Para verificar qual ID ele está procurando.

    Caso continue retornando 0, tente executar a Query diretamente no banco de dados (com e sem o COUNT) para verificar se realmente existem registros.


    Att., Rafael Simor

    • Marcado como Resposta tt0022 domingo, 15 de novembro de 2015 18:33
    domingo, 15 de novembro de 2015 17:39

Todas as Respostas

  • Boa tarde.

    Tente:

     sql = "select COUNT(idleitor) from tbl_itemlocacao where idleitor=@idleitor";
                MySqlCommand cm = new MySqlCommand(sql, conn);
                cm.Parameters.AddWithValue("@idleitor", txtcodigo.Text);
    
    
                int count = int.Parse(cm.ExecuteScalar().ToString());


    Att., Rafael Simor

    • Marcado como Resposta tt0022 domingo, 15 de novembro de 2015 18:33
    domingo, 15 de novembro de 2015 16:09
  •  conn = new MySqlConnection("server=localhost;database=biblioteca;uid=root;pwd=''");
                conn.Open();
                string sql = string.Empty;
                sql = "select COUNT(idleitor) from tbl_itemlocacao where idleitor=@idleitor";
                MySqlCommand cm = new MySqlCommand(sql, conn);
                cm.Parameters.AddWithValue("@idleitor", txtcodigo.Text);
                int count = int.Parse(cm.ExecuteScalar().ToString());
    
                if (count >2 )
                {
                    MessageBox.Show("já possui duas locacoes");
                }
                else
                MessageBox.Show("ainda pode locar!");
    
    seguindo  as alterações, ficaria assim? n tá entrando no if, está indo direto para o else mesmo quando o leitor possui menos de dois registros
    domingo, 15 de novembro de 2015 17:11
  • Coloque um breaking point ou faça isso

    MessageBox.Show(String.Format("Leitor possui {0} locação(es)!", count.ToString()));
    no lugar do if/else para verificar qual valor está trazendo.


    Att., Rafael Simor


    • Editado SimorC domingo, 15 de novembro de 2015 17:15
    • Marcado como Resposta tt0022 domingo, 15 de novembro de 2015 18:33
    domingo, 15 de novembro de 2015 17:15
  • Desculpa ficar perturbando, Rafael, mas mas o count.string() está retornando sempre zero
    domingo, 15 de novembro de 2015 17:31
  • Não é perturbação alguma.

    Estou aqui finalizando meu TCC, pretendo ficar o dia todo programando, não custa nada ajudar os outros. :)

    Mas voltando ao tópico...

    Tente:

    MessageBox.Show(String.Format("Leitor de ID {0} possui {1} locação(es)!", txtCodigo.Text, count.ToString()));

    Para verificar qual ID ele está procurando.

    Caso continue retornando 0, tente executar a Query diretamente no banco de dados (com e sem o COUNT) para verificar se realmente existem registros.


    Att., Rafael Simor

    • Marcado como Resposta tt0022 domingo, 15 de novembro de 2015 18:33
    domingo, 15 de novembro de 2015 17:39
  • Eu ja havia verificado a query no Banco antes e ela está certinha e a tabela tbm está preenchida. mas parece q ele n recebe id nenhum
    domingo, 15 de novembro de 2015 17:54
  • O código que tu estás fazendo a busca não é esse campo "Código Leitor"?

    Se ele estiver vazio, não vai fazer o count corretamente.

    Tente colocar o código 2, por exemplo, para verificar o resultado.


    Att., Rafael Simor

    domingo, 15 de novembro de 2015 18:00
  • sim, quando fiz no bd eu coloquei o id 2 e o 3 que tem mais abaixo para verificar e o count exibiu o resultado correto. Dai pelo form eu digito na textbox para alterar na query
    domingo, 15 de novembro de 2015 18:06
  • Tudo bem, mas pela imagem o TextBox está vazio (tanto que não pegou nenhum ID para busca).

    Tu não está limpando o TextBox antes de usar ele na Query?


    Att., Rafael Simor

    domingo, 15 de novembro de 2015 18:08
  • Eis que vc encontra o problema!! Tem um método que executa antes desse e ele estava limpando a textbox antes da query pegar o valor. Sou nova nisso e obg pela ajuda

    Veja: \o/

    domingo, 15 de novembro de 2015 18:27
  • Ae \o/

    E não te preocupas, esse tipo de coisa acontece com todo mundo... :)


    Att., Rafael Simor

    domingo, 15 de novembro de 2015 18:29