SQL で一時テーブルを作成し、新しいフィールドを追加しています。Firedac がこの一時テーブルのフィールド リストをキャッシュしているようです。
次のコードでは、「FDQuery5: フィールド '利用可能' が見つかりません」というメッセージが表示されます。
FDQuery5.Connection := FDConnection1;
FDConnection1.ExecSQL('Select StockNo into #Temp from Stock');
FDQuery5.SQL.Text := 'Select * From #Temp';
FDQuery5.open;
FDConnection1.ExecSQL('Alter Table #Temp add Available Char(1)');
FDQuery5.Close;
FDQuery5.open;
ShowMessage(FDQuery5.FieldByName('Available').AsString);
Firedac で XE5 を使用します。Connection.RefreshMetadataCache を試し、FetchOptions.Cache から fiMeta を削除しました。
SQL.Text を変更すると、Firedac に新しいフィールドを認識させることができます。私のアプリケーションはかなりの数の場所で変更が必要になるため、これは望ましくありません。