2016-10-24 5 views
5

select * from XXX 쿼리를 사용하면 예상보다 많은 필드를 얻을 수 있습니다. 방법이 있는지 알고 있습니까? 해당 쿼리를 생성하고 영구 필드를 정의한 이후로 새 필드가 추가되었는지 확인하십시오.쿼리가 생성 된 시간보다 더 많은 필드가 있는지 확인하십시오.

일반적으로 새 필드가 추가되었는지 걱정할 필요없이 쿼리를 열 수 있습니다. 새 필드가 영구 필드 안에 있지 않으면 필드가 표시되지 않습니다. 그러나 Datasnap REST Server에서 영구 필드를 만들 때보 다 많은 필드가있는 쿼리에서 Dataset을 반환하려고 할 때 AV를 얻습니다.

내가 할 수있는 빠른 검사가 있는지 알고 싶으면 AV 대신 유용한 오류를 반환 할 수 있습니다. 같은

뭔가 : 데이터 세트가 지속 필드가있는 경우

MyQuery.Open; 
if MyQuery.FieldDefs.Count <> MyQuery.Fields.Count then begin 
    raise Exception.Create('The number of returned Fields doesn''t match the expected'); 
end; 

당신

+3

왜 *에서가 아니라 쿼리에서 반환 할 열을 지정하지 않습니까? –

+0

예,이 오류를 방지하는 가장 좋은 방법은 있지만 서버에서 쿼리를 작성하는 것이 아닙니다. 누군가가 잊어 버린 경우 AV 대신 유용한 메시지를 보내려합니다. –

답변

6

감사하고 이러한 추가 필드는 쿼리가 열릴 때 만들려는 먼저 acCombineAlwaysdataset.FieldOptions.AutoCreateMode을 설정해야합니다.

이제 쿼리를 연 다음 추가 필드가 있는지 lcAutomatic in dataset.Fields.LifeCycles으로 확인할 수 있습니다.

새로운 필드가 필요한 경우에는 dataset.Fields을 반복하고 field.LifeCycle = lcAutomatic을 확인하십시오.

지금까지 위의 설정을 사용하면 더 이상 해당 확인이 필요하지 않을 수 있습니다.

+0

감사합니다. REST 클라이언트는 더 많은 필드가 있음을 알지 못하기 때문에 수표를 보관할 것입니다. –