我的应用程序的大多数表单使用2个或更多的数据库网格:基本上,用户在主网格中单击一条记录,然后在辅助网格中得到子结果。
我所有的主DBGrids FDQueries (也就是带有SELECT的那个)都已在窗体上设置,但没有一个是“活动的”,它们在FormShow上触发。
我注意到,无论我写的是:
FDQuery1.Active := True;或
FDQuery1.Open;结果是一样的:我的行显示在主DBGrid中。
因此,我在FormClose上调用Close或Active := False。
但这些方法之间肯定有区别,这就是我的问题的主题:Query.Open和Query.Active := True;之间的区别是什么?
如果有任何显著的差异,我应该使用什么?
提前感谢
数学,当你花时间回答我的问题时,变得越来越新手:)
附注:我的INSERT和UPDATE查询是用一个CLEAR then、SQL.ADD、参数声明和最后一个ExecSQL设置的
发布于 2017-06-09 23:53:00
Active是一个属性,Open是一个方法。当Active设置为true时,它调用Open方法,当它设置为false时,它调用Close。Active非常有用,因为它可用于检查数据集是否实际处于打开状态。
if Qry.Active then DoSomething;发布于 2017-06-09 20:56:53
旁注:我的INSERT和UPDATE查询是用一个清晰的then、SQL.ADD、参数声明和最后的ExecSQL设置的
在Active和Open之间没有区别。(参见谁的父亲评论)他们做同样的事情-数据集变成活动的,并从SELECT语句返回结果。
您还可以使用属性Active检查数据集是否处于活动状态,例如:
if not MyQuery.Active then
MyQuery.Open; // or MyQuery.Active := true;表执行不返回数据游标的查询(如INSERT、UPDATE、DELETE和CREATE TABLE)。
https://stackoverflow.com/questions/44450881
复制相似问题