Dataset runtime creation in Delphi

Viewed 291

I'm optimizing my system and I'm trying to do a more dynamic form of dataset creation to do inserts, updates, delete, and even searches. I was able to get here trying to make an insert, but a DatasetProvider error occurs even though I have already directed it to the ClientDataset, and the error occurs when opening the TClientDataSet:

procedure TF_Teste.Button1Click(Sender: TObject);
VAR
  sdsTemp : TSQLDataSet;
  dspTemp : TDataSetProvider;
  cdsTemp : TClientDataSet;
  dsTemp : TDataSource;
begin
  try
    //Cria o TSQLDataSet
    sdsTemp := TSQLDataSet.Create(nil);
    sdsTemp.SQLConnection := DMPrin.HYPERBD;
    sdsTemp.Close;
    sdsTemp.CommandText := 'SELECT * FROM CLIENTE';

    //Cria o TDataSetProvider
    dspTemp := TDataSetProvider.Create(nil);
    dspTemp.Name := 'dspProvider';
    dspTemp.DataSet := sdsTemp;
    dspTemp.Options := dspTemp.Options + [poAllowCommandText];
    dspTemp.Options := dspTemp.Options + [poUseQuoteChar];

    //Cria o TClientDataSet
    cdsTemp := TClientDataSet.Create(nil);
    cdsTemp.ProviderName := dspTemp.Name;

    cdsTemp.Open; //Nesse momento ocorre o erro de "Missing dataset provider ou data packet"
    cdsTemp.Append;
    cdsTemp.FieldByName('NOME').AsString := 'Teste dataset';
    cdsTemp.ApplyUpdates(0);
  finally
    FreeAndNil(sdsTemp);
    FreeAndNil(dspTemp);
    FreeAndNil(cdsTemp);
  end;
end;

I'm still going to optimize the code further by putting it into a function, but now I'm just trying to make it work. Could you help me with this problem? Thank you in advance.

0 Answers
Related