Ir al contenido


Foto

¿Cómo hacer que un dbgrid muestre los nuevos datos registrados instantáneamente?


  • Por favor identifícate para responder
9 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 01 agosto 2010 - 11:00

Es que tengo un problema en la aplicación que estoy desarrollando cuando creo un nuevo registro hago esto adotable1.refresh;
y dbgrid1.refresh;
yo suponía que al hacer esto deben aparecer los nuevos datos en el dbgrid que esta aparte después de agregar el nuevo campo y guardarlo inmediatamente debe aparecer en la lista del database grid que debo hacer para que esto suceda  osea que la lista de datos registrado en el dbgrid se actualice al momento de grabarlo y aparezcan los nuevos gracias de antemano.
  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 01 agosto 2010 - 11:14




delphi
  1. AdoTable1.Post // Guarda
  2. AdoTable1.CheckBrowseMode // Guarda y deja la tabla en estado de edición
  3. AdoTable1.Insert // Inserta un nuevo registro en el lugar del cursor
  4. AdoTable1.Append //Inserta un nuevo registro al final de la tabla  o DBGrid
  5. AdoTable1.Edit //Puedes editar (modificar tu tabla)
  6. AdoTable1.Cancel //Cancelas los cambios
  7. AdoTable1.Refresh //Actualiza los datos en todos los controles asociados



  • 0

#3 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 01 agosto 2010 - 11:29




delphi
  1. AdoTable1.Post // Guarda
  2. AdoTable1.CheckBrowseMode // Guarda y deja la tabla en estado de edición
  3. AdoTable1.Insert // Inserta un nuevo registro en el lugar del cursor
  4. AdoTable1.Append //Inserta un nuevo registro al final de la tabla  o DBGrid
  5. AdoTable1.Edit //Puedes editar (modificar tu tabla)
  6. AdoTable1.Cancel //Cancelas los cambios
  7. AdoTable1.Refresh //Actualiza los datos en todos los controles asociados


Gracias pero ya lo solucione.

Adotable1.close;
adotable1.open;

en secuencia hace que se actualice todo de manera automática gracias de todos modos.
  • 0

#4 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 01 agosto 2010 - 11:39

Te recomiendo este de Zarko.
  • 0

#5 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 01 agosto 2010 - 11:50

A veces no solo necesitas que se actualizen inmediatamente en la plicación en la cual esta realizando la operación; si no en aplicaciones clientes que interactcuan en el mismo módulo; yo suelo utilizar Zeos y los IBEventAlert; yo utilizo firebird el cual soporta esta característica, al parecer tambien postgress.

Saludos
  • 0

#6 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 01 agosto 2010 - 12:15

...
Adotable1.close;
adotable1.open;...


Ésto no es una solución, es una chapuza o trampa, llevado ahí por la desesperación. Creo que te conviene darle una vueltecita más extensa a la ayuda de ADOTable y ADOQuery, para que éste tipo de problemillas no te orillen a ser un programador tramposo. En el área de descargas me parece que todavía hay un par de documentos que hablan sobre éste tipo de componentes...

Delphi se distingue por la elegancia de su estructura y sentencias, no lo arruines.
  • 0

#7 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 01 agosto 2010 - 01:21

Hola
Una de las cosas que hay que pensar es en las transacciones.
Un POST, guarda los datos, pero no es tan contundente como un Commit.
En todos los motores y con todos los componentes se usa para tener un mejor control de las transacciones de la BD:

Con ado:
BeginTrans, CommitTrans, RollbackTrans.

Cada motor tiene su transaccion, pero es conveniente usarla, sobre todo si el programa lo usa mas de una persona a la vez.

Yo no me confiaria de un simple Post.
Saludos
  • 0

#8 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 01 agosto 2010 - 01:51

Hola
Una de las cosas que hay que pensar es en las transacciones.
Un POST, guarda los datos, pero no es tan contundente como un Commit.
En todos los motores y con todos los componentes se usa para tener un mejor control de las transacciones de la BD:

Con ado:
BeginTrans, CommitTrans, RollbackTrans.

Cada motor tiene su transaccion, pero es conveniente usarla, sobre todo si el programa lo usa mas de una persona a la vez.

Yo no me confiaria de un simple Post.
Saludos

Las transacciones son muy útiles cuando hay que actualizar mas de un registro a la vez(Dígase varios Post) bien sea en la misma tabla, diferente tabla o incluso diferente Db. Por ejemplo un traslado de dinero de una cuenta bancaria a otra, el movimiento de debitar en una y acreditar en la otra debe ser completo.

En el caso particular deADO para actualizar un solo registro en una tabla, si nó se inicia una transacción explícita, la conexión la inicia "implícitamente" entonces al hacer Post si todo va bien se graba (commit) o de lo contrario devuelve un error (rollback).

Saludos
  • 0

#9 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 02 agosto 2010 - 02:43


Gracias pero ya lo solucione.

Adotable1.close;
adotable1.open;

en secuencia hace que se actualice todo de manera automática gracias de todos modos.


Y eso no es lo mismo que



delphi
  1. ADOTable.Requery;


  • 0

#10 Faust

Faust

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 213 mensajes
  • LocationDistrito Federal

Escrito 03 agosto 2010 - 08:28

Pues si... funciona con un Close -> Open, pero si hay muchos registros, al hacer el open te posiciona en el primero y no en el que acabas de capturar, yo normalmente hago un close, open y un locate o uso Bookmarks para llegar al registro editado o insertado y al mostrar las modificaciones lo hago en el registro insertado/modificado. Si alguien sabe alguna manera mejor para hacerlo así pues que nos lo diga.  (y)
  • 0




IP.Board spam blocked by CleanTalk.