2013-12-16 2 views
3

win-forms .net 4 응용 프로그램에서 C#을 사용하여 데이터가 동적으로로드되는 보고서에 다음과 같은 문제가 표시됩니다.C# rdlc "ProjectDS_ObservationImages"데이터 집합에 대한 DataReader를 만들 수 없습니다.

데이터로 보고서로드 소스 데이터 세트 "projectDS_ObservationImages"에 대한 DataReader를 만들 수 없습니다 :

this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_Site", this._dsProjectData.Tables["Site"])); 
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_Client", this._dsProjectData.Tables["Client"])); 
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_Head", this.getRangedHeadersCopy(this._htExcludeHeaders))); 
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_Obs", this.getRangedObservationsCopy(this._htExcludeObservations))); 
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_Images", dtProjectImages)); 
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_PMPL", this._dtPerMeterPerLineHeaders)); 
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ProjectDS_ObservationImages", this._dtObervsationImages)); 

그것은 마지막 데이터 소스가 원인이 보고서에 추가됩니다 발행물.

각 DataSource는 실제로 DataTable입니다. 모두는이 프로젝트의 DataSet 멤버이거나 스키마의 복제 된 개체이며 보고서의 유일한 DataSet으로 사용됩니다. 전달 된 DataTable의 이름과 보고서 내의 데이터 세트 이름은 100 % 일치합니다.

다른 모든 데이터는 보고서 작업에 전달되지만이 데이터 소스는 다른 6 개 데이터가 성공적으로 전달되는 것과는 달리 특별한 것이 아닙니다.

보고서를 처리 할 때 출력에 오류가 제공되지 않습니다.

DataReader가 실패 할 수있는 원인은 무엇입니까?

입력 해 주셔서 감사합니다.

업데이트 --------------------------------------------- ---------------------------

이름 바꾸기가 작동하지 않습니다. 수동으로 DataTable을 다시 만들 수 없습니다. 만들기 및 새로 만들기 동일한 데이터가있는 DataTable이 작동하지 않습니다.

보고서 요소를 복사하여 하위 보고서에 붙여 넣고 주 보고서에 하위 보고서를 포함하면 모든 것이 잘 작동하고 동일한 데이터 작성 코드, 동일한 데이터 및 동일한 보고서 레이아웃이 작동합니다.

rdlc 파일이 손상 되었습니까?

답변

2

나는 이것을 자세히 조사해야했지만 왜 아직도 이해가 안되지만 하위 보고서가 필요하지 않은 문제를 해결할 수있는 방법이 있으며 다른 사람들을 도울 수 있습니다.

소스 모드에서 보고서를 엽니 다. 솔루션 탐색기에서 마우스 오른쪽 단추를 클릭하고,를 연 다음 XML 편집기를 엽니 다.

rdlc 소스에는 <DataSet> 노드로 표시되는 보고서 정의 데이터 세트의 부모 인 요소 <DataSets>이 표시됩니다.

제 경우에는 데이터 판독기 오류를 생성 할 수없는 원인이 마지막입니다.

데이터 세트 "projectDS_ObservationImages"

<DataSets> 
    <DataSet Name="ProjectDS_Head"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>Headers</rd:TableName> 
     <rd:TableAdapterFillMethod>Fill</rd:TableAdapterFillMethod> 
     <rd:TableAdapterGetDataMethod>GetData</rd:TableAdapterGetDataMethod> 
     <rd:TableAdapterName>HeadersTableAdapter</rd:TableAdapterName> 
     </rd:DataSetInfo> 
    </DataSet> 
    <DataSet Name="ProjectDS_Obs"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>Observations</rd:TableName> 
     <rd:TableAdapterFillMethod>Fill</rd:TableAdapterFillMethod> 
     <rd:TableAdapterGetDataMethod>GetData</rd:TableAdapterGetDataMethod> 
     <rd:TableAdapterName>ObservationsTableAdapter</rd:TableAdapterName> 
     </rd:DataSetInfo> 
    </DataSet> 
    <DataSet Name="ProjectDS_Client"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>Client</rd:TableName> 
     <rd:TableAdapterFillMethod>Fill</rd:TableAdapterFillMethod> 
     <rd:TableAdapterGetDataMethod>GetData</rd:TableAdapterGetDataMethod> 
     <rd:TableAdapterName>ClientTableAdapter</rd:TableAdapterName> 
     </rd:DataSetInfo> 
    </DataSet> 
    <DataSet Name="ProjectDS_Site"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>Site</rd:TableName> 
     <rd:TableAdapterFillMethod>Fill</rd:TableAdapterFillMethod> 
     <rd:TableAdapterGetDataMethod>GetData</rd:TableAdapterGetDataMethod> 
     <rd:TableAdapterName>SiteTableAdapter</rd:TableAdapterName> 
     </rd:DataSetInfo> 
    </DataSet> 
    <DataSet Name="ProjectDS_Images"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>ProjectImages</rd:TableName> 
     <rd:TableAdapterFillMethod /> 
     <rd:TableAdapterGetDataMethod /> 
     <rd:TableAdapterName /> 
     </rd:DataSetInfo> 
    </DataSet> 
    <DataSet Name="ProjectDS_PMPL"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>PerMeterPerLine</rd:TableName> 
     <rd:TableAdapterFillMethod /> 
     <rd:TableAdapterGetDataMethod /> 
     <rd:TableAdapterName /> 
     </rd:DataSetInfo> 
    </DataSet> 
    <DataSet Name="ProjectDS_ObservationImages"> 
     <Query> 
     <DataSourceName>ProjectDS</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
     </Query> 
     <Fields> 
     ... 
     </Fields> 
     <rd:DataSetInfo> 
     <rd:DataSetName>ProjectDS</rd:DataSetName> 
     <rd:SchemaPath>C:\...\ProjectDS.xsd</rd:SchemaPath> 
     <rd:TableName>ObservationImagesEx</rd:TableName> 
     <rd:TableAdapterFillMethod /> 
     <rd:TableAdapterGetDataMethod /> 
     <rd:TableAdapterName /> 
     </rd:DataSetInfo> 
    </DataSet> 
    </DataSets> 

가 나타나도록 수정, 데이터 집합 모음의 앞에, 절단 및 문제 <DataSet> 노드를 붙여 단순히이었다에 대한 데이터 판독기를 만들 수 없습니다 <DataSets> 노드 바로 뒤에 있습니다.

<DataSets> 
    <DataSet Name="ProjectDS_ObservationImages"> 
    ... 

이제는 보고서가 정상적으로 작동하고 모든 데이터가로드됩니다.

왜? 누군가가 설명 할 수있는 희망으로이 질문을 공개 할 것입니다.

+0

감사합니다. m8. 나는 며칠 동안 같은 문제로 어려움을 겪어왔다. 데이터 세트의 순서를 바꾸지 않아도되지만 수정을 적용한 후에는 문제가 없습니다. –

1

SubreportProcessing - Event의 테이블에 중첩 된 여러 하위 보고서 데이터 원본을 채우는 동안 동일한 문제가있었습니다.

DataTables 대신 BindingSource를 통해 LINQ - Query로 채워진 여러 DataSet이있는 Object DataSource를 하나만 사용하여 문제를 해결했습니다. ConnectionString 매개 변수와 함께 DataContext - 생성자를 사용하여 여러 서버 또는 소스에서 데이터를 검색 할 수 있습니다.

마법사가 자동으로 DataSet 당 하나의 DataSource를 추가하기 때문에 Reports XML DataSource Section을 직접 편집해야했습니다.

2

같은 문제가있었습니다. 내가 아는 것은 실패한 데이터 집합에 대한 <Query> 태그가 하위 보고서를 생성하는 데 사용되는 <Query> 이후이므로 하위 보고서를 처리하는 것처럼 보임으로써 부모 보고서에 이미 채워진 데이터 집합을 무효화하는 것처럼 보입니다. 당신이 말하듯이 하위 보고서를 생성하기 위해 <Query> 요소를 사용하기 전에 모든 부모 보고서에 대해 <Query> 요소를 모두 넣는 것이 해결책입니다.