Si me permites quisiera hacer los siguientes comentarios
{1}: Estas liberando el objeto CDSProcedimientos, esto es eliminar todos los campos persistentes que podría tener definido.
{2}: Estas creando un nuevo objeto CDSProcedimientos, sin ningún campo persistente
{3}: Estas creando un nuevo dataset vacío, para agregar registros a el, pero no haz definido los campos que contiene.
{4}: Debería ir el código que define los campos del dataset antes de llamar al
Createdataset
Código Delphi
[-]
...
CDSProcedimientos.Free;
CDSProcedimientos := TClientDataSet.Create(Self);
CDSProcedimientos.OnCalcFields := CDSProcedimientosCalcFields;
...
begin
try
CDSProcedimientos.Close;
...
CDSProcedimientos.CreateDataSet;
except
end;
end;
...
Te adjunto un ejemplo de creación de un TClientDatset, obtenido desde
TCustomClientDataSet.CreateDataSet
Código Delphi
[-]
with CDS2 do
begin
with FieldDefs.AddFieldDef do
begin
DataType := ftInteger;
Name := 'Field1';
end;
with FieldDefs.AddFieldDef do
begin
DataType := ftString;
Size := 10;
Name := 'Field2';
end;
with IndexDefs.AddIndexDef do
begin
Fields := 'Field1';
Name := 'IntIndex';
end;
CreateDataSet;
end;
Saludos cordiales