none
La conversión de la cadena "" en el tipo 'Integer' no es válida. No se controló System.InvalidCastException RRS feed

  • Pregunta

  • Hola de nuevo pues bueno resulta que todo iba bien asta que se me produjo el error, tengo medio entendido que el error es un campo de tipo interger pero este según las conversiones debería de estar bien... cabe destacar que el error solo se encuentra en la consulta de actualizar inventario, mi consulta de insertar solicitud esta bien

    eh aquí el código.. espero me puedan decir mi error 

     Private Sub Generar_Solicitud_Click(sender As Object, e As EventArgs) Handles Generar_Solicitud.Click
            If Convert.ToInt32(Cantidad_de_productos_solicitadosTextBox.Text) > Convert.ToInt32(ExistenciaTextBox.Text) Then
                MessageBox.Show("No se puede prestar más de la cantidad disponible")
                Return
            ElseIf Convert.ToInt32(Cantidad_de_productos_solicitadosTextBox.Text) <= Convert.ToInt32(ExistenciaTextBox.Text) Then
                MessageBox.Show("Procesando solicitud")
                If Tipo_de_prestamoTextBox.Text = "Interno" Then

                    Dim con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Control_laboratorio_alimentos_y_bebidas_CECyT\base_de_datos_laboratorio_de_alimentos.accdb;Persist Security Info=False;")
                    con.Open()

                    Dim cmd As New OleDb.OleDbCommand("INSERT INTO Solicitudes_alumnos (Matricula_alumno,Número_de_solicitud,Nombre_del_alumno,Codigo_del_producto,Nombre_de_producto,Tipo_de_prestamo,Cantidad_de_productos_solicitados,Fecha_de_solicitud,Fecha_de_cancelación,Estado_de_prestamo,Codigó_de_reporte,Docente_responsable) VALUES(@Ma,@Ns,@Nom,@Cod,@Nomp, @Tp, @Cant ,@Fs,@Fc,@Est,@Codr,@Dr)", con)
                    cmd.Parameters.Add("@Ma", OleDb.OleDbType.VarChar).Value = Matricula_alumnoTextBox.Text
                    cmd.Parameters.Add("@Ns", OleDb.OleDbType.VarChar).Value = Número_de_solicitudTextBox.Text
                    cmd.Parameters.Add("@Nom", OleDb.OleDbType.VarChar).Value = Nombre_del_alumnoTextBox.Text
                    cmd.Parameters.Add("@Cod", OleDb.OleDbType.VarChar).Value = Codigo_del_productoTextBox1.Text
                    cmd.Parameters.Add("@Nomp", OleDb.OleDbType.VarChar).Value = Nombre_de_productoTextBox1.Text
                    cmd.Parameters.Add("@Tp", OleDb.OleDbType.VarChar).Value = Tipo_de_prestamoTextBox.Text
                    cmd.Parameters.Add("@Cant", OleDb.OleDbType.VarChar).Value = Cantidad_de_productos_solicitadosTextBox.Text
                    cmd.Parameters.Add("@Fs", OleDb.OleDbType.VarChar).Value = Fecha_de_solicitudDateTimePicker.Text
                    cmd.Parameters.Add("@Fc", OleDb.OleDbType.VarChar).Value = Fecha_de_cancelaciónDateTimePicker.Text
                    cmd.Parameters.Add("@Est", OleDb.OleDbType.VarChar).Value = Estado_de_prestamoTextBox.Text
                    cmd.Parameters.Add("@Codr", OleDb.OleDbType.VarChar).Value = Codigó_de_reporteTextBox.Text
                    cmd.Parameters.Add("@Dr", OleDb.OleDbType.VarChar).Value = Docente_responsableTextBox.Text

                    If cmd.ExecuteNonQuery() > 0 Then
                        MsgBox("Producto guardado")
                        NExistencia.Text = Convert.ToInt32(ExistenciaTextBox.Text) - Convert.ToInt32(Cantidad_de_productos_solicitadosTextBox.Text)
                        ExistenciaTextBox.Text = Val(NExistencia.Text)
                        Prestamo_internoTextBox.Text = Cantidad_de_productos_solicitadosTextBox.Text (###aqui se encuentra el problema###)
                        Me.Inventario_laboratorioTableAdapter.Consulta_modificar_inventario_laboratorio(Codigo_del_productoTextBox.Text, Nombre_de_productoTextBox.Text, Numero_inventarioTextBox.Text, Numero_serieTextBox.Text, MarcaTextBox.Text, NExistencia.Text, Prestamo_internoTextBox.Text, Prestamo_externoTextBox.Text, AdeudosTextBox.Text, RecuperacionTextBox.Text, CostoTextBox.Text, PropiedadTextBox.Text, Codigo_del_productoTextBox.Text)
                        Me.Inventario_laboratorioTableAdapter.Fill(Me.Base_de_datos_laboratorio_de_alimentosDataSet.Inventario_laboratorio)
                        If Tipo_de_prestamoTextBox.Text = "Externo" Then
                            'Operación inversa a la anterior
                        End If
                    End If
                End If
            End If


        End Sub

    miércoles, 24 de mayo de 2017 0:24

Respuestas

Todas las respuestas

  • Hola Azturk Seyer

     en el tipo 'Integer' no es válida. No se controló System.InvalidCastException

    Se está especificando que estás realizando una operación de enteros y lo deseas almacenar en un formato no entero, tal es el caso de esta línea: 

    Donde le especificas restar convirtiendo tus dos controles a enteros pero no dándole el formato de string para almacenarlo en otro control textbox, debería quedar así:

    NExistencia.Text = (Convert.ToInt32(ExistenciaTextBox.Text) - Convert.ToInt32(Cantidad_de_productos_solicitadosTextBox.Text)).ToString()
    Saludos



    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    miércoles, 24 de mayo de 2017 2:12
  • Hola podrias tratar de castear el número a Int y si no funciona poner un valor por default

    https://www.dotnetperls.com/parse

    https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Saludos. Lima-Perú.

    miércoles, 24 de mayo de 2017 14:28
  • Realizo la conversión como me recomendaste pero sigue el error, gracias amigo 

    miércoles, 24 de mayo de 2017 23:19
  • Hola Azturk Seyer

    Sería ideal que coloques un punto de interrupción y realices un debug y exactamente en donde aparece el mensaje de error, tomes una captura de pantalla y la adjuntes para poder orientarte mejor.

    Estaremos a la espera

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    miércoles, 24 de mayo de 2017 23:33