0

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

サーバー上のデータセットプロバイダーには、次のオプションが設定されています。 - 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 に答える