none
Error Radio Buton? RRS feed

  • Pregunta

  • Ojo al dato... . NET acaba conmigo... de este fin de semana no paso.

    Si esta checked el rblaszio ok, te da de alta el albaran, si esta checked el rbgenerica te peta la aplicacion ?¿?¿?¿? Alguien me lo explica?

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim conexion As New MySqlConnection("Server=localhost;Database=grupomontes;Uid=root;Pwd=;")
            Dim cn As New MySqlCommand("insert into albaranes (id_cliente,id_empresa,matricula,id_producto,bruto,tara,neto,fecha,hora,obra) values (?id_cliente,?id_empresa,?matricula,?id_producto,?bruto,?tara,?neto,?fecha,?hora,?obra)", conexion)
            txtempresa.Text = 1
            If rblaszio.Checked Then
                txtempresa.Text = "1"
            End If
            If rbgenerica.Checked Then
                txtempresa.Text = "2"
            End If
            cn.Parameters.AddWithValue("?id_cliente", lblcliente.Text)
            cn.Parameters.AddWithValue("?id_empresa", txtempresa.Text)
            cn.Parameters.AddWithValue("?matricula", txtmatricula.Text)
            cn.Parameters.AddWithValue("?id_producto", txtproducto.Text)
            cn.Parameters.AddWithValue("?bruto", txtbruto.Text)
            cn.Parameters.AddWithValue("?tara", lbltara.Text)
            cn.Parameters.AddWithValue("?neto", txtneto.Text)
            cn.Parameters.AddWithValue("?fecha", DateAndTime.Today)
            cn.Parameters.AddWithValue("?hora", DateAndTime.TimeValue(Now))
            cn.Parameters.AddWithValue("?obra", Txtobra.Text)
            Try
                conexion.Open()
                cn.ExecuteNonQuery()
                MsgBox("Albaran creado correctamente")
                'Dim frm As New Form1
                'frm.ShowDialog()
            Catch ex As Exception
                MsgBox("Rellena todos los campos", ex.Message)
            Finally
                conexion.Close()
                txtcliente.Text = ""
                txtbruto.Text = ""
                txtempresa.Text = ""
                txtmatricula.Text = ""
                txtnalbaran.Text = ""
                txtneto.Text = ""
                txtproducto.Text = ""
                lbltara.Text = ""
                Txtobra.Text = ""
                lblcliente.Text = ""
                lblempresa.Text = ""
                lblproducto.Text = ""
                cbclientes.Text = ""
            End Try

    Cuando esta cheked la opcion 2 me dice: "La conversión de la cadena "Cannot add or update a child row" en el tipo 'Integer' no es válida."

    ¿?¿?


    viernes, 1 de junio de 2012 9:58

Respuestas

  • "Gustavo Enriquez" escribió:

    > Si pongo el punto de interrupcion en la llama al
    > boton no llega a saltar! Da error antes.

    Dices que no se llega a entrar en el código existente en el evento Click del control Button1, porque el error se produce con anterioridad a dicho evento. ¿Es así?

    > "La conversión de la cadena "Cannot add or update
    > a child row" en el tipo 'Integer' no es válida."

    El error tiene toda la pinta de que estás queriendo convertir a Integer el mensaje de error devuelto por un objeto del tipo InvalidCastException. Desde luego, yo es la primera vez que leo ese mensaje de error. Y seguramente tendrás desactivada la instrucción Option Strict.

    Vamos a seguir haciendo conjeturas. ¿Por casualidad tienes enlazados los controles TextBox a un objeto BindingSource? Pero aunque sea así, me cuesta trabajo creer que por ejecutar

        txtEmpresa.Text = "2"

    se desencadene una InvalidCastException, aunque el tipo de dato del campo IdEmpresa sea Integer. Es muy raro lo que nos estás comentando.

    ¿Que tal si al comienzo del código fuente de ese formulario escribes?

       Option Strict On

    Lo mismo se llena tú código fuente de líneas onduladas azules, pero eso significa los errores de conversión que tienes, errores que deberás de corregir si deseas compilar tu aplicación. Por ejemplo, aquí tienes un error de conversión:

       txtempresa.Text = 1

    porque a la propiedad Text no se le puede especificar un valor Integer; tiene que se un valor String:

      txtempresa.Text = "1"

    Por cierto, ¿has hecho las modificaciones que te he indicado en otro mensaje anterior, en el evento Click del control llamado Button1?


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    viernes, 1 de junio de 2012 12:22

