2012-04-18 2 views
2

Delphi에서 서비스 드롭 다운과 선택 서비스 용 그리드가있는 양식을 작성 중입니다. 내가 얻고 데이터는 API에서 오는 다음과 같이 나는 ADODataSet에서 서비스에 대한 데이터를 저장하고 : 내가 좋아하는 것 Delphi - ADODataSet Subset

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

그리드가 드롭 다운 메뉴에서 선택에 따라 애드온 데이터로 채워 가지고 (각 서비스에는 추가 기능 목록이 다릅니다). 애드온 정보를 서비스 정보와 다시 연관시킬 수 있도록 어떻게 저장합니까? 두 번째 ADODataSet을 만들어야합니까? 아니면 서비스와 동일한 ADODataSet에이 ADODataSet을 저장하는 방법이 있습니까? 나는 2005 년 델파이를 사용하여 델파이 인디을하고

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

:

애드온에는 다음과 같은 필드가 있습니다.

내가 유형 '데이터 집합'의 필드를 만들 수 있다는 것을 발견 데이터 집합의 필드 편집기 주위에 파고 편집

. 이게 내가 둘을 묶는 것을 허락 할 수 있겠습니까? 그렇다면 누군가 어떻게 그것이 이루어 졌는지 설명 할 수 있습니까?

두 번째 데이터 집합 (ADODataSetAddOns)을 만들고 첫 번째 데이터 집합 (ADODataSetServices.AddOns)의 데이터 집합 필드에 새 데이터 집합을 할당했지만 '데이터 집합에 일치하는 ADO 데이터 형식이 없습니다.'라는 오류 메시지가 나타납니다. AddOns 필드가 데이터 셋을 찾지 못한다고 가정합니다.

답변

2

당신은 당신이 색인이 클라이언트 데이터 셋의 구조와 Service Id, Addon Id 쌍을 사용하여 선택 사항을 저장할 수있는 메모리의 데이터 세트로 TClientDataset를 사용하여 다음 서비스 및 부가 기능과의 관계를 보여주기 위해이 개 데이터 세트 (마스터 - 세부)를 사용할 수 있습니다 이

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