none
La cadena de entrada no tiene el formato correcto. RRS feed

  • Pregunta

  • Hola que tal, tengo un pequeño problema al momento de "Editar" en un form me manda el siguiente mensaje

    "Información adicional: La cadena de entrada no tiene el formato correcto."

    Me gustaría conocer cual es mi error, He buscado por internet mi error pero ninguno me da la solucion, he intentado cambiar el formato de dtpFecha pero nada, como información adicional este campo dentro de la base de datos se encuentra como datetime

    Utilizo visual studio 2013,sql server 2012

    Tengo el siguiente código ya preparado para el query...

    public static int  ActualizarEquipos(int id,String Nombre,String Marca,String Modelo,String No_Serie,String Garantia, DateTime FechaCompra, String Proveedor, String Comentarios,DateTime FechaGarantia, String N_Factura)
            {
               // string Fecha1 = FechaCompra.ToString("yyyyMMdd");
                //string Fecha2= FechaGarantia.ToString("yyyyMMdd");
                int retorno = 0;
                //try
                //{
                using (SqlConnection conexion = DB.ObtenerConexion())
                {

                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conexion;
                    cmd.CommandTimeout = 1000;
                    cmd.CommandText = "Update EquiposGral set Nombre=@Nombre, Marca=@Marca, Modelo=@Modelo, No_Serie=@No_Serie, Garantia=@Garantia, FechaCompra=@FechaCompra, Proveedor=@Proveedor, Comentarios=@Comentarios, FechaGarantia=@FechaGarantia,N_Factura=@N_Factura where Id="+id+"";



                    cmd.Parameters.AddWithValue("@Nombre", Nombre);
                    cmd.Parameters.AddWithValue("@Marca", Marca);
                    cmd.Parameters.AddWithValue("@Modelo", Modelo);
                    cmd.Parameters.AddWithValue("@No_Serie", No_Serie);
                    cmd.Parameters.AddWithValue("@Garantia", Garantia);
                    cmd.Parameters.AddWithValue("@FechaCompra", FechaCompra);
                    cmd.Parameters.AddWithValue("@Proveedor", Proveedor);
                    cmd.Parameters.AddWithValue("@Comentarios", Comentarios);
                    cmd.Parameters.AddWithValue("@FechaGarantia", FechaGarantia);
                    cmd.Parameters.AddWithValue("@N_Factura", N_Factura);

                    retorno = cmd.ExecuteNonQuery();
                    if (retorno > 0)
                    {
                        MessageBox.Show("Actualizado correctamente", "Administrador", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    conexion.Close();
                }
                //}
                //catch (Exception ex)
                //{
                //    MessageBox.Show(ex.Message, "ERROR");
                //}

                return retorno;

    --------------------------------------------------------------------------------------------------

    En este otro mando a llamarlo y aqui es donde se produce el error

    private void btGuardarCam_Click(object sender, EventArgs e)
            {

               

                if (txtNombre.Text == "")
                {
                    MessageBox.Show("Es necesario colocar un Nombre para guardar.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtNombre.Focus();

                }
                else if (txtMarca.Text == "")
                {
                    MessageBox.Show("Es necesario colocar una Marca para guardar.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

                    txtMarca.Focus();
                }
                else if(dtpFechaCompra.Text.Length == 0)
                {
                    MessageBox.Show("Fecha Compra Obligatoria.","Advertencia",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
                    dtpFechaCompra.Focus();
                }
                else if(dtpFechaGarantia.Text.Length == 0)
                {
                    MessageBox.Show("Fecha  de Garantia Obligatoria.","Advertencia",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
                    dtpFechaGarantia.Focus();
                }
                else
                {

                    EquiposM.ActualizarEquipos(int.Parse(txtId.Text),txtNombre.Text,txtMarca.Text,txtModelo.Text,txtNoSerie.Text,cmbGarantia.SelectedItem.ToString(),Convert.ToDateTime(dtpFechaCompra),txtProveedor.Text,txtComentarios.Text,Convert.ToDateTime(dtpFechaGarantia),txtNFactura.Text);
                }

    }

    sábado, 22 de junio de 2019 14:23

Respuestas

  • Un sitio donde te puede estar dando el error es este:

    Convert.ToDateTime(dtpFechaGarantia)

    fíjate que estás convirtiendo a DateTime el propio dtp, que es un "object", y el object no se puede convertir a DateTime. Seguramente lo que querías es el .Value del dtp, que sí que es de tipo DateTime (y por lo tanto no requiere ninguna conversión, así que puedes ahorrarte el Convert). Simplemente pon dtpFechaGarantia.Value.

    El otro sitio donde puede ocurrir un error es aquí:

    int.Parse(txtId.Text)

    Si el txtId contiene algo que no se reconozca como int (incluyendo si está vacío), entonces sale el error que estás viendo.

    sábado, 22 de junio de 2019 16:05
    Moderador