I've used IBConnection1 instead, which seems to work:
s:='ALTER TABLE FIELDS ADD '+UpperCase(SelectedAttributes.Names[i])+'_ VARCHAR(255);';
IBConnection1.ExecuteDirect(s);
SQLTransaction1.Commit;
However, although I don't get any noticeable error, neither can I see the records added to the Table in FlameRobin when I use the same technique to INSERT a record:
sfield:='INSERT INTO FIELDS(ID';
svalue:=' VALUES(0';
for i:=0 to SelectedAttributes.Count-1 do
begin
//
sfield+=','+SelectedAttributes.Names[i]+'_';
svalue+=','''+SelectedAttributes.ValueFromIndex[i]+'''';
end;
sfield+=')';
svalue+=')';
IBConnection1.ExecuteDirect(sfield+svalue);
SQLTransaction1.Commit;