Va...
Este código no me dice mucho...
Si estás haciendo la edición sobre un dbGrid y después pulsas el botón Aceptar del que me pones el código... pues no es necesario hacer un Post, pues al terminar de editar o insertar registros en un dbGrid, el post se hace solito al salir del control, saltar a otra fila o llegar al final de tu captura y dar enter, en caso de querer cancelarla tienes que pulsar ESC, este manejo lo hace solito el dbGrid.
¿cuál es el objetivo de este código?
Primero haces una comprobación si se encuentra en modo de inserción o modificación, si se encuentra en cualquiera de estos modos haces Post (que sirve para guardar solamente datos que estás modificando o insertando) y enseguida haces un Insert (lo que indica que estás a punto de insertar un nuevo registro y tu query se pondrá en state=dsInsert) y finalmente dejas la tabla en modo Insert si es que no ha saltado una excepción (perdón pero no he probado el código).
La manera correcta de realizar inserciones o ediciones sin un dbGrid es la siguiente:
Código Delphi
[-]
with Query do
begin
Edit; FieldByName('Recibo').AsString:= txtRecibo.Text;
.... FieldByName('Transac').AsString:= txtTransac.Text;
Post; end;
Y para Insertar solo cambias el Edit por un Insert, pero el Post se queda...
Te recomiendo cheques el libro gratuito de La Cara Oculta de Delphi 4, disponible en el FTP del Club, aquí encontrarás detalles sobre estas operaciones que por prisa no las he puesto, pero te podrían ayudar más.
Saludos