我使用的是Delphi XE7,Firemonkey Mobile。在W32和我的Nexus4(Android 4.4.4)上都试过。
问题:从clientdataset加载图像时,出现以下错误 1.远程错误:[FireDAC] {Phys] [fB] -306。命令文本不能为空。 (连接) 2.套接字错误,即使CDS已包含数据(无连接)
Firebird DB - > Firedac - > Datasnap [服务器] - > DBX连接 - > DSProviderconnection - > Clientdatasets
服务器上的datasetprovider设置了以下选项: - poFetchBlobsOnDemand - poAllowCommandText
加载的字段确实是一个blob字段,并且确实包含数据。
if DM_OD.CDS_QEmballage.FieldByName('AFBEELDING').IsBlob then
begin
if DM_OD.CDS_QEmballage.FieldByName('AFBEELDING').IsNull then
begin
showmessage('Empty!'); //for testing puropses
end
else
begin
try
BF := DM_OD.CDS_QEmballage.FieldByName('AFBEELDING') as TBlobfield;
BS := DM_OD.CDS_QEmballage.CreateBlobStream(BF, bmRead); //error message
self.Items[i].EmbalPic.LoadFromStream(BS);
finally
BS.Free;
end;
end;
end;
答案 0 :(得分:0)
试试这个:
var
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
try
TBlobField( DM_OD.CDS_QEmballage.FieldByName('AFBEELDING') ).SaveToStream( ms );
self.Items[i].EmbalPic.LoadFromStream( ms );
finally
ms.Free;
end;
end;