Autor Tema: Visual Basic 2012 (Pregunta) Botón de agregar a Datagridview conectado a access  (Leído 11691 veces)

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
hola Yo otra vez con mis preguntas de Visual Basic 2012, esta vez tengo un problema con mi botón de agregar, tengo que decir que lo que quiero es hacerlo y como es lógico, que no haya cabida a errores, este es mi código:

Código: [Seleccionar]
''BOTON NUEVO REGISTRO''-----------------Error, solo envia el ultimo try
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        If Cod_puestoTextBox.Text = Text And Nom_puestoTextBox.Text = Text And Sal_nivel1TextBox.Text = Text And Sal_nivel2TextBox.Text = Text And Sal_nivel3TextBox.Text = Text And Sal_nivel4TextBox.Text = Text And Sal_nivel5TextBox.Text = Text Then
            Me.Esc_SalarialTableAdapter.Insertar(Cod_puestoTextBox.Text, Nom_puestoTextBox.Text, Sal_nivel1TextBox.Text, Sal_nivel2TextBox.Text, Sal_nivel3TextBox.Text, Sal_nivel4TextBox.Text, Sal_nivel5TextBox.Text)
   

        ElseIf Cod_puestoTextBox.Text = "" And Nom_puestoTextBox.Text = "" And Sal_nivel1TextBox.Text = "" And Sal_nivel2TextBox.Text = "" And Sal_nivel3TextBox.Text = "" And Sal_nivel4TextBox.Text = "" And Sal_nivel5TextBox.Text = "" Then
            Try
                Esc_SalarialDataGridView.Update()
                MsgBox("Debe insertar los datos requeridos.")
                Esc_SalarialTableAdapter.Dispose()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            Try
                Esc_SalarialDataGridView.Update()
                MsgBox("Inserte todos los datos.")
                Esc_SalarialTableAdapter.Dispose()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End If
        Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)

        Me.BindingContext(Esc_SalarialBindingSource).Position =
        Me.BindingContext(Esc_SalarialBindingSource).Count - 1
        Esc_SalarialDataGridView.Text = Me.BindingContext(Esc_SalarialBindingSource).Position

    End Sub

y lo que me acongoja esque a mi parecer esta bien pero obviamente no lo esta porque el programa no agrega, bueno, voy a explicar de forma simple cada parte del código para q me entiendan.
  Este es el primer IF que según yo, dice q si en todos los textbox hay textos(valga la redundancia) pues que los agregue a las columnas respectivas:

Código: [Seleccionar]
If Cod_puestoTextBox.Text = Text And Nom_puestoTextBox.Text = Text And Sal_nivel1TextBox.Text = Text And Sal_nivel2TextBox.Text = Text And Sal_nivel3TextBox.Text = Text And Sal_nivel4TextBox.Text = Text And Sal_nivel5TextBox.Text = Text Then
            Me.Esc_SalarialTableAdapter.Insertar(Cod_puestoTextBox.Text, Nom_puestoTextBox.Text, Sal_nivel1TextBox.Text, Sal_nivel2TextBox.Text, Sal_nivel3TextBox.Text, Sal_nivel4TextBox.Text, Sal_nivel5TextBox.Text)

  El siguiente es el primer Elseif, lo hize asi para solucionar el error que daba si usaba el botón sin agregar datos, lo que hace esque si no hay datos en ningún textbox envía un msj:

Código: [Seleccionar]
ElseIf Cod_puestoTextBox.Text = "" And Nom_puestoTextBox.Text = "" And Sal_nivel1TextBox.Text = "" And Sal_nivel2TextBox.Text = "" And Sal_nivel3TextBox.Text = "" And Sal_nivel4TextBox.Text = "" And Sal_nivel5TextBox.Text = "" Then
            Try
                Esc_SalarialDataGridView.Update()
                MsgBox("Debe insertar los datos requeridos.")
                Esc_SalarialTableAdapter.Dispose()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

  Este es el Else (por cierto acá cierra el ciclo If), ya con los anteriores le e dicho al programa que debe hacer en caso de que tenga toda la información en los txtbox, y que hacer en caso que no le escriban nada; sin embargo da un error si se inserta texto en algún txtbox y nada en otros, evitar ese error es mi objetivo con este Else:

