0

我正在使用 Delphi XE7,Firemonkey Mobile。在 W32 和我的 Nexus4 (Android 4.4.4) 上都试过了。

问题:从客户端数据集加载图像时出现以下错误 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;
4

1 回答 1

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;
于 2014-11-07T04:02:42.280 回答