Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   problemas al actualizar por segunda vez (https://www.clubdelphi.com/foros/showthread.php?t=35342)

@-Soft 07-09-2006 18:18:37

problemas al actualizar por segunda vez
 
hol@

este tema ya lo habia expuesto en otra ocasion pero no recibi respuesto, he optado por iniciar el mismo tema nuevamente en otro hilo, pido disculpas.

estoy en fase de culminacion de un sistema de control de academias educativas pequeñas, estoy trabajando con delphi 7, BDE, Paradox por la razon de que son academias pequeñas, para no entrar en detalle con el tema de las SGBD y DB Desktop, etc.

en los mantenimientos utilizo una barra de botoneria que esta compuesto por (Insertar, Modificar, Grabar, Cancelar, Eliminar, Buscar), debido esto a que trabajo con componentes DataAdware.

estoy utilizando componentes tQuery en vez de usar tTable por conveniencia, debido a que yo utilizo un campo logico para marcar registros como borrados y al yo traer los registros con el tQuery pues condicionarlos, es decir, puedo hacer un (Select * From MiTabla Where reg_eliminado = 0) donde 0 quiere decir que no ha sido eliminado.

con un TQuery yo puede efectuar las mismas operacion que con un TTable, es decir, un Insert o Append, un Edit, un Post.

despues de mucho bla bla, es en esta parte donde recide el problema, cuando yo modifico un registro por primera vez me graba los cambios sin dar error, pero cuand modifico ese mismo registro al otra vez, en el instante me da un error que dice : Couldn't perform the edit because another user change the record. no se porque se produce este error, solo pude determinar que se genera realizar un ApplyUpdate por segunda vez, esta es la sentencia para que confirme:

Código Delphi [-]
if dsMiQuery.State in [dsInsert, dsEdit] then
begin
     try
         qMiQuery.Post;
         qMiQuery.ApplyUpdate;
     Except
      ....
end;

un saludo

roman 07-09-2006 18:29:52

Si lees la ayuda de Delphi verás que hay varios pasos involucrados que deben seguirse. Luego de Query.ApplyUpates, debes hacer un Database.Commit y finalmente un Query.CommitUpdates. Esta última- según la ayuda de Delphi -es la encargada de limpiar el caché. También- según nuevamente, la ayuda de Delphi -si usas Database.ApplyUpdates (en lugar de Query.ApplyUpdates), ahorras varios pasos.

// Saludos

@-Soft 07-09-2006 19:53:22

muchas gracias roman, la parte de commitupdate era lo que faltaba.

muuuuuuuchas gracias.


La franja horaria es GMT +2. Ahora son las 22:39:05.

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