2015-01-08 4 views
0

FastReport 보고서에 필요한 모든 Database-Field를 얻는 방법을 아는 사람이 있습니까?FastReport 파일에서 참조 된 모든 필요한 DatabaseField

배경 : 일반적으로 보고서의 모든 데이터는 직접적인 데이터베이스 연결이 아닌 delphi에서 직접 가져옵니다. 빠른 보고서 파일을 편집 할 수있는 편집기가 있습니다. 우리는 사용자가 입력 한 데이터로 보고서의 미리보기를 보여주고 싶습니다. 따라서 우리는 사용 된 모든 데이터 집합과 보고서에 필요한 데이터 집합의 필드를 알아야합니다.

보고서의 필요한 데이터 세트가 속성을 사용하여 수행 할 수 있습니다하기 :

var 
    rpReport: TfrxReport 
begin 
    rpReport.DataSets 

그러나 우리는 수와 데이터 세트의 필드의 이름을 얻을 수있는 방법?

답변

0

제게는 XML 파일 인 .fr3 파일을 구문 분석합니다.

나는 (단지 표현에서 사용하는 필드를 포함) 모든 필드를 얻기 위해 다음과 같은 정규식을 사용 mDatasetName이 필드에 필요한 데이터 세트의 이름입니다

mDatasetName + '\.&#34;(?<fieldname>[^&]+)&#34;' 

. 컬렉션에 의해 얻은 데이터 셋의 모든 이름 :

for I := 0 to rpReport.DataSets.Count - 1 do 
    mDatasetName := rpReport.Datasets[I].DatasetName; 
1

모든 TfrxDataSet 하위 항목은 공개 입니다. FieldsCountGetFieldList 함수가 있습니다.

var 
    fl: TStringList; 

fl := TStringList.Create; 
rpReport.DataSets[0].DataSet.GetFieldList(fl); 
+0

그러나 제 경우에는 'rpReport.DataSets [0] .DataSet' 속성은 nil입니다. 데이터가 직접 데이터베이스 연결 일 때이 속성이 설정되었을 수도 있습니다 – elite

+0

@elite 데이터 집합이 보고서에 속해 있지 않다는 뜻입니까? rpReport.DataSets.Count 속성을 확인하십시오. – katz

+0

'rpReport.DataSets.Count'는 1이지만'rpReport.DataSets [0] .DataSet'는'nil'입니다. – elite