【问题标题】:Charting the data from database using one column only仅使用一列从数据库中绘制数据图表
【发布时间】:2019-12-11 06:39:19
【问题描述】:

我想创建一个图表来读取我数据库中的 Extra_Process 列。它只有两个值。 “加急订单”和“正常订单”

我有这个代码...

chart1.Series["Order Process"].Points.Clear();
        MySqlCommand cmd = new MySqlCommand("SELECT Extra_Process, sum(Extra_Process) qty FROM sketchit.monitoring GROUP BY Extra_Process; ", dc.con);
        MySqlDataReader myreader;
        try
        {
            dc.con.Open();
            myreader = cmd.ExecuteReader();
            while (myreader.Read())
            {

                this.chart1.Series["Order Process"].Points.AddXY(myreader.GetString("Extra_Process"), myreader.GetInt32("qty"));
                chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1;



            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        dc.con.Close();

我想知道我的专栏中有多少紧急订单和普通订单,但没有显示任何结果。我不知道该怎么办。

here's the pic

【问题讨论】:

    标签: c# winforms charts


    【解决方案1】:

    步骤:

    1. 查询并获取 RushOrder 和 NormalOrder 的 Count 值。
    2. 获得两个计数后,将其传递给以下函数以生成PieChart

     private void btnChart_Click(object sender, EventArgs e)
     {
         //Make your Query , Get Count Value for RushOrder and NormalOrder
         //Check for Null Value
         //Pass the Count to the DrawPieChart() function
    
    
         //Sample Chart Generation 
         int nRushOrderCount = Convert.ToInt32(txtRushOrder.Text);
         int nNormalOrderCount = Convert.ToInt32(txtNormalOrder.Text);
         DrawPieChart(nRushOrderCount, nNormalOrderCount);
      }
    
      private void DrawPieChart(int nRushOrder, int nNormalOrder)
      {
         //reset your chart series and legends
         chart1.Series.Clear();
         chart1.Legends.Clear();
    
         //Add a new Legend(if needed) and do some formating
         chart1.Legends.Add("MyLegend");
         chart1.Legends[0].LegendStyle = LegendStyle.Table;
         chart1.Legends[0].Docking = Docking.Bottom;
         chart1.Legends[0].Alignment = StringAlignment.Center;
         chart1.Legends[0].Title = "Order Details";
         chart1.Legends[0].BorderColor = Color.Black;
    
         //Add a new chart-series
         string seriesname = "MySeriesName";
         chart1.Series.Add(seriesname);
         //set the chart-type to "Pie"
         chart1.Series[seriesname].ChartType = SeriesChartType.Pie;
    
         //Add some datapoints so the series. in this case you can pass the values to this method
         chart1.Series[seriesname].Points.AddXY("Rush Order", nRushOrder);
         chart1.Series[seriesname].Points.AddXY("Normal Order", nNormalOrder);
    
         chart1.Series[seriesname].IsValueShownAsLabel = true;
      }
    

    【讨论】:

    • 有快捷方式吗?我的意思是我要把它放在我的 form_loard..
    • 您可以在Form_load中调用此方法。由于您只是将 int 值传递给它,因此在 UI 线程中加载图表并没有太大区别。否则你可以使用Background线程单独加载图表。
    猜你喜欢
    • 2020-11-10
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多