Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Post o CheckBrowseMode ? (https://www.clubdelphi.com/foros/showthread.php?t=47498)

David 29-08-2007 22:52:47

Post o CheckBrowseMode ?
 
Hola

Según leo en el libro de Marteens , si utilizas CheckBrowsemode , comprueba primero el estado de inserción o modificación y luego si es así llama a post .

CheckBrowseMode , según entiendo equivaldria a esto :

Código Delphi [-]
if DataSet.State in [dsEdit,dsInsert] then
 DataSet.Post;

Entonces no habría que utilizar siempre CheckBrowseMode y olvidarse de post ?

Me surge esa duda .

Un saludo

paldave 29-08-2007 23:00:07

Totalmente de acuerdo contigo.
De hecho en mis programas siempre utilizo CheckBrowseMode, aún cuando esté seguro de que está en modo edición porque antes llamé un DataSet.Edit.
Del post ni me acuerdo :p

Chris 29-08-2007 23:02:53

No
 
Lo que hace CheckBrowseMode es actualizar y leer el estado en el que se encuentra la tabla, cuando llamas post, este a su vez llama CheckBrowseMode, entonces si el estado no es dsEdit o sdInsert, entonces te devuelve la excepción con el mensaje "Dataset not edit or insert mode"

Normalmente, no debería de utilizar CheckBrowsemode, Yo lo utilizo cuando hago un bluque para modificar registros que que se encuentran dentro de un filtro. lo hago como una forma segura de actualizar el estado de la tabla.

Al González 30-08-2007 03:14:15

¡Hola a todos!

Cuando la tabla está en algún modo de edición, CheckBrowseMode llama a Post si el registro actual tuvo cambios fuera del evento OnNewRecord; de lo contrario llama a Cancel, bajo el entendido de que si hubo una asignación en OnNewRecord, ésta es descartable por tratarse de una mera inicialización.

Código Delphi [-]
procedure TDataSet.CheckBrowseMode;
begin
  CheckActive;
  DataEvent(deCheckBrowseMode, 0);
  case State of
    dsEdit, dsInsert:
      begin
        UpdateRecord;
        if Modified then Post else Cancel;
      end;
    dsSetKey:
      Post;
  end;
end;

Utilizo Post cuando es seguro que el estado será dsEdit o dsInsert y quiero guardar cualquier posible asignación. Utilizo CheckBrowseMode para asegurar que la tabla esté en modo dsBrowse sin perder datos valiosos que alguien o algo haya podido asignar. Para eso es CheckBrowseMode. ;)

Un abrazo checado, browseado y módico. Me voy al cine....:cool:

Al González. :)


La franja horaria es GMT +2. Ahora son las 00:53:00.

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