Delete all records from a MemDataset (like EmptyDataset)? lazarus / 16-Databases ---------------------------------------------------------------------- tatamata · 2009-09-16 07:58 Since there is no EmptyDataset method for TMemDataset, I use MemDataset1.First; while not MemDataset1.EOF do begin;   MemDataset1.Delete; End; But, this is incredibly slow for large datasets. Is there any workaround how to delete all records from a MemDataset? ---------------------------------------------------------------------- tatamata · 2009-09-18 18:48 I have found solution myself: Code: [Select]procedure EmptyMemDataSet(DataSet:TMemDataSet); var   vTemporaryMemDataSet:TMemDataSet;   vFieldDef:TFieldDef;   I:Integer; begin   try     //Create temporary MemDataSet     vTemporaryMemDataSet:=TMemDataSet.Create(nil);     //Store FieldDefs to Temporary MemDataSet     for I:=0 to DataSet.FieldDefs.Count-1 do begin       vFieldDef:=vTemporaryMemDataSet.FieldDefs.AddFieldDef;       with DataSet.FieldDefs[I] do begin         vFieldDef.Name:=Name;         vFieldDef.DataType:=DataType;         vFieldDef.Size:=Size;         vFieldDef.Required:=Required;       end;     end;     //Clear existing fielddefs     DataSet.Clear;     //Restore fielddefs     DataSet.FieldDefs:=vTemporaryMemDataSet.FieldDefs;     DataSet.Active:=True;   finally   vTemporaryMemDataSet.Clear;   vTemporaryMemDataSet.Free;   end; end; ---------------------------------------------------------------------- vladvons · 2013-10-08 18:02 to clear all records except fields clearing use MemDataSet.Clear(false); ---------------------------------------------------------------------- Dibo · 2013-10-08 21:01 Or just MemDataset.Close and MemDataset.Open? ---------------------------------------------------------------------- vladvons · 2013-10-09 05:41 No. calling Open() after Close() dosnt remove records from MemDataset