Pues muchas gracias.. ya está, si te soy sincero al ver tu respuesta pensé que no serviría, pues había probado practicamente lo mismo sin el if y el error me seguía dando en el post...
peeeero.. he probado tu codigo al que he tenido que añadir un IbTableInfo.open; despues del transaction.StartTransaction y tatachaaaan!!!..
Por si a alguien le interesa mi codigo final ha quedado así, ni me molesto en depurar pues esta operación posiblemente se ejecute una vez al año
con que funcione vale.
Código Delphi
[-] if IbTransaction1.Intransaction then
IbTransaction1.Commit;
IbTransaction1.StartTransaction;
IBTableInfo.open;
IBTableInfo.Edit;
IBTableInfo.FieldByName('VERSIONDB').value:=sigVersion(floattostr(version));
IBTableInfo.post;
IBTableInfo.Transaction.commitretaining;
showmessage(IBTableInfo.FieldByName('VERSIONDB').AsString);
Bueno.. muchisimas gracias otra vez