Кнопка загрузки одной и той же информации несколько раз, а не один раз (C #) - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь загрузить данные из SQL Server на гистограмму. Это было достигнуто, однако, когда я нажимаю кнопку «Загрузить», график отображается прямо пропорционально количеству кликов. Я хочу, чтобы один клик загружал данные только на еженедельной основе и другие клики, чтобы просто обновить и не ложно строить график на другой неделе (-ах).

Один клик, желаемый вывод. Desired display.

Два клика и так далее должны просто обновить график

Second clicks,

Third click

и т. Д., Но я получаю эти результаты.

Вот код кнопки загрузки:

private void Load_BTN_Click_1(object sender, EventArgs e)
{
        try
        {
            string selectQuery = "SELECT  DATEADD(week, DATEDIFF(week, 0, Date), 0) AS month, SUM(Fuel_Amount) AS Expr1 FROM Fuel_Attendend GROUP BY DATEADD(week, DATEDIFF(week, 0, Date), 0)";
            cmd = new SqlCommand(selectQuery, connection);

            try
            {
                connection.Open();
                dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    this.chart1.Series["Fuel_Amount"].Points.AddY(dr.GetInt32(1));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

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

` И это таблица:

enter image description here

Заранее спасибо.

1 Ответ

0 голосов
/ 11 ноября 2018

Что я хотел бы предложить, так это очистить серию графиков1 и затем добавьте ряд Fuel_Amount

Как показано в приведенном ниже коде.

   private void Load_BTN_Click_1(object sender, EventArgs e)
{

    try
    {
       this.chart1.Series.Clear();
       this.chart1.Series.Add("Fuel_Amount");
        string selectQuery = "SELECT  DATEADD(week, DATEDIFF(week, 0, Date), 0) AS month, SUM(Fuel_Amount) AS Expr1 FROM Fuel_Attendend GROUP BY DATEADD(week, DATEDIFF(week, 0, Date), 0)";
        cmd = new SqlCommand(selectQuery, connection);
        try
        {
            connection.Open();
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                this.chart1.Series["Fuel_Amount"].Points.AddY(dr.GetInt32(1));

            }

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

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

Это заставит график обновляться при нажатии кнопки.

Также я бы посоветовал вам использовать блок Using, когда вы имеете дело с SqlCommand и Connection.

...