![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
A alguno de uds le ha pasado esto
Hola a todos tengo una BD MySQL con varias tablas. sucede que en una de ellas cuando edito un registro y cambio un dato me lo guarda correctamente, pero en otros casos no funciona así. Edito un registro realizo un cambio. me lo muestra cambiado en la grilla y cuando cierro la tabla y vuelvo a ella aparece el dato anterior y así nunca lo actualiza. esto sucede no con todos los registros de la tabla.
para editar y guardar el registro actual utilizo este simple codigo
Desde ya gracias a todos |
#2
|
||||
|
||||
Hola cmfab, no he trabajado nunca con Mysql, suponiendo que lo que haces es editar simplemente en el dbgrid (escribir creando nuevos datos sin haber llamado al edit), deberias luego solo hacer un post, si no es de esta manera y lo que haces llamar mediante proceso, al edit luego rellenas los campos y por último llamas al procedimiento que tenga el post.
Lo que si que no debes hacer es escribiendo directamente en el grid, hacer luego la llamada a edit y al post, se supone que debería dar un error al estar ya en edición, salvo que terminaras de editar, personalmente limito mucho el uso de trabajo directo en dbgrid. Por último no se si MySql tiene transiciones como en firebird, si fuese así, hasta que no la hagas no quedaría grabado definitivamente. Espero te ayude y no haberme metido en jardines ajenos.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#3
|
|||
|
|||
Hola. gracias por la respuesta. no trabajo directamente en el dbgrid. uso controles dbaware para mostar el contenido de los campos de la tabla. lo extraño está dado que solo en una de las tablas me sucede que no graba los cambios en el registro. si MySQL usa transacciones, pero no las uso y nunca habia tenido ese problema. simplemente el usuario presiona un boton de la barra de herramientas del dbnavigator. entonces allí invoco el mtodo Edit y muestro un cuadro de diáloco con todos los dbedit que correspondan a los campos que pueda modificar. despues presiona otro botón de la barra del dbnavigator e invoco al metodo post para guardar los cambios o al metodo cancel para cancelarlos. siempre ha funcionado de maravillas. el error es bastante extraño. seguiré insistiendo en resolverlo y os comento. gracias si hay alguna otra sugerencia estoy a la escucha
|
#4
|
||||
|
||||
A mi me ha sucedido a veces, que para que guarde los datos tengo que cambiarme de registro, si cierro el formulario de entrada de datos sin cambiarme, no guarda los cambios y tengo que recurrir a los eventos para mandar a guardar
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes |
#5
|
||||
|
||||
cmfab, revisa el código por si cambias en algún momento el datasource asociado a los controles de tabla o querry, te lo comento por que yo, trabajo en Firebird, uso un ibdataset, ejemplo (Pend_Pagos) vinculado a datasource1, luego uso cuatro querrys, vinculados a un sólo datasource, que son
IBGeneral Muestra sólo las facturas pendientes de cobro IBClientes Muestra los clientes, para obtener el código cliente si no se cual es IBTodos Muestra Facturas cobradas y no cobradas, señalando las cobradas de un color y las no cobradas de otro IBCobradasMuetra las facturas cobradas, dando información detallada del cobro Los cuatro grids, están cada uno en una pestaña de un pagecontrol y lo que hago en el onchange del pagecontrol, compruebo cual es la pestaña activo y conecto el datasource a ese Querry, de esta manera son sólo 4 lineas de código y cada querry tiene su select que es fijo. Lo que quiero decir, es que en algún momento puedes estar vinculando tu datasourcce donde no quieres, lo mejor sería que subieras el código del modulo que te da problemas y detallaras la estructura de la tabla, y si puedo te echare una mano y estoy seguro que los demás compañeros también.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#6
|
||||
|
||||
Lo que te sucede es qe el dbgrid no te está haciendo post en los datos que cambias, recuerda que solo lo hace cuando cambias de registro (o fila) o bien cuando mandas el post por código o presionando el botón correspondiente del dbnavigator. La grilla solo te muestra lo que contiene en ese momento el registro pero no garantiza que el registro ya haya sido posteado a la tabla.
Por otro lado el código que pones es incompleto pues el Edit lo tienes que hacer antes de hacer cualquier cambio para poner la tabla en modo edición y cuando ya cambiaste los datos llamar a Post para grabarlos o cancel para descartarlos. Si entendí bien, tienes una grilla que muestra los registros y varios controles aparte que permiten editar los datos del registro, conforme mueves la grilla cambian los datos de los controles. Lo que sucede en ese caso es lo que te comentaba al prinicipio, la grilla no hace el post hasta que no te cambias de registro por lo que si editas algo y cierras la ventana sin cambiar de registro obviamente no se guarda el cambio. Prueba metiendo un Post en el evento "OnClose" del form y asi siempre garantizas que se guarde lo último que se haya cambiado.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#7
|
|||
|
|||
Gracias a todos por responder. en cuanto a los metodos considero que estan bien implementados. osea tengo los datos del registro actual en controles de bases de datos una vez el usuario presiona el boton de editarlos ejcuto el metodo edit y se procede a realizar los cambios. despues le quedan solo dos opciones o presiona guardar (donde se ejecuta el metodo post). o bien presiona cancelar dicha accion (se ejecuta el metodo cancel).
Os cuento que he resuelto el problema quitandome de encima los controles dbaware y los metodos edit y post. pues he reconstruido el codigo usando consultas sql (update, Inset, delete) sobre las tablas. de esta manera funciona bien. gracias una vez mas |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Alguno a utilizado camaras IP?? | Sick boy | Varios | 9 | 06-02-2009 22:23:50 |
Mi Pc se cuelga sin motivo alguno | kurono | Windows | 8 | 18-11-2008 03:34:38 |
Por si alguno todavía no se ha bautizado... | ArdiIIa | La Taberna | 0 | 26-09-2007 21:25:24 |
Alguno conoce este codigo? | gatsu | PHP | 2 | 29-08-2004 08:39:09 |
![]() |
|