Código: [Seleccionar]
Else
            Try
                Esc_SalarialDataGridView.Update()
                MsgBox("Inserte todos los datos.")
                Esc_SalarialTableAdapter.Dispose()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End If

  A mi parecer el programa debería interpretar esto de esta manera" si tengo todos los datos, los agrego al datagridview; si no tengo nada, entonces envío un msj, y si no se da el primer caso ni el segundo, pues hago el tercero q es enviar otro msj, porque si no es gallo es gallina"

No le e indicado al programa específicamente que haga el Else en caso que hayan algunos datos en txtsbox y en otros no, pero debería funcionar bien creo yo, pero no es asi, si yo pruebo el programa, y no agrego nada a los texbox al tocar el botn hace lo q deberia hacer, si lo pruebo de nuevo y agrego informacion en algun texbox y en otro(s) no; también hace lo q debe hacer...osea que el segundo y tercer caso funcionan bien, pero si agrego información a todos los textbox y toco el botón me tira el msj como si no estuviese agregando a todos, osea se da el tercer caso y eso no tiene sentido  :(

El resto de código que no explique es para actualizar y mantener la ultima posición, pero si funciona bien esa parte :)

Gracias por tomarse el tiempo de leer este tema y si me pueden ayudar lo agradecería mucho, espero haberme explicado bien

Saludos !!
« Última modificación: 03 de Noviembre 2014, 10:05 por Ogramar »

Príncipe_Azul

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
    • Foro ArgentinaIRC - Ayuda de Programación General, IRC y mIRC Scripting!
Hola, buenas tardes, una pregunta:

¿Aquí no olvidaste definir el valor?:

Código: [Seleccionar]
        Me.BindingContext(Esc_SalarialBindingSource).Position =
Saludos!

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Parece, pero no :) sucede que esa parte es únicamente para que al agregar un registro nuevo, el cursor se posicione en el final del datagrid, de lo contrario siempre se posicionaría al principio porque tiene la linea de actualizar antes... Sim embargo eso si me funciona, ya confirme que el error esta en la primer linea del If al parecer debo indicar lo mismo que estoy intentando indicar ahi pero de otra manera.
Espero haberme explicado y aclarado la duda :)

Saludos !!

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2640
    • Ver Perfil
Hola, has escrito:

If Cod_puestoTextBox.Text = Text And Nom_puestoTextBox.Text = Text And Sal_nivel1TextBox.Text = Text And Sal_nivel2TextBox.Text = Text And Sal_nivel3TextBox.Text = Text And Sal_nivel4TextBox.Text = Text And Sal_nivel5TextBox.Text = Text Then

¿A qué se refiere Text? Lo digo porque Text es una palabra clave en visual basic, ¿la tienes definida como variable? ¿en qué código está definida como variable (pega ese código para poder verlo...)?

Salu2

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
no esta definido como variable, lo que intento es decirle al programa-si todos los textbox tienen algo escrito, agréguelos al datagrid.. yo se que el error esta en esa linea pero no se cual es la forma correcta de decirlo, me puedes ayudar?

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2640
    • Ver Perfil
Hola, ¿si tienen algo escrito? Eso tendrías que escribirlo como

If Cod_puestoTextBox.Text And Nom_puestoTextBox.Text

ó como

If Cod_puestoTextBox.Text <> "" And Nom_puestoTextBox.Text <> ""

Donde "" indica que está vacío (que no tiene texto)

Salu2

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Haciéndolo de la primera forma lo intente pero da este error:

No se controló InvalidCastException en la línea:

If Cod_puestoTextBox.Text And Nom_puestoTextBox.Text And Sal_nivel1TextBox.Text...
« Última modificación: 14 de Octubre 2015, 13:03 por Alex Rodríguez »

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Amigo gracais ya me funciona (Y) lo hize con la segunda forma y me sirvio xD jeje muchas gracias (Y) de verdad

Saludos !!!

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2640
    • Ver Perfil
Me alegro que te haya funcionado, ten en cuenta que esto es una cuestión básica y ahí no deberías tener problemas. Te recomiendo que sigas este curso para repasar las cuestiones básicas: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

Salu2

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Gracias, el problema en mi caso esq nunca habia programado en visual studio 2012, hasta q me dieron un proyecto que incluía bases de datos en access, para darles mantenimiento desde el programa q se suponía yo, alguien sin conocimiento en ese lenguaje tenia q hacer... acá en este foro e conseguido mucha ayuda se los agradezco mucho, y gracias por el tuto (Y)

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Por cierto tengo un problema con el botón de guardar y creo q metí la pata mas de lo que debía, cuando haces un programa en visual studio 2012 y tienes un error en alguna parte, el mismo programa te lo subraya, y al poner el cursor encima de da opciones de corrección, por ejemplo, crear automáticamente códigos auxiliares o de otros tipos en especifíco, bueno el asunto esq tenia un error en un par de variables y pues utilice esa "ayuda" automática por así decirle y entonces me di cuenta que igual no solucionaba nada, sino que ya no los marca como error pero igual estan mal y ahora necesito volver a tener esos errores para corregirlos como se debe, pero el supuesto código auxiliar que crea el programa no aparece en el código que yo hago; donde lo puedo ver y eliminar para que todo vuelva a como estaba???

gracias y Saludos Ogramar !!

Mastermind

  • Experto
  • *****
  • Mensajes: 540
    • Ver Perfil
Hola! Si el programa no te marca error es que no lo detecta, lo recomendable si quieres poder volver a versiones anteriores es que vayas haciendo copias de seguridad cada cierto tiempo, por ejemplo cada 3 días. Saludos!!

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Hola Mastermind, en otras palabras no puedo repararlo ya ????
gracias Saludos !!

Mastermind

  • Experto
  • *****
  • Mensajes: 540
    • Ver Perfil
Si no sabes lo que quieres reparar, ni qué error es el que produce en el programa, ni cómo encontrar lo que quieres reparar... pues no veo cómo hacerlo. Otra cosa es si tienes un problema en el programa ¿Tienes algún problema en el programa (a la hora de su funcionamiento)?

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Pues si, estoy frito entonces... aunq se me ocurrio una posible solucion: intente hacerlo todo de nuevo, en un Form en blanco, y copie la parte grafica y la pegue, y copie el codigo y lo pegue, y como era de esperar habian muchos errores, pero entonces cree las mismas consultas con los mismos nombres y todo igual, y conecte a la misma base de datos en fin hice todo exactamente igual, pero ahora el error me lo da en los tableadapter, en los dataset, y esas cosas, no me los reconoce, pero si hice todo igual porq pasa esto???

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2640
    • Ver Perfil
Posiblemente porque hay aspectos de configuración que no hayas introducido. Por ejemplo cuando creas un datagrid puedes establecer a través de menús de configuración con qué base de datos va a estar ligado el datagrid, si no lo has especificado, no te reconocerá la base de datos con la que enlaza y te dará errores. Igual que esto hay otros aspectos de configuración que se pueden establecer a través de menús gráficos y eso no figura en el código. Salu2

Lepizz

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Bueno lo hice todo desde el principio y me funciono por fin... ;D ;D ya lo pude solucionar (Y) :D :D :D estoy tan contento que podria irme de festa y llevarme a todos los que me ayudaron jajaj gracias  :D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".