Todas las respuestas

  • Pero, ¿donde te da ese error?

    Atentamente, Sergio.

    Blog
    Twitter

    viernes, 1 de junio de 2012 10:10
  • No me marca donde Visual studio. me da cuando pulso el boton de ALTA de albaran tras rellenar los campos de texto, tiene que ser al meter los datos en la bbdd por que el boton no hace otra cosa.

    Pero lo raro es que si el error fuera como tal cuando marco la opcion uno lo unico que cambio es un "1" por un "2". Y solo me falla en este ultimo..

    viernes, 1 de junio de 2012 10:20
  • "Gustavo Enriquez" escribió:

    > Si esta checked el rblaszio ok, te da de alta el albaran,
    > si esta checked el rbgenerica te peta la aplicacion
    > ?¿?¿?¿?  Alguien me lo explica?

    Te lo podremos explicar si nos indicas primero si por casualidad estás ejecutando algún código en el evento CheckedChanged de esos controles RadioButton, porque por el código que ejecutas en el evento Click del control Button1, es imposible averiguar el motivo de dicho error.

    Si tienes instalado el evento CheckedChanged, pubica el código que se ejecuta en el mismo.

    Aprovecho el mensaje para indicarte que llames al método Dispose del objeto MySqlConnection una vez que cierres éste para destruir por completo el objeto:

        Finally
          conexion.Close()
          conexion.Dispose()

          ... Resto de código
     
        End Try

    Aunque lo mejor que puedes hacer es encerrar el código ejecutable entre un bloque Using ... End Using, tal y como muestro a continuación:

    Try Using conexion As New MySqlConnection( _ "Server=localhost;Database=grupomontes;Uid=root;Pwd=;") Dim cmd As MySqlCommand = conexion.CreateCommand() cmd.CommandText = "insert into albaranes (id_cliente," & _ "id_empresa,matricula,id_producto,bruto,tara,neto," & _ "fecha,hora,obra) values (?id_cliente,?id_empresa," &_ "?matricula,?id_producto,?bruto,?tara,?neto,?fecha," & _ "?hora,?obra)" If (rblaszio.Checked) Then txtempresa.Text = "1" ElseIf (rbgenerica.Checked) Then txtempresa.Text = "2" Else
              txtempresa.Text = "1"
    End If cmd.Parameters.AddWithValue("?id_cliente", lblcliente.Text) cmd.Parameters.AddWithValue("?id_empresa", txtempresa.Text) cmd.Parameters.AddWithValue("?matricula", txtmatricula.Text) cmd.Parameters.AddWithValue("?id_producto", txtproducto.Text) cmd.Parameters.AddWithValue("?bruto", txtbruto.Text) cmd.Parameters.AddWithValue("?tara", lbltara.Text) cmd.Parameters.AddWithValue("?neto", txtneto.Text) cmd.Parameters.AddWithValue("?fecha", DateAndTime.Today) cmd.Parameters.AddWithValue("?hora", DateAndTime.TimeValue(Now)) cmd.Parameters.AddWithValue("?obra", Txtobra.Text) conexion.Open() cmd.ExecuteNonQuery() MessageBox.Show("Albaran creado correctamente") 'Dim frm As New Form1 'frm.ShowDialog() End Using Catch ex As Exception MessageBox.Show("Rellena todos los campos", ex.Message) Finally             txtcliente.Clear()
                txtbruto.Clear()
                txtempresa.Clear()
                txtmatricula.Clear()
                txtnalbaran.Clear()
                txtneto.Clear()
                txtproducto.Clear()
                lbltara.Text = String.Empty
                Txtobra.Clear()
                lblcliente.Text = String.Empty
                lblempresa.Text = String.Empty
                lblproducto.Text = String.Empty
                cbclientes.Text = String.Empty
                End Try



    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.



    viernes, 1 de junio de 2012 10:32
  • "Gustavo Enriquez" escribió:

    > No me marca donde Visual studio. me da cuando pulso el boton de
    > ALTA de albaran tras rellenar los campos de texto, tiene que ser al
    > meter los datos en la bbdd por que el boton no hace otra cosa.

    Gustavo, así vamos avanzar más bien poco. :-(

    En lugar de hacer conjeturas, ¿por qué no indicas el código fuente que se ejecuta en el "botón de ALTA", si es ahí donde "metes los datos en la bbdd"?

    Ten en cuenta que TÚ ERES  la única persona que conoce el código fuente que se está ejecutando, ya que pocos "adivinos" vas a encontrar por estos mundos. :-D


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    viernes, 1 de junio de 2012 10:40
  • Buenas,

    no tengo ningún evento programado en los radio butons, solo al final cuando pulso el botón de alta si esta chequeado le asigno 1 ó 2 según la opción chequed.

    Mi gran duda es que si le paso el 1 funciona y solo cambiando por 2 no va...

    El codigo del boton lo tienes arriba en el primer post.

    P.D SoftJaen pasame un correo a guti2kk@hotmail.com que me gustaria poder contactar contigo aqui en Jaen para un tema. Te lo comento x mail.



    viernes, 1 de junio de 2012 10:57
  • Hola:

    El error dice que "no ha podido convertir un 'texto' en 'integer'".

    Como dices que solo te pasa cuando juegas con los Option Buttons, que son lo que modifican txtEmpresa.Text, yo te diría:

    ¿Has comprobado que valor tiene txtEmpresa.TXT cuando llegas a esta instrucción:

    cn.Parameters.AddWithValue("?id_empresa", txtempresa.Text) ?

    También comprobaría si tienes algun evento en txtEmpresa que haga 'algo' cuando cambias el valor.

    Cuando haces txtEmpresa.Text = "2", quizas estás haciendo algo en 'otro lado' (txtEmpresa_Change o similar).

    Saludos




    • Editado Focus Media viernes, 1 de junio de 2012 11:18
    viernes, 1 de junio de 2012 11:16
  • Buenas,

    txtempresa.text no tiene eventos programados.

    Dato curioso gracias a tu sugerencia.

    Si pongo el punto de interrupcion en la llama al boton no llega a saltar! Da error antes.

    viernes, 1 de junio de 2012 11:32
  • "Gustavo Enriquez" escribió:

    > Si pongo el punto de interrupcion en la llama al
    > boton no llega a saltar! Da error antes.

    Dices que no se llega a entrar en el código existente en el evento Click del control Button1, porque el error se produce con anterioridad a dicho evento. ¿Es así?

    > "La conversión de la cadena "Cannot add or update
    > a child row" en el tipo 'Integer' no es válida."

    El error tiene toda la pinta de que estás queriendo convertir a Integer el mensaje de error devuelto por un objeto del tipo InvalidCastException. Desde luego, yo es la primera vez que leo ese mensaje de error. Y seguramente tendrás desactivada la instrucción Option Strict.

    Vamos a seguir haciendo conjeturas. ¿Por casualidad tienes enlazados los controles TextBox a un objeto BindingSource? Pero aunque sea así, me cuesta trabajo creer que por ejecutar

        txtEmpresa.Text = "2"

    se desencadene una InvalidCastException, aunque el tipo de dato del campo IdEmpresa sea Integer. Es muy raro lo que nos estás comentando.

    ¿Que tal si al comienzo del código fuente de ese formulario escribes?

       Option Strict On

    Lo mismo se llena tú código fuente de líneas onduladas azules, pero eso significa los errores de conversión que tienes, errores que deberás de corregir si deseas compilar tu aplicación. Por ejemplo, aquí tienes un error de conversión:

       txtempresa.Text = 1

    porque a la propiedad Text no se le puede especificar un valor Integer; tiene que se un valor String:

      txtempresa.Text = "1"

    Por cierto, ¿has hecho las modificaciones que te he indicado en otro mensaje anterior, en el evento Click del control llamado Button1?


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    viernes, 1 de junio de 2012 12:22
  • Solucionado...

    Efectivamente el error venia de donde decía softjaen, el problema era que estaba trabajando con una versión antigua de la bbdd por que estaba en otro equipo y no había creado la otra empresa aun para las pruebas....

    SOFTJAEN: ponte en contacto conmigo por favor. Necesitamos gente para un proyecto que tenemos que hacer aqui en Jaen, si estas trabajando lo podrías hacer en tu tiempo libre y sino pues ya tienes para trabajar. Dime algo pronto que tenemos que comenzar el proyecto ya. Sino pudieras

    y conocieras algún programador aqui en Jaen para hacerlo pasanos sus datos. Condiciones a convenir entre las partes.

    Contacta en guti2kk@hotmail.com

    Salu2


    lunes, 4 de junio de 2012 10:18