Catching EDatabaseError from one of several Post within a transaction

I believe that this must be a common problem:
Two Datasets which both have been opened and put in append mode:

Both Datasets are used in the same Form and should be storeed within one
transaction.
This is what I've tried:

procedure TFrmDetail.BtnOkClick(Sender: TObject);
begin
   DB.StartTransaction;
   try
     Qry1.Post;
     Qry2.Post;
     DB.Commit;
     ModalResult := mrOk;
   except
        DB.Rollback;
   end;

Now to the problem:
If the first Post succeed, and the second not, the Qry1 is no more in
append mode,
and by next attempt to call Qry.Post the result will be an exception
(Dataset is not in Edit or Insert mode).

The next thing I did try was to re-append the dataset in the except
section:
   except
        DB.Rollback;
        if (Qry1.State <> dsInsert then
            Qry1.Append;
        if (Qry2.State <> dsInsert then
            Qry2.Append;

Then the values entered in the Form are cleared, which forces the user
to reenter all values......

Would appreciate if someone good give me hints.

Anders