根据此页面,可以将其TClientDataset
用作内存数据集,完全独立于任何实际数据库或文件.它描述了如何设置数据集的表结构以及如何在运行时将数据加载到其中.但是当我试图遵循D2009中的指示时,步骤4(table.Open
)引发了异常.它说它没有指定提供者.
该页面上示例的整个要点是构建不需要提供程序的数据集.页面是错误的,它是否过时,或者我在某个地方错过了一步?如果页面错误,我需要使用什么来创建一个完全独立的内存数据集?我一直在使用TJvMemoryData
,但如果可能的话,我想减少我的数据集添加到项目中的额外依赖项的数量.
在运行时,您可以使用table.CreateDataset
或如果它在设计图面上,您可以右键单击CDS并单击创建数据集.您需要先为CDS指定列/类型,然后才能执行此操作.
如果它有进一步帮助,这里是一段代码,我在其中创建了一个ClientDataset,用作内存表:
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;
您只需替换自己的数据信息即可.插口
不要忘记在您的安装中包含MIDAS.DLL,或者只是在uses子句中包含MidasLib.否则使用TClientDataSet
会在客户端的计算机上引发错误.也许这很明显,但我实际上忘了这一次.
您可以使用 table.CreateDataSet
此页面中的代码在任何Delphi版本中都不起作用.对CreateDataSet的调用已经将数据集置于活动状态("已打开").您应该使用.CreateDataSet OR .Open.不是都.
当您想要自己填充数据集时,如果要从Provider(通过ProviderName属性)和.CreateDataSet获取数据,请使用.Open.
顺便说一句:有关ClientDataSets及其功能的深入参考,请参阅CodeGear Developer Network上的优秀Cary Jensen文章(首先阅读最旧的文章)