According to this page, it's possible to use TClientDataset
as an in-memory dataset, completely independent of any actual databases or files. It describes how to setup the dataset's table structure and how to load data into it at runtime. But when I tried to follow its instructions in D2009, step 4 (table.Open
) raised an exception. It said that it didn't have a provider specified.
The entire point of the example on that page is to build a dataset that doesn't need a provider. Is the page wrong, is it outdated, or am I missing a step somewhere? And if the page is wrong, what do I need to use instead to create a completely independent in-memory dataset? I've been using TJvMemoryData
, but if possible I'd like to reduce the amount of extra dependencies that my dataset adds into my project.
At runtime you can use table.CreateDataset
or if this is on a design surface you can right click on the CDS and click create dataset. You need to have specified columns/types for the CDS before you can do this though.
If it helps further, here is a piece of code where I created a ClientDataset that is used as an in-memory table:
procedure TfrmPRMain.ConfigureDataset;
begin
With cdsMain do begin
FieldDefs.Add('bDelete', ftBoolean);
FieldDefs.Add('sSource', ftString, 10);
FieldDefs.Add('iSection', ftInteger);
FieldDefs.Add('iOrder', ftInteger);
FieldDefs.Add('sBranch', ftString, 10);
FieldDefs.Add('sPulseCode', ftString, 10);
FieldDefs.Add('sCode', ftString, 10);
FieldDefs.Add('dtWorkDate', ftDate);
FieldDefs.Add('iWorkWeek', ftInteger);
FieldDefs.Add('sName', ftString, 50);
CreateDataSet;
LogChanges := False;
Open;
end;
end;
You can just substitute your own data information and go. Jack
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With