複数のレコードを持つ TClientDataSet があり、すべてのレコードをロードする必要がありますが、一度に 1 つずつオンデマンドで BLOB フィールドをロードします。
FetchBlobs を 2 回呼び出すと BLOB が 2 回フェッチされ、フィールドの IsNull プロパティをチェックすると常に False が返されることに気付きました。
したがって、これまでに見つけた唯一の解決策は、Value や BlobSize などのプロパティにアクセスすることです。BLOB がフェッチされていない場合、「Blob はフェッチされていません」というメッセージとともに例外が EDBClient に発生するため、この例外が発生した場合は FetchBlobs を呼び出します。 .
これを行うためのより良い方法はありますか?
try
cdsIMG.BlobSize;
except
on E: EDBClient do
cds.FetchBlobs;
end;