【发布时间】:2017-08-01 19:43:33
【问题描述】:
我创建了一个具有以下结构的 FDMemTable:
Cds_NaMenu := TFDMemTable.Create(nil);
Cds_NaMenu.FieldDefs.Add('ID', ftInteger);
Cds_NaMenu.FieldDefs.Add('MN_TELA_CODIGO', ftInteger);
Cds_NaMenu.FieldDefs.Add('MN_MENU_PESQUISA', ftString, 500);
Cds_NaMenu.FieldDefs.Add('DISPONIBILIDADE', ftInteger);
Cds_NaMenu.IndexDefs.Add('Ordem', 'MN_TELA_CODIGO', []);
Cds_NaMenu.CreateDataSet;
Cds_NaMenu.LogChanges := False;
Cds_NaMenu.IndexName := 'Ordem';
我把数据放在 TFDMemTable 中是这样的:
Cds_NaMenu.Append;
Cds_NaMenu.FieldByName('DISPONIBILIDADE').AsInteger := 1;
Cds_NaMenu.Post;
嗯...当将过滤属性设置为 True 并返回 False 时,就会出现问题。 RecordCount 属性变为 0;即使我使用 saveToFile 程序,也没有找到任何数据。显然数据丢失了。
_recCount := Cds_NaMenu.RecordCount; // Result = 867;
Cds_NaMenu.Filter := 'DISPONIBILIDADE=1 AND MN_MENU_PESQUISA like ' + QuotedStr('%' + sTexto + '%');
Cds_NaMenu.Filtered := True;
_recCount := Cds_NaMenu.RecordCount; // Result = 0;
Cds_NaMenu.Filtered := False;
Cds_NaMenu.Filter := '';
_recCount := Cds_NaMenu.RecordCount; // Result = 0;
PS:使用ClientDataSet,这段代码可以完美运行
【问题讨论】:
-
依赖于数据集的 RecordCounts 返回有意义值的代码是在自找麻烦。除此之外,正如您所发现的,不同的数据集类型以不同的方式表现。听起来您的实际问题是 X/Y 问题。
标签: delphi filter firedac fdmemtable