2012-11-15 73 views
0

我設計了一個表格,並使用我的表格上的條形圖顯示特定年份(特殊護理)中具有特定問題(例如家庭問題)的學生人數(說2009)。我設計了其他一切,從數據庫中獲取總數並將其顯示在條形圖上。我可以在表單上實現此功能,但我必須生成報告並在報告上顯示相同的條形圖。我的問題是我可以在不連接數據庫的情況下實現這一點如果是,那麼真棒,但如何?提前致謝。沒有連接到數據庫的水晶報告圖表

下面的代碼是一個條形圖代碼,用於在特定程序中有問題的學生總數(家庭問題,吸毒者等),爲期3年。

public void calculateStatsFor3Years(int year1, int year2, int year3) 
    { 
     //count the number of students in with intervention in particular program in a year 

     intervention.Classes.Programs objPrograms = new intervention.Classes.Programs(); 

     List<int> programCodeList = objPrograms.GetProgramCode(); 

     List<int> numStudentsYear1 = new List<int>(); 
     List<int> numStudentsYear2 = new List<int>(); 
     List<int> numStudentsYear3 = new List<int>(); 

     int temp1 = 0; 
     int temp2 = 0; 
     int temp3 = 0; 

     for (int counter = 0; counter < programCodeList.Count; counter++) 
     { 

      temp1 = Convert.ToInt32(objControllerClass.get_students_intervention_particular_year_program(year1, programCodeList.ElementAt(counter))); 

      numStudentsYear1.Add(temp1); 

      temp2 = Convert.ToInt32(objControllerClass.get_students_intervention_particular_year_program(year2, programCodeList.ElementAt(counter))); 

      numStudentsYear2.Add(temp2); 

      temp3 = Convert.ToInt32(objControllerClass.get_students_intervention_particular_year_program(year3, programCodeList.ElementAt(counter))); 

      numStudentsYear3.Add(temp3); 

     }//for 

     int[] yValues0 = numStudentsYear1.ToArray();//2011-2012 
     int[] yValues1 = numStudentsYear2.ToArray();//2010-2011 
     int[] yValues2 = numStudentsYear3.ToArray();//2009-2010 


     string[] xNameSeries0 = { "Agent immobilier", "Mécanique du bâtiment", "Gestion des eaus ", "Soins infirmiers ", "Anglais ", "Comtabilité et gestion ", "Bureautique ", "Architecture et gestion de réseau ", "Programmeur web ", "Assurance de dommages ", "O'Bois ", "Éducation à l'enface ", "Francisation " }; 

     myBarChart.Series[0].Points.DataBindXY(xNameSeries0, yValues0); 
     myBarChart.Series[1].Points.DataBindXY(xNameSeries0, yValues1); 
     myBarChart.Series[2].Points.DataBindXY(xNameSeries0, yValues2); 


     //legend text 
     myBarChart.Series[0].LegendText = year1.ToString(); 
     myBarChart.Series[1].LegendText = year2.ToString(); 
     myBarChart.Series[2].LegendText = year3.ToString(); 

    }//calculateStatsFor3Years() 

下面是我需要在Crystal Reports中顯示的水平圖的屏幕截圖。

http://i1342.photobucket.com/albums/o765/CSharpJunior/C%20Sharp%20project/horizontalGraph.jpg

+0

**不,謝謝!**不同於論壇的網站,我們不使用的「謝謝」,或者「任何幫助表示讚賞」,或簽名(因此)。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -Deloved-from-posts)。 –

回答

0

這是可能的。最好的方法可能是使用數據集。我經常提到的人:http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-without-database.htm

using System; 
using System.Windows.Forms; 
using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 
using System.Data; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      DataSet1 ds = new DataSet1(); 
      DataTable t = ds.Tables.Add("Items"); 
      t.Columns.Add("id", Type.GetType("System.Int32")); 
      t.Columns.Add("Item", Type.GetType("System.String")); 

      DataRow r ; 
      int i = 0; 
      for (i = 0; i <= 9; i++) 
      { 
       r = t.NewRow(); 
       r["id"] = i; 
       r["Item"] = "Item" + i; 
       t.Rows.Add(r); 
      } 

      CrystalReport1 objRpt = new CrystalReport1(); 
      objRpt.SetDataSource(ds.Tables[1]); 
      crystalReportViewer1.ReportSource = objRpt; 
      crystalReportViewer1.Refresh(); 
     } 
    } 
} 
+0

謝謝Lee,我會試試這個,我相信這是唯一的解決方案。 –

+0

使用你的例子,我能夠在Crystal Report中顯示信息,但是當涉及到顯示一個水平圖比較每個課程中註冊的學生人數,這就是我遇到的困難所在,我已經有一個存儲過程,可以幫助我計算(爲了獲得一年中某個特定課程的學生總數)。報告,謝謝。 –