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
raise exception.Create('error actualizando tabla. Posibles indices duplicados'); end;
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;