加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 检查查询是否返回比创建它时更多的字段并定义其持久字

发布时间:2020-12-15 09:30:40 所属栏目:大数据 来源:网络整理
导读:当你有一个select * from XXX查询时,你最终可以获得比预期更多的字段,你知道是否有办法检查自创建该查询以来是否添加了新字段并定义了其持久字段? 通常,您可以打开查询,而不必担心是否添加了新字段.如果新字段不在您的持久字段中,那么您将无法看到它们.但是
当你有一个select * from XXX查询时,你最终可以获得比预期更多的字段,你知道是否有办法检查自创建该查询以来是否添加了新字段并定义了其持久字段?

通常,您可以打开查询,而不必担心是否添加了新字段.如果新字段不在您的持久字段中,那么您将无法看到它们.但是在Datasnap REST服务器上,当您尝试从现在具有比创建其持久字段时更多字段的查询返回数据集时,您会获得AV.

如果想知道是否有快速检查我可以这样做,我可以返回一个更有用的错误而不是AV.

就像是 :

MyQuery.Open;
if MyQuery.FieldDefs.Count <> MyQuery.Fields.Count then begin
  raise Exception.Create('The number of returned Fields doesn''t match the expected');
end;

谢谢

解决方法

如果数据集具有持久字段,并且您希望在查询打开时创建其他字段,则必须首先将dataset.FieldOptions.AutoCreateMode设置为acCombineAlways.

现在打开查询后,您可以使用dataset.Fields.LifeCycles中的lcAutomatic检查其他字段是否存在.

如果您对哪些字段是新的感兴趣,只需迭代dataset.Fields并检查field.LifeCycle = lcAutomatic.

顺便说一句,使用上面的设置你可能不再需要那个检查了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读