Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2012
Avatar de chartres
chartres chartres is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 31
Poder: 0
chartres Va por buen camino
Desabilitar auto post al cambiar de renglon en grid

Hola
Uso delphi 7, con dvexpress
tengo un cxgrid direccionado a un datasourse con un query

el caso esque tengo una columna tipo Checkbox donde selecciono renglones para editarlos, pero al cambiarme de renglon graba automaticamente los cambios del renglon modificado,

yo necesito poder grabar todos de jalon o cancelarlos, osea que no grabe nada hasta que yo le indique.

espero explicarme y alguien sepa como desactivar esa funcion.

gracias
__________________
No hay que Postear primero, hay saber Buscar..
Responder Con Cita
  #2  
Antiguo 15-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola chartres.

Podes usar el evento BeforePost del TDataSet:
Código Delphi [-]
procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
var
  i: Integer;
begin
  for i:= 0 to DBGRid1.FieldCount-1 do
    if DBGrid1.Fields[i].IsNull then
      Abort;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 15-05-2012
Avatar de chartres
chartres chartres is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 31
Poder: 0
chartres Va por buen camino
Gracias, pero en este caso el valor lo asigno con el Checkbox
Checked asigno 1
uncheked asigno 0

no importa si esta null, lo que quiero esque no grabe asta hacerlo yo con un boton,
es un grid como un listado donde escojen que quieren y que no y al final dan grabar,
pero el grid al cambiar de renglon graba automaticamente el anterior.

y no qiero q grabe hasta yo desirselo con un boton
__________________
No hay que Postear primero, hay saber Buscar..
Responder Con Cita
  #4  
Antiguo 15-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
y no qiero q grabe hasta yo desirselo con un boton
Ahora está mas claro. Entonces podes hacer algo como:
Código Delphi [-]
...
var
  PostEnabled: Boolean = False;

procedure TForm1.btnGuardarClick(Sender: TObject);
begin
  PostEnabled:= True;
  DBGrid1.SetFocus
end;

procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
begin
  if not PostEnabled then
    Abort;
  PostEnabled:= False
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-05-2012 a las 22:40:50.
Responder Con Cita
  #5  
Antiguo 16-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Hola: Creo que es algo similar a lo que una vez me pasó y necesitaba.
Mirá este hilo.

Saludos.-
Responder Con Cita
  #6  
Antiguo 16-05-2012
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cool

Hola....


Por lo General yo en ese caso trabajo con cached...

O sea pongo el query en Cached... dejo el usuario haga los cambios que tiene que hacer y luego, cuando guarda realizo un ApplyUpdates. En caso de cancelar hago un CancelUpdates...

Ten en cuenta que un query en cached trabaja con los datos de forma local y una vez que aplicas los cambios recién se envían al servidor...


En caso que tengas varios querys en cached y tengas que aplicar los cambios... puedes hacerlo de la siguiente manera...

Código Delphi [-]
Try
  Transaccion.StarTransaction;

  if Qry1.UpdatesPending then //Esto devuelve si tiene cambios en cached pendientes de aplicar
     Qry1.ApplyUpdates;

  if Qry2.UpdatesPending then 
     Qry2.ApplyUpdates;

  if Qry3.UpdatesPending then 
     Qry4.ApplyUpdates;
  
  Transaccion.Commit;

  
Except
  Transaccion.RollBack;
end;

En tu caso:
Si presiona el boton grabar haces todos los applyupdates, si presiona el boton cancelar haces los cancelupdates;

Código Delphi [-]
  Qry1.CancelUpdates;
  Qry2.CancelUpdates;
  Qry3.CancelUpdates;
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #7  
Antiguo 16-05-2012
Avatar de chartres
chartres chartres is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 31
Poder: 0
chartres Va por buen camino
Cita:
Empezado por Neeruu Ver Mensaje
Hola....


Por lo General yo en ese caso trabajo con cached...

Hola, revise esa opcion pero falto desir que yo uso AdoQuery y almenos no veo esa propiedad de cachedupdates, cosa que si tiene el Tquery normal.

Tambien trate con lo que desia arriba ecfisa de Abort ants del post, pero no me permitia cambiar al siguiente registro.

Como lo estoy intentando es manejando un dxMemData, un grid temporal donde cargo los registros de el query y despues que se modifican en el grid, reocorro registro por registro con un proceso y segun los cambios que haya los aplico al query,
funciona muy bien pero tiene inconvenientes, por ejemplo no esta sincronizado con el query, osea si sortean o filtran el grid, el query no se filtra y pues para pasar los cambios al query requiero aser varias validaciones por registro, que al final de cuentas oslo es trababjo mas.

gracias a todos por los comentarios..
__________________
No hay que Postear primero, hay saber Buscar..
Responder Con Cita
  #8  
Antiguo 16-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Prueba poniendo la propiedad LockType del ADOQuery en ltBatchOptimistic. De cuerdo a la ayuda, debesusar entonces el método Updatebatch para grabar los cambios.

// Saludos
Responder Con Cita
  #9  
Antiguo 16-05-2012
Avatar de chartres
chartres chartres is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 31
Poder: 0
chartres Va por buen camino
Gracias roman, era lo que buscaba y algo me desia que no tenia porque ser tan dificil.

almenos asta ahorita funciono. no se si tenga sus puntos criticos.
__________________
No hay que Postear primero, hay saber Buscar..
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
Auto Borrar Aplicacion / Cambiar Privilegios Aplicacion / Ejecutar como Administrador jogagua Varios 15 27-10-2011 01:38:07
Desabilitar la opción de ruleta del ratón en un grid nelem Internet 1 06-03-2008 16:29:09
zquery hace un auto-post (el muy cabron) source_code Conexión con bases de datos 9 07-03-2007 21:32:29
Cambiar color de fuente de un String Grid. alfredosg19 OOP 2 27-03-2005 18:48:10
cambiar color a la fila seleccionada de un grid!! triniti OOP 2 03-08-2004 13:00:42


La franja horaria es GMT +2. Ahora son las 12:33:59.


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