2014-09-19 50 views
0

我的数据库表(客户)有一个字段“活动”(是否)。我正在使用TADOTable来处理这个表格,我希望在我的应用程序的状态栏中有一个统计信息,说明有多少客户处于活动状态,有多少客户未处于活动状态。我可以随时阅读,如果我的当前客户是活跃的写这篇文章:TADOTable - 如何一次计算特定记录?

bool isActive = CustomerADOTable->FieldByName("Active")->AsBoolean; 

但是,如何一次检查所有记录?或者我真的需要使用TADOQuery和sql语句吗?

回答

2

你要么必须运行一个查询,要么循环遍历表中的所有记录,并保持活动设置为true的计数。

查询将快得多,除非您的记录很少。查询是正确的方式(tm)来做到这一点。它会更好。

+1

我希望避免这两种情况。但是,如果没有其他方法,我认为查询将成为我的选择。 – Tracer 2014-09-19 20:42:04

1

为了避免循环和自己的查询,可以使用Filter属性。

begin 
    Showmessage(IntToStr(DS.RecordCount)); 
    DS.Filter := 'Active=true'; 
    DS.Filtered := true; 
    Showmessage(IntToStr(DS.RecordCount)); 
    DS.Filtered := false; 
end; 
+0

我觉得我应该删除我的答案......这是错的。确认? – 2014-09-19 21:29:31

+0

不幸的是,我在浏览记录时已经使用了有效的过滤器,这会弄乱它。我需要的是计数DataSource :: OnDataChange事件中的记录。实际上,我会看看是否可以使用SQL语句使用TADOTable :: AfterPost事件。 – Tracer 2014-09-19 21:31:29

+2

@LynnCrumbling你的答案应该是错的,我们只是在收集可能性。 – bummi 2014-09-19 21:39:08