Jump to content
Sign in to follow this  
diogom

a referência de objeto não foi definida como uma instância de um objecto

Recommended Posts

diogom

Olá,

Tenho o seguinte código:

OleDbCommand cmd = new OleDbCommand("SELECT top 1 InicInt FROM BlFactManuais where Loja ='" + DropLoja2.SelectedItem.Text + "'and Estado ='Aberto'", conn);
			 OleDbCommand cmd2 = new OleDbCommand("SELECT top 1 FimInt FROM BlFactManuais where Loja ='" + DropLoja2.SelectedItem.Text + "'and Estado ='Aberto'", conn);

			 Count = (int)cmd.ExecuteScalar();
			 Count2 = (int)cmd2.ExecuteScalar();

			 cmd.Connection = conn;
			 cmd.ExecuteNonQuery();
			 cmd2.Connection = conn;
			 cmd2.ExecuteNonQuery();
			 conn.Close();

O problema é quando os dois counts vêm sem nada da´-me erro: a referência de objeto não foi definida como uma instância de um objecto.

Se coloco a verificação antes, retorna sempre como null. Se meto dp, dá-me sempre o tal erro.

Como faço a verificação?

Share this post


Link to post
Share on other sites
nelsonr

Provavelmente um desses select não está a retornar nenhum registo, e o ExecuteScalar retorna um objecto com null, e estas a fazer o cast para int.

Edited by nelsonr

Share this post


Link to post
Share on other sites
diogom

Provavelmente um desses select não está a retornar nenhum registo, e o ExecuteScalar retorna um objecto com null, e estas a fazer o cast para int.

Não está. Como faço para dar uma mensagem a dizer que não existe registos.

Share this post


Link to post
Share on other sites
nelsonr

Poes a variavel Count do tipo object. Depois fazes algo assim:

Count = cmd.ExecuteScalar();
if(Count!=null)
{
   // Aqui já podes usar o cast para int
}

Share this post


Link to post
Share on other sites
diogom

Poes a variavel Count do tipo object. Depois fazes algo assim:

Count = cmd.ExecuteScalar();
if(Count!=null)
{
// Aqui já podes usar o cast para int
}

Isso já tinha feito. Como tinha dito na criação do tópico, quando meto uma mensagem dp dá-me erro. Executa esta linha Count = (int)cmd.ExecuteScalar(); e como vem null passa para o catch

Share this post


Link to post
Share on other sites
nelsonr

Isso já tinha feito. Como tinha dito na criação do tópico, quando meto uma mensagem dp dá-me erro. Executa esta linha Count = (int)cmd.ExecuteScalar(); e como vem null passa para o catch

Mas leste o que escrevi?

Não poes o casts ai, só fazes o cast depois de confirmares que a variavel não é null.

Share this post


Link to post
Share on other sites
diogom

Mas leste o que escrevi?

Não poes o casts ai, só fazes o cast depois de confirmares que a variavel não é null.

Desculpa, com a pressa n reparei bem. Só falta o object antes do Count. :thumbsup:

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.