none
Consulta com sql simples não retorna valor RRS feed

  • Pergunta

  • Amigos, o que deve estar acontecendo com minha consulta, pois não retorna nenhum valor.

    Vejam o código:

    Na classe eu tenho um método assim:

     public class Militares
        {
            public int id;
            public string nrpm;
            public string pgrad;
            public string nome;
            public DataSet get()
        {

    ...

    ...

     public static DataSet Procurar(string nome)
            {
                try
                {
                    OleDbConnection conn = new OleDbConnection(Conexao.getConexao());
                    conn.Open();

    //A sintaxe  sql está correta ?                                                                                                                                         

                    OleDbDataAdapter da = new OleDbDataAdapter("Select IDT_MILITAR as IDT_MILITAR, NRPM as NRPM, PGRAD as PGRAD, NOME as NOME From MILITARES Where NOME = '" + nome + "'", conn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "DGV1");
                    return ds;
                }
                catch
                {
                    throw;
                }
            }

    E no Formulário meu código ficou assim:

     private void btnProcurar_Click(object sender, EventArgs e)
            {
                //se estiver vazio avisa
                if (txtProcurar.Text == "")
                {
                    MessageBox.Show("Informe o nome do militar que você quer procurar...","Militares");
                }
                else
                {
                    string achou = (txtProcurar.Text);

                    DataSet ds = Militares.Procurar(achou);
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        dgvDados.DataSource = ds.Tables["DGV1"];
                        dgvDados.Refresh();
                        dgvDados.Update();
                    }
                    else
                    {
                        MessageBox.Show("Informação não localizada...","Militares");
                        exibirDados();
                    }
                }
            }

     private void exibirDados()
            {
                try
                {
                    Militares mil = new Militares();
                    DataSet ds = mil.get();
                    dgvDados.DataSource = ds.Tables[0];
                }
                catch
                {
                    throw;
                }
            }



    domingo, 4 de setembro de 2016 19:32

Respostas

  • Muito obrigado amigo, deu certinho agora,

    Nem tinha visto a flta do operador. :(.

    Valeu mesmo.

    • Marcado como Resposta SRick segunda-feira, 5 de setembro de 2016 13:30
    segunda-feira, 5 de setembro de 2016 13:29

Todas as Respostas

  • Olá,

    Sua query SQL está correta, porém ele está buscando exatamente pela palavra que você passar e não apenas por um "pedaço" da mensagem. Se deseja pesquisar nesse campo nome, sem a necessidade de passar o nome exatamente  como ele está cadastrado, faça da seguinte forma:

    OleDbDataAdapter da = new OleDbDataAdapter("Select IDT_MILITAR as IDT_MILITAR, NRPM as NRPM, PGRAD as PGRAD, NOME as NOME From MILITARES Where NOME LIKE '%" + nome + "%'", conn);

    Dessa form ele irá pesquisar o trecho digitado em alguma parte do seu campo Nome.

    Por exemplo:

    Nome cadastrado: ADRIANA

    Valor buscado: ANA

    A consulta irá retornar o registro da ADRIANA pois ele contém a string buscada.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    segunda-feira, 5 de setembro de 2016 11:25
  • Olá amigo, obrigado pela resposta, mas me retornou este erro:

    Additional information: Erro de sintaxe (operador faltando) na expressão de consulta 'LIKE '%Brun%''.

    No caso eu passei a string "Brun".

    Se puder me ajudar, agradeço...

    Valeu.

    segunda-feira, 5 de setembro de 2016 12:15
  • Olá,

    Realmente, acabei apagando o operador acidentalmente, já atualizei a resposta anterior. Segue a linha correta:

    OleDbDataAdapter da = new OleDbDataAdapter("Select IDT_MILITAR as IDT_MILITAR, NRPM as NRPM, PGRAD as PGRAD, NOME as NOME From MILITARES Where NOME LIKE '%" + nome + "%'", conn);

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 5 de setembro de 2016 12:48
  • Muito obrigado amigo, deu certinho agora,

    Nem tinha visto a flta do operador. :(.

    Valeu mesmo.

    • Marcado como Resposta SRick segunda-feira, 5 de setembro de 2016 13:30
    segunda-feira, 5 de setembro de 2016 13:29
  • SRick,

    Marque a resposta correta para que os outros possam verificar de forma fácil qual foi a solução.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 5 de setembro de 2016 13:32