list := TClientDataSet.Create(Application);  list.FieldDefs.AddFieldDef.Name := 'ProductID';
  list.FieldDefs.AddFieldDef.DataType := ftInteger;  list.FieldDefs.AddFieldDef.Name := 'ProductName';
  list.FieldDefs.AddFieldDef.DataType := ftString;
  list.FieldDefs.AddFieldDef.Size := 32;  list.FieldDefs.AddFieldDef.Name := 'SaleTotalPrice';
  list.FieldDefs.AddFieldDef.DataType := ftCurrency;  list.FieldDefs.AddFieldDef.Name := 'TotalAmount';
  list.FieldDefs.AddFieldDef.DataType := ftInteger;  list.FieldDefs.AddFieldDef.Name := 'InTotalPrice';
  list.FieldDefs.AddFieldDef.DataType := ftCurrency;  list.FieldDefs.AddFieldDef.Name := 'SubPrice';
  list.FieldDefs.AddFieldDef.DataType := ftCurrency;  list.IndexDefs.AddIndexDef.Name := 'IniIndex';
  list.IndexDefs.AddIndexDef.Fields := 'ProductID';  list.CreateDataSet;
  list.Open;