使用datasnap从Clientdataset加载图像时出错[Delphi XE7,firemonkey mobile]

时间:2014-09-05 08:01:10

标签: android blob datasnap tclientdataset delphi-xe7

我使用的是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;

1 个答案:

答案 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;