私はクライアントにサーバーアプリケーションを持っているdatasnapテクノロジを使用しています。 サーバはデータベースからデータを取得し、ストリームに入れ、次にクライアント側で取得します。 クライアントサイドのコードに「データプロバイダまたはデータパケットが見つかりません」というエラーが表示され続けます。「データプロバイダまたはデータパケットが見つかりません」エラー - クライアントデータセット内のストリームとしてデータを交換
サーバー側のコード:
function GetFiles(ClientID: integer): TStream;
var
CDS: TClientDataSet;
begin
try
Result := TMemoryStream.Create;
CDS := TClientDataSet.Create(nil);
with adsFiles do // ads is adodataset and dspFiles is the dataset provider which has its dataset property set to adsFiles
begin
Close;
Parameters.ParamByName('ClientID').Value := ClientID;
Open;
CDS.Data := dspFiles.Data;
CDS.Open;
CDS.SaveToStream(Result);
Result.Position := 0;
end;
finally
CDS.Free;
end;
クライアント側コード:
procedure ExportData;
var
StreamData: TStream;
begin
StreamData := SvrMethodClass.GetFiles(AClientID);
StreamData.Seek(0,soFromBeginning);
StreamData.Position:= 0;
cdsClientFiles.LoadFromStream(StreamData); // getting the error message "Missing Data Provider or Data Packet"
cdsClientFiles.Open;
end;
クライアント側は、私は、ClientDataSetのコンポーネントをドロップし、このデータセットの問題にデータをロードしようとしています私がどこに間違っているかを指摘する助けが集められれば、本当に感謝しています。おかげ
同様の質問:Streaming TClientDataSet using Datasnap in Delphi XE6 ソリューションをチェックしますが、それは
あなたがリンクしたqのコメントを読んでから、デバッグをしてください。問題を再現できない読者があなたを助けることができないので、MCVEを提供してください。一方、-1。 – MartynA
Btwでは、 'ads'が行を返すかどうかチェックしていません。それは意図的なのでしょうか? – MartynA
@MartynA私はサーバー側をチェックしました。私はそれが行を返すのを見ることができ、私はさらにxmlにデータを保存しようとしました、そしてそれは204MBです。 – mano