2

我在 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);

使用 XE5 和 Firedac。我已经尝试过 Connection.RefreshMetadataCache 并且我已经从 FetchOptions.Cache 中删除了 fiMeta。

如果我修改 SQL.Text,我可以让 Firedac 识别新字段。这是不可取的,因为我的应用程序需要在很多地方进行修改。

4

1 回答 1

3

调用 FDQuery5.Close 后,查询仍然准备就绪。这意味着,它还缓存结果集结构。要准备查询,请将 FDQuery5.Close 替换为 FDQuery5.Disconnect。

于 2014-03-11T09:10:26.470 回答