2008-11-09 3 views
1

setting up an in-memory dataset with TClientDataset,에 대해 물어 보았고 양식 디자이너에서 "데이터 세트 작성"명령을 사용해야한다고 들었습니다. 그것은 마스터 - 디테일 데이터베이스 관계를 만들려고 시도하기 전까지는 잘 작동합니다. ftDataSet 유형의 필드 def가있는 경우 Create Data Set 명령을 실행하거나 런타임에 메서드를 호출하면 "잘못된 필드 유형"오류가 발생합니다. 몇 가지 검색을 수행 한 결과 이전에 다른 사람들이이 문제를 겪어 왔지만 아무도 답을 찾지 못하는 것으로 나타났습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?델파이 : 마스터/세부 데이터 집합에서 "잘못된 필드 유형"오류가 발생했습니다

답변

3

ftDataSet 열에 세부 정보를 입력하는 대신 키 참조에 대해 고유 한 정수 또는 GUID를 사용하고 다른 TClientDataSet에 세부 데이터를 배치하고 해당 키를 갖습니다. 당신이 정상적인 데이터베이스에서와 같이. 다른 테이블을 나타내는 각 TClientDataSet입니다.

1

ftDataSet 유형의 필드를 만드는 경우 데이터 집합을 정의해야합니다. 그렇지 않으면 유형이 유효하지 않습니다.

는 다음과 같은 방법으로, 데이터 집합을 정의 할 수 있습니다 :

  • 이 필드를 선택합니다.
  • ChildDefs 속성을 선택하고 [...] 버튼을 클릭하십시오.
  • 필드를 추가하십시오.

이제 데이터 세트를 만들 수 있습니다. 자식 중 하나가 ftDataSet 유형이 아니라면이 프로세스를 재귀 적으로 반복해야합니다.

1

이미 많은 시간을 낭비하는 심각한 문제. 마지막으로 내가 해결 방법을 찾을 여기에 설명 (감사 너희들!) :

http://www.delphigroups.info/3/6/171869.html

요약 : 범인은 마스터 클라이언트 데이터 셋의 필드 정의입니다 즉 ftDataset 필드를 포함하는 하나. 마스터 클라이언트 데이터 셋의 필드 정의가 비어있는 즉시 CreateDataSet 명령은 위에서 설명한 오류 메시지 ("잘못된 필드 유형")로 실패합니다.

해결 방법 : CreateDataset을 할 때 는 지시에 따라 마스터 - 세부 테이블을 작성하지만, 필드 정의가 비어 있는지 확인하십시오

A) 디자인 타임 : 당신이 전에 디자인 "마스터 데이터 집합 | | 마우스 오른쪽 단추는 데이터 집합 만들기" 폼에서 마스터 데이터 세트를 클릭하고 오브젝트 속성으로 이동 한 다음 FieldDefs를 클릭하고 FieldDefs 윈도우의 모든 필드를 삭제해야합니다. 처음에는 마스터 데이터 세트를 만들었으므로 어쨌든 거기에 아무 것도 없지만 나중에는 데이터 세트를 만듭니다. (나는 이것을 Delphi 2007에서 직접 시도해 보았습니다.)

b) 런타임 : [Name of Masterdataset] .CreateDataSet을 실행하기 전에 [Masterdataset] .FieldDefs.Clear를 호출하십시오. (나 자신을 시도하지는 않았지만 위의 링크에 신뢰할 수있는대로 설명되어 있습니다.)

너무 복잡하다면 위의 링크를 참조하십시오.

관련 문제