首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi和Firedac :查询活动与查询打开

Delphi和Firedac :查询活动与查询打开
EN

Stack Overflow用户
提问于 2017-06-09 14:36:20
回答 2查看 4.1K关注 0票数 3

我的应用程序的大多数表单使用2个或更多的数据库网格:基本上,用户在主网格中单击一条记录,然后在辅助网格中得到子结果。

我所有的主DBGrids FDQueries (也就是带有SELECT的那个)都已在窗体上设置,但没有一个是“活动的”,它们在FormShow上触发。

我注意到,无论我写的是:

代码语言:javascript
运行
复制
FDQuery1.Active := True;

代码语言:javascript
运行
复制
FDQuery1.Open;

结果是一样的:我的行显示在主DBGrid中。

因此,我在FormClose上调用CloseActive := False

但这些方法之间肯定有区别,这就是我的问题的主题:Query.OpenQuery.Active := True;之间的区别是什么?

如果有任何显著的差异,我应该使用什么?

提前感谢

数学,当你花时间回答我的问题时,变得越来越新手:)

附注:我的INSERT和UPDATE查询是用一个CLEAR then、SQL.ADD、参数声明和最后一个ExecSQL设置的

EN

回答 2

Stack Overflow用户

发布于 2017-06-09 23:53:00

Active是一个属性,Open是一个方法。当Active设置为true时,它调用Open方法,当它设置为false时,它调用Close。Active非常有用,因为它可用于检查数据集是否实际处于打开状态。

代码语言:javascript
运行
复制
if Qry.Active then DoSomething;
票数 2
EN

Stack Overflow用户

发布于 2017-06-09 20:56:53

旁注:我的INSERT和UPDATE查询是用一个清晰的then、SQL.ADD、参数声明和最后的ExecSQL设置的

ActiveOpen之间没有区别。(参见谁的父亲评论)他们做同样的事情-数据集变成活动的,并从SELECT语句返回结果。

您还可以使用属性Active检查数据集是否处于活动状态,例如:

代码语言:javascript
运行
复制
if not MyQuery.Active then 
  MyQuery.Open; // or MyQuery.Active := true;

表执行不返回数据游标的查询(如INSERT、UPDATE、DELETE和CREATE TABLE)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44450881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档