2009-08-13 8 views
1

に設定されているので、クライアントがパターンを送信するコードを処理しています。彼が 'getBENUds'を送信した場合、サーバーはSaveToStringメソッドを使用してこのテーブルのDataSetを返します。Delphi:クライアントデータセット:EDatabaseError on .Open; ProviderNameが

これがクライアントに送信されます。 (私はSynapseを使用しています)。

procedure TTCPSocketThrd.Execute; 
var s: String; 
    strm: TMemoryStream; 
    ADO_CON: TADOConnection; 
    ADO_QUERY: TADOQuery; 
    DS_PROV: TDataSetProvider; 
    DS_CLIENT: TClientDataSet; 
begin 
    CoInitialize(nil); 
    Sock := TTCPBlockSocket.Create; 
    try 
    Sock.Socket := CSock; 
    Sock.GetSins; 
    with Sock do 
     begin 
     repeat 
      if terminated then break; 
       s := RecvTerminated(60000,'|'); 
       if s = 'getBENUds' then 
       begin 

       //ini ADO_CON 
       ADO_CON := TADOConnection.Create(Form1); 
       ADO_CON.ConnectionString := 'not for public'; 
       ADO_CON.LoginPrompt := false; 
       ADO_CON.Provider := 'SQLOLEDB.1'; 
       ADO_CON.Open; 
       //ini ADO_QUERY 
       ADO_QUERY := TADOQuery.Create(ADO_CON); 
       ADO_QUERY.Connection := ADO_CON; 
       //ini DS_PROV 
       DS_PROV := TDataSetProvider.Create(ADO_CON); 
       DS_PROV.DataSet := ADO_QUERY; 
       //ini DS_CLIENT 
       DS_CLIENT := TClientDataSet.Create(ADO_CON); 
       DS_CLIENT.ProviderName := 'DS_PROV'; 
       //SQLQUERY Abfrage 
       ADO_QUERY.SQL.Clear; 
       ADO_QUERY.SQL.Add('SELECT * FROM BENU'); 
       ADO_QUERY.Open; 
       //DSCLIENTDATASET bauen 
       strm := TMemoryStream.Create; 
       DS_CLIENT.Open; 
       DS_CLIENT.SaveToStream(strm); 
      end 
      else if s = 'getBESTEds' then 
... 

ラインは言う:DS_CLIENT.Open例外がスローされます。

例外がスローされました:クラスEDatabaseErrorを。テキスト: 'データプロバイダまたはデータパッケージがありません'。

上記の「DS_PROV」のようにデータプロバイダが設定されているため、欠落しているデータパッケージである必要があります。

しかし、ClientDataSetは、データセットをDataSetProviderから取得して、データセットをデータベースから取得するADOQueryから取得しないでください。

これは私の知る限りではあります。私の目には、私がしたことがすべて正しかったので、あまりにも難しくないことを願っています。

答えて

3

使用

DS_CLIENT.SetProvider(DS_PROV); 

またはDS_PROVの作成後:(この時点では、あなたのコンポーネントが実際に名前がありません)

DS_PROV.name := 'DS_PROV'; 
+0

はフランシスが風下あなたを愛して:) – Acron

関連する問題