My problem with Navigator is that i don't control the information sent to the database, so when i try to post a new record all i get is a record with null index i can reach in runtime and no information sent to the database.
Taking a (very quick) look at your program i'm missing two things.
The first is i'm missing the ApplyUpdates. Even when you do a post (with the navigator) you need to do an Applyupdates on the changed dataset to transfer the data to the database.
Second is the missing commit on the transaction. You have a default transaction with caRollback, which means your changes would be rolled back when you don't commit the transaction explicitly.
So you can do the following (with a button, at the end of your program or after every post):
mainQ.ApplyUpdates;
if IBC.Transaction.Active then
IBC.Transaction.CommitRetaining;
@taazz: No, it is not needed to have the ID in the statement. NEW.ID will still be NULL if it has not been defined. You can do an insert with just one field value and the trigger should still assign an increment number to ID. (It has been so since at least fb 1.5. I'm not sure if you're experience is with an even older version
)