Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-11-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
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

Código Delphi [-]
  tabla.Edit;
  tabla.Post;

Desde ya gracias a todos
Responder Con Cita
  #2  
Antiguo 12-11-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
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"
Responder Con Cita
  #3  
Antiguo 12-11-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 12-11-2010
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 12-11-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
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"
Responder Con Cita
  #6  
Antiguo 12-11-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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||
Responder Con Cita
  #7  
Antiguo 12-11-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 14:59:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi