2017-09-20 66 views
0

이제는 같은 질문에 대해 몇 가지 대답을 포함하여 여기를 살펴 보았습니다.하지만 아무도 문제를 해결하지 못했거나 몇 가지 정보를 명확히하기에 충분한 정보가 포함되어 있습니다.로컬 .rdl 보고서에 연결하는 데 문제가 있습니다.

먼저 액세스 데이터베이스에 연결되는 .rdl 보고서를 만들었습니다. 지금까지 좋은 모든 것. 지금은 서버 (로컬)없이 내 소프트웨어와 연결하려는 코드와 내가 작업 뭔가있어 가장 가까운을 보았다 이것이다 :

Private Sub GenerateLocalReport() 

    ReportViewer1.ProcessingMode = ProcessingMode.Local 
    ReportViewer1.LocalReport.ReportPath = "D:\work\OrdersInvoice\ReportInvoice\ReportInvoice\OrdersReport.rdl" 

    reportViewer.RefreshReport() 
    ReportViewer1.RefreshReport() 
End Sub 

이제 문제는 위의 코드가 작동하지 않는다는 것입니다. 다음과 같은 메시지가 나타납니다. 데이터 소스 인스턴스가 데이터 소스에 제공되지 않았습니다.

내가 찾은 것을 검색하는 것은 데이터 바인딩으로 뭔가를 추가해야한다는 것입니다. 이제 여기 혼란이 시작됩니다.

Dim ds = New ReportDataSource("DataSet1",???) 
    reportViewer1.LocalReport.DataSources.Add(ds) 

이것은 내가 얻을 수있는 가장 직접적인 코드입니다. 하지만 데이터 원본을 바인딩하여 그 의미를 알 수 없습니다. 나는 프로그램에서 데이터 소스를 만들려고했지만 실제 대답은 아닙니다. 나는 여기서 잃어 버렸어. 동일한 작업을 수행해야 내가 찾은

또 다른 코드는 다음과 같습니다 C# 또는 VB.net 중 하나에

ReportViewer1.LocalReport.DataSources.Add(TempDBDataSet.OrderTableDataTable 

다시 같은 문제

답변 괜찮습니다.

답변

1

Reporting Services 파일에는 RDL & RDLC의 두 가지 유형이 있습니다.

두 기능 모두 매우 유사합니다.

RDL 파일은보고 서버에서 실행되도록 설계되었습니다. 여기서 서버는 보고서에 제공된 연결 정보를 기반으로 데이터 원본을 만들고 채 웁니다.

RDLC 파일은 서버가 필요없는 보고서 뷰어 컨트롤을 사용하여 클라이언트 응용 프로그램에 포함되도록 디자인되었습니다. 또한 응답 할 때 클라이언트 응용 프로그램에서 수동으로 데이터 소스에 연결하고 채워야합니다.

+0

오프라인 응용 프로그램의 경우 RDLC가 더 좋은 옵션입니까? –

+1

RDL 파일을 사용하려면 오프라인 응용 프로그램과 완전히 별도로 실행되는 SQL Server Reporting Services 인스턴스가 필요합니다. –

0

나는 시행 착오 후에이 문제를 해결했다고 생각합니다. 우선 여기서 내가 사용하는 코드입니다 : 내가 보고서에 연결 한 다음 내 데이터베이스에서 DataSet으로 데이터를 작성하고 데이터베이스에 대한 연결을 만들어 사용하는 것이 었습니다 않았다 그래서

Dim dataset As New DataSet("DataSet1") 
Dim Conn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\TempDB.mdb;User Id=admin; 
    Password=;") 
Dim Adb As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("Select * from OrderTable", Conn) 
Adb.Fill(dataset) 
Dim rds As New ReportDataSource() 
rds.Name = "DataSet1" 
rds.Value = dataset.Tables(0) 
ReportViewer1.LocalReport.DataSources.Add(rds) 

에 그 ReportDataSource에 대한 참조를 종료 한 테이블에 액세스합니다.

그 후 꽤 잘 작동했습니다.