Jump to content

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


Bruno Escada

Recommended Posts

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

Link to comment
Share on other 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... 😉

Link to comment
Share on other 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?

Link to comment
Share on other 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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.