我創建了一個FDMemTable用以下結構之後清除數據:TFDMemTable丟失/過濾
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;
嗯......這個問題ocurrs當將過濾的屬性設置爲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的問題。 – MartynA