|
Po lo general evito usar un grid para editar información, Esto me permite separar por un lado los datasets para actualizacoón de datos de los datasets para recuperación de datos.
Dicho en concreto, tengo un dataset tblCliente (suponiendo que uso un TTable) en un datamodule general en donde, además, tendré un tblFactura, tblPedido, tblProducto, etc.
En este datamodule programo básicamente los eventos OnNewRecord (si necesito valores por defecto), OnBeforePost, para hacer validaciones y OnPostError para manejar errores generados en el servidor.
En el formulario Clientes (donde mostraría una lista de clientes) coloco un dataset para alimentar al grid que muestre los clientes. Pero este dataset es de sólo lectura. Cuando requiera editar los datos de un cliente o agregar uno nuevo abro una ventana para ello con sus correspondientes dbedits enlazados al tblCliente del datamodule general.Si es un registro nuevo uso tblCliente.Append. Si estoy editando un registro existente uso tblCliente.Locate para colocarme en el registro correspondiente.Al Locate le paso como argumento la llave primaria del registro, misma que obtengo del dataset que usé para alimentar al grid.
// Saludos
|