Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   problema con un dbgrid en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=44608)

ebeltete 11-06-2007 13:36:17

problema con un dbgrid en Firebird
 
Hola, estoy trabajando con Firebird 2.0 y Delphi 5, desarrollando una aplicacion maestro detalle, donde tengo facturas y articulos, veo los articulos en un dbgrid, el problema es que al modificar los articulos tengo que salir del renglon del dbgrid que estoy modificando para que realmente haga las modificaciones,si modifico la linea y no salgo de esta las modificaciones no funcionan, no se que puede ser, probe haciendo post pero no puedo, salu2

Lepe 11-06-2007 15:49:28

Debes hacer un commit para que los cambios surtan efecto.

Ver los cambios inmediatamente, dependerá de si usas Commit o CommitRetaining en la transacción.

Saludos

jgutti 11-06-2007 16:23:50

es correcto que suceda eso, debido a que si no pasas a la sgte linea del dbegrid el estado de la linea continua como edit o insert segun corresponda y para confirmar un insert o modificación la unica forma a por medio de un post.
por lo tanto si no pasas a la sgte linea no sucede el evento post.
- lo que puedes hacer es al salir del campo modificado o al salir del dbgrid forzar un evento post. para que tus datos sean actualizados

atte

jgutti

ebeltete 11-06-2007 18:11:11

el CommitRetaining lo hago al grabar o emitir la factura.
El tema es que el dbgrid esta en un formulario y a veces el usuario puede cerrar el formulario que contiene el dbgrid sin cambiar de linea, he probado hacer en el evento onclose del formulario que contiene el dbgrid:
if tabla.State=dsedit then
tabla.Post;

pero aun estando en la misma linea, solo habiendo cambiado de columna la tabla no que da en modo de edicion, y no puedo hacer el post.
En este ultimo caso cuando vuelvo a abrir el form con el dbgrid, me vuelve a dejar el valor anterior.

kalimero 12-06-2007 11:19:56

Hola.
Pon la propiedad autoedit del datasource asociado a la tabla True.
Ahora en el momento que cambies el valor de una columna y te muevas a otra el dataset estará en modo edicion.

Saludos

jgutti 12-06-2007 19:12:57

yo para solucionar este problema realizo lo sgte:
en el evento exit de dbgrid consulto:
if (tabla.state=dsinsert) or (tabla.state=dsedit) Then
tabla.post;

- de esta forma al salir del debe grid si existe un post pendente forzara a realizar el post.

jgutti

rastafarey 13-06-2007 19:34:13

Resp
 
Lo que debes es hacer un commit refresh(uso ibo y hagoi refreskeys).

Y parta evitar qu esalgan sin grabr en le onclose query de la forma verifique si el dta set esta es estado de edicion o insercion y hace slo qdebas hacer.

Espero te sirva.


La franja horaria es GMT +2. Ahora son las 10:30:21.

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