Ir al contenido


Foto

[RESUELTO] volver acciones para atras


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

#1 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 16 julio 2010 - 08:52

hola gente? como stan? :cool:

tengo un form....en dond el usuario pone unos datos y se ejecuta una query, esta query trae los datos consultados por el usuario a un dbgrid, el usuario comienza a modificar las filas del dbgrid, completando una celda de cada fila con un precio.
quiero poner un boton CANCELAR para que si el usuario se equivoco en los datos de la query, o simplemente no quiere guardar los datos q ingreso en el bdgrid, se pueda deshacer todas las modificaciones q hizo anteriormente.
esto lo digo...porq si el usuario modifica una fila en el dbgrid, y da enter, se hace un query.POST(entiendo q eso lo hace automaticamente, sin q yo le haya puesto codigo), entonces quiero q cuando apriete el boton cancelar, todas las modificaciones q haya hecho, se deshagan, se entiende che???

saludos
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 16 julio 2010 - 08:55

Tienes las opciones ROLLBACK y COMMIT que son para realizar lo que quieres.

Salud OS
  • 0

#3 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 16 julio 2010 - 09:03

ego...estoy aprendiendo a usar esas funciones.... :s

puse :
DataModule1.ADOConnection1.BeginTrans;
aca sta el codigo de consulta y de insercion en una tabla
DataModule1.ADOConnection1.CommitTrans;

despues en el boton cancelar le puse una pregunta para confirma si queria cancelar las operaciones


delphi
  1. procedure TFCarga.Button3Click(Sender: TObject);
  2. begin
  3. if(MessageBox(Handle, 'Desea Cancelar la carga?', 'Confirmacion', MB_YESNO+mb_ICONQUESTION)=IDYES) then
  4.       begin
  5.         DataModule1.ADOConnection1.RollbackTrans;
  6.       end;
  7. end;


pero me sale el mensaje "no hay ninguna transaccion activa"

se me ocurre cambiar el boton CANCELAR por uno que se llama GUARDAR...y q pregunte si quiere guardar...y que si dice que SI  q haga el commit  else rollbacks....

alguna sugerencia?  :s :s :s :s
  • 0

#4 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 16 julio 2010 - 09:20

bueno le puse asi (ste codigo va en el boton BUSCAR)
DataModule1.ADOConnection1.BeginTrans;
aca abajo sta el codigo de consulta y de insercion en una tabla

y despues en el bton guardar:



delphi
  1. procedure TFCarga.Button3Click(Sender: TObject);
  2. begin
  3. if(MessageBox(Handle, 'Desea guardar la carga?', 'Confirmacion', MB_YESNO+mb_ICONQUESTION)=IDYES) then
  4.       begin
  5.         DataModule1.ADOConnection1.CommitTrans;
  6.       end
  7.       else
  8.       begin
  9.         DataModule1.ADOConnection1.RollbackTrans;
  10.       end;
  11. end;



hasta aca hace todo lo q quiero  (y)
lo unico q es : como pregunto si hay una transscion activa en ese momento?
porq tengo un boton CERRAR, para cerra el form, pero quiero q el usuario pueda cerrar si antes apreto el boton GUARDAR y definio hace el commit o el rollbacks.
entonces preguntaria si hay una transaccion activa, y si la hay le mando un mensajito de q tiene q Guardar antes de cerrar el form.

saludos  *-) *-) *-)
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 16 julio 2010 - 09:29

Eso lo puedes checar con esto:



delphi
  1.   if ADOConnection1.InTransaction = true then
  2.   begin
  3.   end;



Salud OS
  • 0

#6 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 16 julio 2010 - 09:33

sip..ese era hehhehee  (y) (y) (y) (y)
gracias amigos!

solucionado  *-) *-)
  • 0




IP.Board spam blocked by CleanTalk.