2011-09-18 157 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'表?如果是這樣,您需要設置子報表的數據源。如果不是,那麼表名與報表和自定義數據集是否匹配。用Crystal Reports動態綁定數據並不難。如果一個noobie不是一個大問題,只需要知道如何解釋。 – Justin

+0

表名確實匹配,我並不是一般的noob,但對於水晶報告來說並不那麼好。發票詳細信息部分不在子報表中,只是放置在表單佈局的詳細信息部分內。如果使用IDE編輯報表,它將顯示爲正確的鏈接(即InvoiceItems.Description InvoiceItems.Sku),但報表不顯示這些項目,即使將表設置爲數據源時已加載行(我已確認使用調試器)。並感謝您的幫助! – Brandon