none
Erro ao chamar método. RRS feed

  • Pergunta

  • Ola Pessoal,

       estou desenvolvendo uma nova aplicação e me deparei com a seguinte situação : criei uma classe que possuí 2 métodos : Preenche_Combobox e Retorna_DataReader. Gostaria de chamar o retorna_datareader no metodo Preenche_combobox me retornando o datareader mas não dá certo. Alguém poderia me ajudar ?

     

      public DataTable Preenche_Combobox (int banco, string sql, int tipo)
            {
                DbDataReader dr;
                DataTable dt = new DataTable();
                dr = Retorna_DataReader(banco, sql, tipo); // aqui está o erro o datareadere não consegue receber os dados do método chamado.
              
                dt.Load(dr, LoadOption.Upsert);
               
                return dt;
            }

     

      public DbDataReader Retorna_DataReader (int banco, string sql, int tipo)
            {
                DbDataReader dr;

                ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings[banco];
                if (settings != null)
                {
                    try
                    {
                        DbProviderFactory factory = DbProviderFactories.GetFactory(settings.ProviderName);
                        DbConnection cn = factory.CreateConnection();
                        cn.ConnectionString = settings.ConnectionString;

                        DbCommand cm = factory.CreateCommand();
                        cm.Connection = cn;

                        switch (tipo)
                        {
                            case 0 :
                                cm.CommandType = CommandType.Text;
                                break;
                            case 1:
                                cm.CommandType = CommandType.StoredProcedure;
                                break;
                            case 2:
                                cm.CommandType = CommandType.TableDirect;
                                break;
                        }

                        cm.CommandText = sql;
                        cn.Open();

                        dr = cm.ExecuteReader();
                        return dr;
                       
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Erro: " + ex.Message);
                    }
                }
                else
                {
                    throw new Exception("Erro ao acessar o Banco de Dados. \nPor favor tente novamente.");
                }
            }


    Michele Teixeira
    quarta-feira, 10 de novembro de 2010 18:15

Respostas

  • Olá Rogério!

          Acabei de achar o que era.. faltou definir o DisplayMember do combobox.

          de qq maneira obrigada pela ajuda..

     


    Michele Teixeira
    • Marcado como Resposta Michele Teixeira quarta-feira, 10 de novembro de 2010 19:15
    quarta-feira, 10 de novembro de 2010 19:15

Todas as Respostas

  • Michele,

    Qual seria o erro que esta acontecendo?

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 10 de novembro de 2010 18:21
    Moderador
  • Olá Rogério,

     Na verdade nenhuma mensagem de erro é emitida apenas o datareader não é preenchido na linha dr = Retorna_DataReader(banco, sql, tipo); Mas se consulto o método Retorna_DataReader o datareader dele foi preenchido corretamente, apenas no retorno do método preenche_combobox não é preenchido.

      public DataTable Preenche_Combobox (int banco, string sql, int tipo)
            {
                DbDataReader dr;
                DataTable dt = new DataTable();
                dr = Retorna_DataReader(banco, sql, tipo); // aqui está o erro o datareadere não consegue receber os dados do método chamado.
                dt.Load(dr, LoadOption.Upsert);
               
                return dt;
            }

    Grata,


    Michele Teixeira
    quarta-feira, 10 de novembro de 2010 18:41
  • Oi Michele,

    Pelo que estou vendo o código está certo, não tem motivo para o dr estar ficando nulo a não ser que alguma exceção estiver sendo gerada. Você tentou debugar para ver o que está acontecendo?

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 10 de novembro de 2010 18:48
    Moderador
  • Olá Rogério!

          Acabei de achar o que era.. faltou definir o DisplayMember do combobox.

          de qq maneira obrigada pela ajuda..

     


    Michele Teixeira
    • Marcado como Resposta Michele Teixeira quarta-feira, 10 de novembro de 2010 19:15
    quarta-feira, 10 de novembro de 2010 19:15