Ver Mensaje Individual
  #8  
Antiguo 16-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
no no al salir del DBEdit no se produce un post mil excusas. Eso si, el locate si que hace updates a la base de datos (no me preguntes cuando, creo q con el UpdateWhereAll activado pero no estoy seguro. Personalmente, estoy escarmentado de mover el cursor de una tabla si esta en modo edit). Si tu mueves el cursor de la tabla (locate, gotonearest, etc...) el valor de DBEdit se actualiza solo. Prueba de hacer, en el momento en que hagas post, olvidandote de los eventos, algo asi:

Código Delphi [-]

try
    TablaClientes.Post;
except
// Codigo si hay error.
raise exception.Create('error actualizando tabla. Posibles indices duplicados'); // se sale de la funcion
end;

// resto de codigo si no hay error en post.

Venga, a ver si te sirve.

PD: La propiedad UpdateMode de la tabla o query puede tener la opcion UpdateWhereAll, UpdateWhereChanged y UpdateKeyOnly
PDD : Si el codigo cliente es un indice, no seria mejor q lo adjudicase de manera automatica? En el caso q no, en el evento OnExit del dbedit del codigo cliente (poco elegante pero efectivo)

Código Delphi [-]

try
    Tabla.Post;
    Tabla.Edit;
except
    ShowMessage('Este codigo ya existe');
    DBEdit_codigo_cliente.SelectAll;
    DBEdit_codigo_cliente.SetFocus;
end;

Última edición por coso fecha: 16-05-2008 a las 22:37:04.
Responder Con Cita