• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Bruno Escada

"A referencia de objecto nao foi definida como uma instancia de um objecto"

8 mensagens neste tópico

boas pessoal

mais uma vez tou com um problemas de  :wallbash:

o problema e o seguinte, tenho este codigo:

private void Modelos_Eco_List_SelectedIndexChanged(object sender, EventArgs e)

        {

            if (Modelos_Eco_List.SelectedValue != null)

            {

                int idI;

                string id = Modelos_Eco_List.SelectedValue.ToString();

                if (id != "")

                { 

                    try

                    { 

                        idI = Int32.Parse(id);

                        DataTable dtME = bdME.ModelosEcologicosSelect(idI);

                        DataTable dtMw = bdM.ModelosSelect(idI);

                        mod_eco = new Livraria.Modelos_Ecologicos(dtME);

                        preencheModeloEcogico();

                        mod = new Livraria.Modelos(dtMw);

                        preencheModelos();

                    }

                    catch (Exception o)

                    {

                        MessageBox.Show(o.ToString());

                    }

                }

            }

        }

quando na listbox eu faco o seleccionar de um elemento aparece-me uma menssagem com este erro:

"A referencia de objecto nao foi definida como uma instancia de um objecto"

e diz que o problema vem da linha com este codigo:

DataTable dtMw = bdM.ModelosSelect(idI);

alguem consegue me explicar qual é o problema?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ainda que não percebendo muito bem a sintaxe C#, arrisco a dizer que estás a usar uma variável sem lhe setares o valor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso aparece na messageBox não é? o idI tem sempre um valor válido porque é um int, int é value type logo no mínimo tem 0. Essa excepção deve estar a vir do método bdM.ModelosSelect(idI); e é apanhada nesse try catch! faz debug passo a passo ao método e vê que valor está a null e que não deveria estar... se não tiveres a ver mete aqui o código do método... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim aparece... exatamente isso... o metedo bdM.ModelosSelect(idI)

temeste codigo:

public DataTable ModelosSelect(int modelo_id)

        {

            string sql = "select m.modelo_nome, m.modelo_num_portas, m.modelo_m_cilindros, m.modelo_m_cilindrada, m.modelo_m_bmax, m.modelo_m_potmax, m.modelo_vmax, m.modelo_travoesDiant, m.modelo_travoesTras, m.modelo_dp_compExt, m.modelo_dp_largExt, m.modelo_dp_altExt, m.modelo_dp_distEixos, m.modelo_img1, m.modelo_img2, m.modelo_img3, m.modelo_img4, m.modelo_img5, m.modelo_img6 from modelo m where m.modelo_id=" + modelo_id;

            return select(sql);

        }

o select(sql) tem este codigo:

public DataTable select(string s) //devolve O DataSet correspondente

        {

            //connBD.dr = null;

            return connBD.select(s);

        }

o connBD.select(s) faz isto:

public DataTable select(string s)// Para fazer Bindings DATASET

        {

            try

            {

                SQLiteCommand cmd = new SQLiteCommand(s, conn);

                dr = cmd.ExecuteReader();

            }

            catch (Exception ex)

            {

                MessageBox.Show("Erro na ligação à Base de Dados!\r\n" + ex.ToString());

            }

            return convertDataReaderToDataSet(dr);

        }

será que tou a fazer algo errado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ainda que não percebendo muito bem a sintaxe C#, arrisco a dizer que estás a usar uma variável sem lhe setares o valor.

estou a setar valor com isto "bdM.ModelosSelect(idI)"

acima tou explicando o que faz este metedo e os que dependem dele

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já experimentaste correr o SQl que resulta da query "DataTable ModelosSelect(int modelo_id)" directamente numa janela de SQL.. só para despistar que o sql está a retornar resultados?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já experimentaste correr o SQl que resulta da query "DataTable ModelosSelect(int modelo_id)" directamente numa janela de SQL.. só para despistar que o sql está a retornar resultados?

obrigada pelo conselho mas o problema era outro.

esqueci-me de inicializar o bdM e depois pecisava de receber na query o modelo_id e nao o recebia.

por isso me dar os erros que dava.

Obrigada na mesma

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigada a todos que me ajudaram :thumbsup:

o Problema ja esta resolvido

eu esqueci-me de incializar a datatable bdM e depois na query nao recebia o modelo_id.

agora ja esta a funcionar.

vou voltar ao meu Projecto final de curso :P

vamos la ver se da para o 18 ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora