2011-09-18 4 views
1

SQL을 사용하여 만든 데이터베이스를 기반으로하는 다중 테이블 C# 보고서가 있습니다. 다음 코드를 사용하여 데이터 소스를 설정하고 다양한 변형을 시도했지만 내 데이터베이스에서 정보를 가져 와서 내 보고서에 올바르게 표시 할 수 없습니다. 어떤 도움이라도 대단히 감사합니다. 데이터 세트가 채워집니다. 또한 단일 테이블 보고서는 멀티 테이블 보고서가 작동하지 않는 경우에만 데이터로 적절하게 채 웁니다.Crystal Reports C#

업데이트 : 이제 보고서에 report.Database.Tables["Invoices"].setDataSource(posDataSet.Tables["Invoices"]);을 사용하여 한 테이블의 데이터가 표시됩니다. 그러나 세부 선을 생성하는 테이블의 동일한 논리에는 데이터가 표시되지 않습니다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using CrystalDecisions.Shared; 
using CrystalDecisions.CrystalReports.Engine; 

namespace SureSalePos 
{ 
    public partial class Reporter : Form 
    { 

     private PosDatabaseDataSet posDataSet; 
     public Reporter(PosDatabaseDataSet dataToReportOn) 
     { 
      InitializeComponent(); 
      posDataSet = dataToReportOn; 
      //InvoiceReport ir = new InvoiceReport(); 
      // this.reportViewer.LocalReport.ReportPath = ir.FileName; 

     } 

     private void Reporter_Load(object sender, EventArgs e) 
     { 
      ConnectionInfo myConnectionInfo = new ConnectionInfo(); 

      myConnectionInfo.ServerName = "";// "PosDatabaseDataSet"; 
      myConnectionInfo.DatabaseName = "";//"PosDatabase.mdf"; 
      myConnectionInfo.UserID = string.Empty; 
      myConnectionInfo.Password = string.Empty; 
      setDBLOGONforREPORT(myConnectionInfo); 
      //this.reportViewer.RefreshReport(); 
     } 

     private void setDBLOGONforREPORT(ConnectionInfo myconnectioninfo) 
     { 
      InvoiceReport report = new InvoiceReport(); 
      report.DataSourceConnections.Clear(); 

      // For each table set the source from your dataset 
      report.Database.Tables["Invoices"].SetDataSource(posDataSet.Tables["Invoices"]); 
      report.Database.Tables["InvoiceItems"].SetDataSource(posDataSet.Tables["InvoiceItems"]); 
      //report.Database.Tables["People"].SetDataSource(posDataSet.Tables["People"]); 
      report.Database.Tables["Preferences"].SetDataSource(posDataSet.Tables["Preferences"]); 
      //report.Database.Tables["Skus"].SetDataSource(posDataSet.Tables["Skus"]); 

      crystalReportViewer1.ReportSource = report; 
      crystalReportViewer1.RefreshReport(); 

     } 

     private void crystalReportViewer1_Load(object sender, EventArgs e) 
     { 
     } 
    } 
} 

편집 : 9월 22일 보고서의 데이터를 제공하기 때문에 당신은 로그인을 설정할 필요가 없습니다

+0

데이터 세트의 데이터를 얻었습니까? 아니요? –

+0

예 데이터 세트에 데이터가 제대로 채워지지 않습니다 – Brandon

+0

누구에게도이 제안이 있습니까? – Brandon

답변

0

위의 코드를 업데이트했습니다. 다음을 시도해보십시오.

report.DataSourceConnections.Clear(); 

// For each table set the source from your dataset 
report.Database.Tables["TableName"].SetDataSource(posDataSet.Tables["TableName"]); 

crystalReportViewer1.ReportSource = report; 
crystalReportViewer1.RefreshReport(); 
+0

그러면 Invoices 테이블 (기본 테이블)의 보고서 정보가 올바르게 표시되지만 보고서의 항목 중 InvoiceItems 테이블, 내가 데이터 소스로 설정할 때 테이블에 10 카운트가 있고 보고서에 대한 테이블이되면 10을 계속 갖습니다. – Brandon

+0

세부 정보의 하위 리포트에 대한 'InvoiceItems'테이블이 있습니까? 그렇다면 포함 된 보고서의 데이터 소스를 설정해야합니다. 그렇지 않으면 tablename이 보고서와 사용자 정의 데이터 세트와 일치합니까? Crystal Reports로 데이터를 동적으로 바인딩하는 것은 그리 어렵지 않습니다. noobie 큰 거래가 아니라 설명하는 방법을 알아야합니다. – Justin

+0

테이블 이름이 일치하지 않습니다, 나는 일반적으로 멍청한 녀석이 아니지만 크리스탈 리포트에 좋지는 않습니다. 인보이스 세부 정보 섹션은 내 양식 레이아웃의 세부 정보 섹션에 배치 된 하위 보고서에 없습니다. IDE를 사용하여 보고서를 편집하는 경우 올바른 연결로 표시되지만 (예 : InvoiceItems.Description InvoiceItems.Sku) 데이터 소스로 설정된 테이블에로드 된 행이있는 경우에도 보고서에 이러한 항목이 표시되지 않습니다 (확인했습니다. 디버거 사용). 그리고 모든 도움을 주셔서 감사합니다! – Brandon