【问题标题】:Error loading image from clientdataset using datasnap [Delphi XE7, firemonkey mobile]使用 datasnap 从客户端数据集加载图像时出错 [Delphi XE7,firemonkey mobile]
【发布时间】:2014-09-05 08:01:10
【问题描述】:

我正在使用 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;

【问题讨论】:

    标签: android blob datasnap tclientdataset delphi-xe7


    【解决方案1】:

    试试这个:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2020-01-29
      相关资源
      最近更新 更多