0

Tengo este método para eliminar dentro de mi clase StockMetodos

public static int Eliminar(int codDetalleCompra)
        {
            int retorno = 0;
            MySqlConnection conexion = ConexionBD.ObtenerConexion();

            MySqlCommand comando = new MySqlCommand(string.Format("Delete from detalledecompra where CodigoDetalleCompra='{0}'", codDetalleCompra ), conexion);

            retorno = comando.ExecuteNonQuery();
            conexion.Close();

            return retorno;

        }

y esto para que el botón eliminar ejecute:

private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Esta seguro de que desea eliminar la compra?", "Esta seguro?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (StockMetodos.Eliminar(compraStock.CodigoDetalleCompra) > 0)
                {
                    MessageBox.Show("Compra eliminada correctamente", "Compra eliminada", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    MessageBox.Show("No se pudo eliminar la compra", "Compra no eliminada", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            else
                MessageBox.Show("Se cancelo la eliminacion", "Eliminacion cancelada", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

a la hora de ejecutar me sale el error:

"System.NullReferenceException: 'Referencia a objeto no establecida como instancia de un objeto.'

StockBD.Form1.compraStock.get devolvió null."

¿Qué esta mal?

Paola
  • 1
  • 1
  • de donde sale `compraStock` ? o sea como lo instancias y asignas el valor de CodigoDetalleCompra – Leandro Tuttini May 10 '19 at 23:56
  • este codigo esta conectado a una base de datos en dbforge for my sql, el comprastock viene de esa clase public DetalleDeCompra compraStock { get; set; } – Paola May 10 '19 at 23:57
  • pero si te retorna null quiere decir que en la db ese campo puede no tener ningun dato, quizas debas agregar la validacion – Leandro Tuttini May 11 '19 at 00:29
  • Bienvenido a Stack Overflow en español! Mira [ask] para que tu pregunta sea mejor recibida. También, aprovecha y haz el [tour] para entender mejor cómo funcionamos y de paso obtener tu primera [medalla](https://es.stackoverflow.com/help/badges)! – gbianchi May 11 '19 at 05:04

1 Answers1

0

En el método Eliminar la linea de

MySqlConnection conexion = ConexionBD.ObtenerConexion();

ConexionDB.ObtenerConexion(); ¿es estática? de lo contrario deberias poner

MySqlConnection conexion = new ConexionBD.ObtenerConexion();

Estaría bueno que hagas lo siguiente:

Proba hacer lo siguiente en la clase:

    public static int Eliminar(int codDetalleCompra)
    {
        int retorno = 0;
        try
        {

            MySqlConnection conexion = ConexionBD.ObtenerConexion();

            MySqlCommand comando = new MySqlCommand(string.Format("Delete from detalledecompra where CodigoDetalleCompra='{0}'", codDetalleCompra), conexion);

            retorno = comando.ExecuteNonQuery();
            conexion.Close();

            return retorno;
        }
        catch (Exception ex)
        {
           //Debugguear el ex y mirar el obj StackTrace copiar y pegar el codigo debajo para saber donde es el error
        }


    }
        retorno = comando.ExecuteNonQuery();
        conexion.Close();
}catch(Exception ex)
{
//aca debuggea Ex y mira el obj de StackTrace y por favor copia el mensaje de error.
}



        return retorno;

    }
jachguate
  • 25,659
  • 7
  • 35
  • 61
  • cual es la solucion que le propones? basicamente le indicas que uses el try..catch para caprutar un error que ya conoce porque lo menciona en la pregunta – Leandro Tuttini May 11 '19 at 01:35
  • trae mas errores :/ – Paola May 11 '19 at 02:42
  • El metodo ObtenerConexion eue devuelve ademas es estático ?. no funcina por que quedo dos veces el catch igual me gustaria saber que dice la variable ex en el objeto Stacktrace – Jeff Fernando May 11 '19 at 03:21