2012-04-18 9 views
2

デルファイでは、サービスのドロップダウンと選択サービスのアドオンのグリッドを持つフォームを作成しています。私は取得していますデータがAPIから来て、次のように私はADODataSetでサービスするためのデータを格納しています:Delphi - ADODataSetサブセット

ID (integer) 
Name (string) 
Description (string) 
BasePrice (currency) 
AddOns (array of AddOn, not currently stored in the ADODataSet) 

私は、グリッドをドロップダウンから選択に基づいてアドオンデータを取り込む持ちたいです(各サービスにはアドオンのリストが異なります)。 AddOn情報を保存してサービス情報に関連付ける方法を教えてください。 2番目のADODataSetを作成する必要がありますか、それをサービスと同じADODataSetに格納する方法はありますか?

アドオンは、次のフィールドがあります

ID (integer) 
Name (string) 
Description (string) 
UnitPrice (currency) 
Quantity (integer) 

私は、Delphi 2005を使用し、デルファイのためのインディを持っています。私はタイプ「データセット」のフィールドを作成することができることを見出したデータセットの項目エディタの周り掘って

EDIT

。これで私は両者を結びつけることができますか?もしそうなら誰かがそれがどのように行われたのか説明できますか?

2番目のデータセット(ADODataSetAddOns)を作成し、新しいデータセットを最初のデータセット(ADODataSetServices.AddOns)のデータセットフィールドに割り当てて、「データセットに一致するADOデータ型がありません」というエラーメッセージが表示されました。 AddOnsフィールドを参照してデータセットを見つけられないと想定しています。

答えて

2

あなたはインデックス、このクライアントデータセットの構造としてService IdAddon Idペアを使用して、選択を保存できるメモリのデータセットとしてTClientDatasetを使用して[サービスとアドオンとの関係を示すために、2つのデータセット(マスター・ディテール)を使用することができますこの

ClientDataSet1.FieldDefs.Clear; 
    ClientDataSet1.FieldDefs.Add('IdService', ftInteger); 
    ClientDataSet1.FieldDefs.Add('IdAddon ', ftInteger); 
    //add morr fieldd here is you want 
    ClientDataSet1.IndexDefs.Add('Index1','IdService;IdAddon',[ixPrimary, ixUnique]); 
    ClientDataSet1.IndexName:='Index1'; 
    ClientDataSet1.CreateDataSet; 

そして最後に、あなたがただのたTDataSetとClientDataSetのを反復処理することができますサービスにユーザーが選択したデータを渡す必要があるように、実行時に作成することができます。

+0

入力いただきありがとうございます。サービスとアドオンの両方でClientDataSetsを使用して解決し、マスター/詳細にすることができました。 – BrianKE