Hola a todos.
Necesito ayuda, estoy haciendo una agenda con VS 2005, con botones Nuevo y Guardar.
El código del Botón Nuevo.
Dim newContactoRow As GenteDataSet.ContactoRow --------------->(1)
newContactoRow = GenteDataSet.Contacto.NewContactoRow() ---->(2)
GenteDataSet.Contacto.Rows.Add(newContactoRow)---------------->(3)
NombreTextBox.Text = ""
ApellidosTextBox.Text = ""
NombreTextBox.Focus()
El código del Botón Guardar.
Try
Me.Validate()
Me.CustomersBindingSource.EndEdit()----------------------------------->(4)
Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
MsgBox("Update successful")
NombreTextBox.Text = ""
ApellidosTextBox.Text = ""
NombreTextBox.Focus()
Catch ex As Exception
MsgBox("Update failed")
End Try
Cuando corro el programa tal y como arriba indiqué, no guarda nada.
Cuando cambio el EndEdit por Addnew en la línea de código 4; corro el programa, no guarda el primer registro, el segundo sí, y así sucecivamente. El BD deja un registro en blanco entre cada regsitro.
Cuando elimino las líneas de código 1, 2 y 3; y cambio el EndEdit por AddNew en la línea 4; corro el programa y comienzo a ingresar datos, el primer registro no lo guarda, el segundo, sí, y así sucesivamente.
Cuando no modifico nada del código mostrado arriba, hago click en Nuevo y aparta espacio en la BD y guarda el registro, pero cuando vuelvo a guardar un registro nuevo, edita el registro que guarde anteriormente.
Lo que quiero hacer es guardar los datos a la primera y que no modifique los registros ya guardados.
Podrián indicarme que estoy haciendo mal?
De antemano muchas gracias!!!
Alverigk
Ayuda con botones
Moderador: Moderadores
- Carola77
- Senior
- Mensajes: 111
- Registrado: Mié Abr 04, 2007 3:13 am
- Ubicación: CHILE - El país mas hermoso del Mundo
bueno veremos si esto te sirve un pco, yo siemore aconsejo inclusive cuando hice clases que en el boton NUEVO solo debes limpiar y enviar el foco, que solo haga eso porque si le colocas un ADDnew creara un registro en blanco y despues podras grabar sin problemas pero deberas validar los sigieuntes casos.
- que el usuario se haya equivocado al apretar el boton.
- a ver apretado el boton y comienzas la escritura de campos y se cae el sistema o se corta la luz. etc.
podrias hacerlo de la siguiente forma
' al iniciar el form y llamarlo bloquea todo
FORM LOAD
NombreTextBox.enabled =false
ApellidosTextBox.enabled = false
NombreTextBox.enabeld=false
cmd_nuevo.enabled=true
cmd_nuevo.focus()
END
El código del Botón Nuevo.
PRIVATE SUB CMD_NUEVO()
NombreTextBox.enabled =TRUE
ApellidosTextBox.enabled = TRUE
NombreTextBox.enabeld=TRUE
NombreTextBox.TEXT =""
ApellidosTextBox.TEXT =""
NombreTextBox.TEXT=""
CMD_GRABAR.ENABLED=TRUE
NOMBRETEXTBOX.FOCUS()
END
PRIVATE CMD_GRABAR()
IF MSGBOX("Seguro de Realizar la Grabación","GRABACION DE DATOS"==YESOK THEN
Dim newContactoRow As GenteDataSet.ContactoRow --------------->(1)
newContactoRow = GenteDataSet.Contacto.NewContactoRow() ---->(2)
GenteDataSet.Contacto.Rows.Add(newContactoRow)---------------->(3)
Try
Me.Validate()
Me.CustomersBindingSource.EndEdit()----------------------------------->(4)
Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
MsgBox("Update successful")
NombreTextBox.Text = "" :NOMBRETEXTBOX.ENABLED=FALSE
ApellidosTextBox.Text = "" :APELLIDOSTEXTBOX.ENABLED=FALSE
CMD_NUEVO.Focus()
Catch ex As Exception
MsgBox("Update failed")
End Try
ELSE
NombreTextBox.Text = "" :NOMBRETEXTBOX.ENABLED=FALSE
ApellidosTextBox.Text = "" :APELLIDOSTEXTBOX.ENABLED=FALSE
CMD_NUEVO.Focus()
ENDIF
END
en el anterior limpiabas y grababas por eso quedaba 1 registro en blanco y otro no, por eso dividi en dos porcedimientos en el cual el boton GRABAR habre la base de datos y pregunta si lo graba si esta afirmacion es correcta realiza la grabacion en caso contrario limpia los controles y vuelve al boton Nuevo. para simplificar mas puedes hacer una funcion o procedimiento para limpiar y bloquear las variables. Espero te haya ayudado y sorry si mi codigo esta algo enrredado porque aun sigo con el vb6. cualquier duda solo preguntame.
SUERTE
- que el usuario se haya equivocado al apretar el boton.
- a ver apretado el boton y comienzas la escritura de campos y se cae el sistema o se corta la luz. etc.
podrias hacerlo de la siguiente forma
' al iniciar el form y llamarlo bloquea todo
FORM LOAD
NombreTextBox.enabled =false
ApellidosTextBox.enabled = false
NombreTextBox.enabeld=false
cmd_nuevo.enabled=true
cmd_nuevo.focus()
END
El código del Botón Nuevo.
PRIVATE SUB CMD_NUEVO()
NombreTextBox.enabled =TRUE
ApellidosTextBox.enabled = TRUE
NombreTextBox.enabeld=TRUE
NombreTextBox.TEXT =""
ApellidosTextBox.TEXT =""
NombreTextBox.TEXT=""
CMD_GRABAR.ENABLED=TRUE
NOMBRETEXTBOX.FOCUS()
END
PRIVATE CMD_GRABAR()
IF MSGBOX("Seguro de Realizar la Grabación","GRABACION DE DATOS"==YESOK THEN
Dim newContactoRow As GenteDataSet.ContactoRow --------------->(1)
newContactoRow = GenteDataSet.Contacto.NewContactoRow() ---->(2)
GenteDataSet.Contacto.Rows.Add(newContactoRow)---------------->(3)
Try
Me.Validate()
Me.CustomersBindingSource.EndEdit()----------------------------------->(4)
Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
MsgBox("Update successful")
NombreTextBox.Text = "" :NOMBRETEXTBOX.ENABLED=FALSE
ApellidosTextBox.Text = "" :APELLIDOSTEXTBOX.ENABLED=FALSE
CMD_NUEVO.Focus()
Catch ex As Exception
MsgBox("Update failed")
End Try
ELSE
NombreTextBox.Text = "" :NOMBRETEXTBOX.ENABLED=FALSE
ApellidosTextBox.Text = "" :APELLIDOSTEXTBOX.ENABLED=FALSE
CMD_NUEVO.Focus()
ENDIF
END
en el anterior limpiabas y grababas por eso quedaba 1 registro en blanco y otro no, por eso dividi en dos porcedimientos en el cual el boton GRABAR habre la base de datos y pregunta si lo graba si esta afirmacion es correcta realiza la grabacion en caso contrario limpia los controles y vuelve al boton Nuevo. para simplificar mas puedes hacer una funcion o procedimiento para limpiar y bloquear las variables. Espero te haya ayudado y sorry si mi codigo esta algo enrredado porque aun sigo con el vb6. cualquier duda solo preguntame.
SUERTE
Carola77 - Lista para la Primavera y el año mas triste de mi vida
" El conocimiento no se Gasta ni se Vende, Compartirlo es lo mejor para enrriquecernos y asi seremos cada dia mejor"
" El conocimiento no se Gasta ni se Vende, Compartirlo es lo mejor para enrriquecernos y asi seremos cada dia mejor"