Fab*_*mes 6 delphi tclientdataset delphi-xe
我有一个带有几条记录的TClientDataSet,我希望o加载所有记录,但是按需加载blob字段,一次加载一个.
我注意到调用FetchBlobs两次获取blob两次,并且检查字段的IsNull属性总是返回False.
所以,我迄今发现的唯一的解决办法是访问属性一样的价值或BlobSize如果斑点尚未获取抛出一个异常EDBClient与消息"一滴也没有被取出",因此,如果这引发异常我叫FetchBlobs .
有没有更好的方法来做到这一点?
try
cdsIMG.BlobSize;
except
on E: EDBClient do
cds.FetchBlobs;
end;
Run Code Online (Sandbox Code Playgroud)
如果您必须知道 blob 的数据是否已被检索,我相信 TOndrej 的答案将是正确的选择。但你不必..
\n\n当poFetchBlobsOnDemand在“DataSetProvider”选项中设置并FetchOnDemand在“ClientDataSet”上设置时,行为已经如您所描述的那样。即,客户端数据集FetchBlobs仅在尚未检索到 blob 数据且仅在需要时调用。
来自“ Provider.TProviderOption Enumeration ”:
\n\n\n\npoFetchBlobsOnDemand \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0BLOB 字段不包含在数据包中。[...] 如果客户端数据集的 FetchOnDemand 属性为 true,则客户端会自动请求这些值。[...]
\n