int count=0;
TFDQuery *myquery;
if ((myquery=new TFDQuery(NULL))!=NULL) {
myquery->Connection=MyDataModule->MySqlLiteConnection;
if (myquery->Open(_T("SELECT COUNT(*) from TableName where FieldName=:V"), OPENARRAY(Variant, (reinterpret_cast<intptr_t>(TreeNode->Data))))) {
count=myquery->Fields->Fields[0]->AsInteger;
myquery->Close();
}
delete myquery;
}
2条答案
按热度按时间rqqzpn5f1#
如果您想要一个可以完全在应用程序中计算的替代方案,而不必对服务器发出新命令,那么您可以临时克隆数据集。
该克隆不会影响您的TDBGrid,因此您可以根据需要的任何条件进行过滤,并返回满足该条件的记录数。
示例:
当您在CachedUpdates模式下工作时,这也非常有用,因为它将正确地计算屏幕上的记录,即使它们尚未应用到数据库。
xqk2d5yq2#
这里有一个可能的答案--在同一个连接上创建一个全新的
TFDQuery
对象。我不知道这是否是“答案”,但这似乎是我想要的:我刚开始使用try/catch try/finally,但它似乎比老学校更麻烦: