Hola Alejandro73:
Ya había probado la solución que sugieres y funciona, pero he encontrado otra sin la necesidad de eliminar el TDbNavegator, preparé un pequeño programa de ejemplo para probar y el resultado es este:
1. Creo un procedimiento para grabar el registro, como son campos persistentes no necesito el Sender, además así lo puedo invocar desde cualquier otro evento, lo que muestro es un ejemplo particular de mi aplicación, pero se entiende.
Código Delphi
[-]
procedure TForm1.GrabarFechasPostError;
var
FechaAMD: string;
begin
FechaAMD := Copy(FechasFecha.AsString,7,4)+Copy(FechasFecha.AsString,4,2)+Copy(FechasFecha.AsString,1,2);
with GrlDT do begin
Close;
CommandText := 'INSERT INTO TestFechas (Fecha) VALUES ('''+FechaAMD+''')';
CambiarSQLText.Params[0].AsString := 'GrlSQLSrvDT';
CambiarSQLText.Params[1].AsString := CommandText;
CambiarSQLText.ExecuteMethod;
Execute;
end;
end;
Luego en el evento OnPostError de la tabla pongo este código:
Código Delphi
[-]
procedure TForm1.FechasPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Action := daAbort;
GrabarFechas;
Fechas.Close;
Fechas.Open;
Fechas.Last;
grdFechas.SetFocus;
PostMessage(ActiveControl.Handle, WM_KEYDOWN, VK_DOWN, 0); end;
Así funciona correctamente, pero creo que es una solución TEMPORAL, porque insisto, el dbExpress debe resolver esta situación al generar el SQL automático.
De todas formas agradeceré una respuesta para evitar estos artificios.
Muchas gracias.