none
Comando ODBC retorna apenas a estrutura da tabela (sem nenhuma linha) RRS feed

  • Pergunta

  • Pessoal, estou há algum tempo com esse problema aqui. Tenho um método de conexão com uma base de dados progress porém toda vez que passo o comando sql em determinadas situações ele me retorna um dataTable somente com as colunas sem nenhuma linha. Estou achando isso muito estranho e já estou sem idéias de como solucionar o caso. segue o Código:

    public DataTable Consultar(string connString, string query, List<Parametros> parametros)
            {
                DataTable dt = new DataTable();
                OdbcDataAdapter da = new OdbcDataAdapter();
                using (OdbcConnection connection = new OdbcConnection(connString))
                    try
                    {
                        connection.ConnectionTimeout = Int32.MaxValue;
                        connection.Open();                    
                        OdbcCommand command = new OdbcCommand(query, connection);
                        if (parametros != null && parametros.Count != 0)
                        {
                            for (int i = 0; i < parametros.Count; i++)
                            {
                                command.Parameters.AddWithValue(parametros[i].Chave, Convert.ToInt32(parametros[i].Valor));
                            }
                        }
                        command.CommandType = CommandType.Text;
                        command.CommandTimeout = Int32.MaxValue;
                        da.SelectCommand = command;                    
                        da.Fill(dt);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                    //finally
                    //{
                    //    if (connection.State.Equals(System.Data.ConnectionState.Open))
                    //    {
                    //        connection.Close();
                    //    }
                    //}
                return dt;
            }

    No return dt dependendo do caso ele me retorna apenas as colunas.

    segunda-feira, 22 de abril de 2013 18:35

Todas as Respostas

  • E aí pessoal, alguém teria alguma luz no fim do túnel?
    quinta-feira, 25 de abril de 2013 12:11
  • Olá Osmar,

    Me parece que seu código esta correto.

    Como vc esta acessando os dados retornados por este método?

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 2 de maio de 2013 12:09
    Moderador
  • Olá Fernando, desculpe minha ignorância mas acho que não compreendi sua pergunta. De qualquer forma, eu acesso utilizando um driver odbc da OpenEdge progress. Nas fontes de dados ODBC do windows está tudo configurado corretamente (Aparentemente). Quando utilizo o server explorer do visual studio eu consigo conectar na base e ver as tabelas do banco.

    Obrigado.

    quinta-feira, 2 de maio de 2013 15:51
  • Oi Osmar,

    Gostaria de saber como vc esta utilizando o DataTable.

    Vc comentou que apenas os nomes das colunas estão retornando, gostaria de saber como vc esta manipulando o DataTable resultante do processamento.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 2 de maio de 2013 16:50
    Moderador
  • Oi Fernando, estou trabalhando da seguinte maneira. Para esta consulta que retorna uma estrutura eu crio um objeto com a mesma estrutura do meu resultado assim trabalho com objetos ao invés de DataTable. Faço isso na camada de domínio do meu sistema. Daí pra cima eu apenas utilizo a coleção de objetos ficando mais fácil o trabalho.

    Desconfio que o problema possa estar no banco, pois quando passo uma determinada data ele retorna os dados, mas tem hora que ele não vem nada só a estrutura da tabela montada.

    QUando debugo este método, ao passar o mouse sobre o dt retornado eu consigo ver se vem dados ou não por ali mesmo, se não vem nada já paro o debug por ali mesmo.

    Enfim, está bem esquisito esse problema.

    Grato.

    quinta-feira, 2 de maio de 2013 23:58
  • Oi Osmar,

    Este problema não seria o resultado de sua consulta?

    Será que o formato de sua consulta não esta retornando registros?

    Poderia postar a query que esta executando?

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 3 de maio de 2013 12:56
    Moderador