2012-11-15 74 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中显示信息,但是当涉及到显示一个水平图比较每个课程中注册的学生人数,这就是我遇到的困难所在,我已经有一个存储过程,可以帮助我计算(为了获得一年中某个特定课程的学生总数)。报告,谢谢。 –