Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Actualizar DataSet,tabla en tiempo de ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=65794)

amerika111 13-01-2010 17:14:13

Actualizar DataSet,tabla en tiempo de ejecucion
 
Hola ,,, tengo una duda en el caso que hago alguna actualizacion en un registro de un dataset o una tabla y quiero que se mire en el sistema en tiempo de ejecucion y no que tenga q cerrar el programa y volver abrir. espero y alguien responda a mi duda......

Neftali [Germán.Estévez] 13-01-2010 19:51:53

Si la actualización la estás haciendo desde otro programa, bastaría con cerrar y volver a abrir el Dataset.

amerika111 14-01-2010 17:58:05

no la actualizacion la quiero hacer en el mismo programa si e abierto y cerrado el dataset pero si estoy en tal registro cuando hago eso se posiciona en el primer registro. y no se queda en el que estaba editando....

rgstuamigo 14-01-2010 18:06:56

Solo bastara refrescar el DataSet despues de la insercion,eliminacion o modificacion:
Código Delphi [-]
//codigo de eliminacion o insercion o modificacion
....
...
MyQuery.Refresh;// al final ;) ;)
.
Saludos...:)

ccorp 26-01-2010 11:39:18

Hola,
A mi me pasa que hago el "Tabla.Refresh" después de una modificación,
me lo actualiza, pero se va al primer registro de la tabla y por lo
tanto a la primera posicion del grid que tengo asociado.¿Alguien me podría
ayudar?

salu2

PD:me estreno en este foro, :)

Neftali [Germán.Estévez] 26-01-2010 12:01:43

Cita:

Empezado por ccorp (Mensaje 351831)
Hola,
A mi me pasa que hago el "Tabla.Refresh" después de una modificación,
me lo actualiza, pero se va al primer registro de la tabla y por lo
tanto a la primera posicion del grid que tengo asociado.¿Alguien me podría
ayudar?

salu2

PD:me estreno en este foro, :)

Hola ccorp, bienvenido a los foros.
Te recomiendo que leas la Guía de estilo de los foros. Para nuevas preguntas es mejor que crees hilos nuevos.

En cuanto a tu pregunta, lo lógico para mantener la posición después del refresh es utilizar bookmarks.

ccorp 26-01-2010 13:11:18

Lo siento, ya lo se para la próxima.
Al final la cosa estaba en que no me funcionaba el "Refresh" (me dejaba
la línea del grid en blanco) y para actualizar he tenido que hacer un
"Close" y un "Open", pero claro, de esta manera, se iba al primer registro de la tabla. Entonces he utilizado los "bookmarks" (no los conocía) y me deja el registro activo en la posición central del grid, que más o menos me sirve, sino se puede dejar en la misma posición.
Muchas grácias.

cocute 26-01-2010 14:02:55

y porque no capturas en una variable la posicion en la que estas antes de refrescar y después despues de refrescar la recuperas.?

rrf 26-01-2010 16:49:57

He usado la idea que comentó Cocute y no he tenido problemas. Lo usaba con Firebird y los componentes IBX.

Seguro que se puede hacer de forma más elegante, pero no daba problemas.

Para posicionarse en el registro después de abrir el IBDataset, utilizaba el método Locate.

Saludos.

rgstuamigo 26-01-2010 16:58:50

En este hilo ya se trato el tema de como mantener el registro actual selecionado.;)
Saludos...:)

ccorp 26-01-2010 18:56:13

Me he explicado mal. Tengo un botón que modifica un campo (tipo check) del registro seleccionado en el grid y además, el botón lleva este código para capturar la posición,refrescar y después recuperar la posición del registro:

Código Delphi [-]

   tbHorarios.DisableControls;
   posicion := tbHorarios.GetBookmark;
   tbHorarios.Close;
   tbHorarios.Open;
   if posicion <> nil then
    begin
         tbHorarios.GoToBookmark(posicion);
         tbHorarios.FreeBookmark(posicion);
          tbHorarios.EnableControls;
    end;
Esto lo hace bien, el registro seleccionado es el correcto, pero cambia la vista del grid, se ha corrido el registro seleccionado al centro del grid. ¿Esto sería posible solucionarlo? que no cambie de vista.

Delfino 28-01-2010 12:21:59

Si usas Firebird y el tipo de la transaccion es read_commited con el Refresh se actualiza perfectamente sin necesidad de abrir y cerrar..

Cañones 29-01-2010 15:51:36

Cita:

Empezado por Delfino (Mensaje 352097)
Si usas Firebird y el tipo de la transaccion es read_commited con el Refresh se actualiza perfectamente sin necesidad de abrir y cerrar..

Ahora no me acuerdo, pero en su momento cuando trabajaba como vos decis con un ibdataset no había otra que marcar, cerrar, abrir y buscar la marca.
Esto en delphi 6.

Saludos.

ccorp 05-02-2010 10:35:18

Al final lo solucioné como dice cañones, porque el "Refresh" no me funcionaba (me dejaba la línea del grid en blanco y tenía que cerrar y volver abrir el formulario). Grácias a todos los que intentaron ayudar con sus respuestas.
salu2.


La franja horaria es GMT +2. Ahora son las 15:07:55.

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