FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
DbGrid en Delphi 7
Que tal compañeros, tengo una consulta que hacer con ustedes los expertos. El problemas es el siguiente, estoy creando una aplicacion en delphi 7 y la he conectado a mi BD creada en MYSQL. He colocado en un form un dbgrid y ahi mismo un TQuery (BDE) y un TDataSource, el TQuery y dbgrid estan conectados al mismo Datasource. Realizo una consulta que es la siguiente:
En el edit1 tengo una clave de la tienda. Los datos se muestran correctamente en el DbGrid, el problema es al momento de querer modificarlos directamente en el mismo dbgrid. Ya he intentado poner la propiedad RequestLive del TQuery en true al igual que la propiedad AutoRefresh. Pero aún asi no me permite escribir nada en el Dbgrid y me arroja este error: "Couldn't perform the edit because anothe user changed the record". Y no se como solucionarlo. Podría alguien ayudarme, por favor. Esto de escribir en el dbgrid ya lo había podido hacer antes utilizando delphi 6 y sin ningun problema, pero no se cual es la diferencia o no se por que en delphi 7 me este costando trabajo. |
#2
|
||||
|
||||
Quitale el autorefresh. Cuando editas en un dbgrid la tabla entra en modo dsBrowse mientras estas moviéndote por las filas, en cuanto das un enter para editar una celda, entra a modo dsEdit. Cuando pasas a otra fila se hace un Post de manera automática a la tabla.
Prueba quitando el autorefresh.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#3
|
|||
|
|||
Ya he intentado poniendo la propiedad autorefresh en false, pero no funciona. Sigo tratando de hacer modificaciones en el dbgrid pero no puedo hacerlo, me envía el mismo error. Puedes ayudarme por favor ??
|
#4
|
||||
|
||||
¿la tabla tiene una llave primaria?
¿está dicha llave primaria identificada en el TQuery?. debiera ocurrir automáticamente, pero quizás el driver de Mysql no provee esa funcionalidad. El mensaje de error significa que el BDE no ha podido encontrar el registro para actualizar... por tanto asume que fue modificado (o borrado) por otro usuario, en un entorno multiusuario. Te recomiendo la lectura del libro "La Cara oculta de Delphi 4", de Ian Marteens, enfocado al desarrollo con BDE, que podes obtener en el ftp del club Delphi-Win32/Libros. De lo aprendido en dicho libro (según creo), el BDE se basa en el valor establecido en la propiedad UpdateMode para construir la sentencia Update. Probablemente dicho valor está establecido a upWhereAll, pero o bien hay algún campo cuyo valor es construido al vuelo o bien el valor realmente ha cambiado. Podes conseguir corregir el comportamiento dejando dicho valor en upWhereKeyOnly, para que solo en los campos que conforman la llave primaria formen parte del where, aunque esto signifique el riesgo de machacar las modificaciones realizadas por otro usuario. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Delphi for php- dbgrid | omarifr | PHP | 2 | 12-10-2007 17:02:54 |
DBGrid en delphi 5 | ibbeth | SQL | 1 | 03-01-2006 02:38:05 |
Modificaciones DBGrid Delphi 7 | damix | Varios | 4 | 15-11-2005 19:43:32 |
Posicionar fila en un DBGRID-delphi | Vivi | Conexión con bases de datos | 4 | 29-07-2005 20:49:23 |
Delphi + MySQL (DBGrid) | gringo | Conexión con bases de datos | 5 | 23-10-2004 04:44:31 |
|