Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Lepizz en 02 de Noviembre 2014, 14:41
-
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:
''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:
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:
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:
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 !!
-
Hola, buenas tardes, una pregunta:
¿Aquí no olvidaste definir el valor?:
Me.BindingContext(Esc_SalarialBindingSource).Position =
Saludos!
-
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 !!
-
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
-
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?
-
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
-
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...
-
Amigo gracais ya me funciona (Y) lo hize con la segunda forma y me sirvio xD jeje muchas gracias (Y) de verdad
Saludos !!!
-
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
-
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)
-
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 !!
-
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!!
-
Hola Mastermind, en otras palabras no puedo repararlo ya ????
gracias Saludos !!
-
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)?
-
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???
-
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
-
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