Вычтите 2 столбца сгруппированных данных в третий столбец - PullRequest
0 голосов
/ 19 мая 2018

Это сетка данных, которую я использую, чтобы показать запас продуктов, я смог заполнить его группой по штрих-коду и названию продукта, а также сумме покупок, сумме продаж

и что теперь я 'я пытаюсь сделать, это вычесть продажи из покупок и показать в третьем столбце

вот код, который я пробовал

private void frmStock_Load(object sender, EventArgs e)
{
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;User Id=;Password=;Data Source=TS-POS.accdb");
    conn.Open();
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT Bcode, Pname, SUM(Ppurchase) AS Ppurchase, SUM(Psale) AS Psale FROM Stock GROUP BY Bcode,Pname;", conn);
    DataSet ds = new DataSet();
    dataAdapter.Fill(ds);
    dataGridView1.DataSource = ds.Tables[0];
    conn.Close();
    Update();
}

private void button1_Click(object sender, EventArgs e)
{


    Update();

}
private void update()
{
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        int a = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
        int b = Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value);

        int c = a - b;

        dataGridView1.Rows[i].Cells[4].Value = c;


    }
}

Проблема сейчас в том, что она вообще ничего не покажет

1 Ответ

0 голосов
/ 19 мая 2018

Держу пари, что у вас это есть в событии form_load.Это верно?Причина, по которой я считаю это верным, заключается в том, что ваша строка соединения не соответствует используемой вами базе данных и должна вызывать исключение.Событие Load не показывает исключение, если вы не заключили код в блоки try ... catch.Расширение .accdb использует провайдер Microsoft.ACE.

Я не уверен, как вы вообще что-то получаете, поскольку вы даже не сможете получить доступ к этой версии у вашего текущего провайдера.Я могу исходить только из того, что вы мне говорите, и должен предположить, что данные, которые вы видите, поступают из какого-то другого кода.

Вот типичная строка соединения для вашей базы данных .accdb, находящейся в папке с моими документами.

Provider = Microsoft.ACE.OLEDB.12.0;Data Source = C:\Users\Charlie\Documents\TS-POS.accdb

РЕДАКТИРОВАТЬ В СООТВЕТСТВИИ С ИЗМЕНЕНИЯМИ, ПРЕДСТАВЛЕННЫМИ В ВОПРОС *

Переименуйте метод update ().Обновление - это ключевое слово.Заметьте, что ваш саб называется обновлением, а вы пытаетесь вызвать обновление?(C # чувствителен к регистру)

Кроме того, вы можете сделать эту математику в sqlstatement

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT Bcode, Pname, SUM(Ppurchase) AS Ppurchase, SUM(Psale) AS Psale, SUM(Ppurchase) - SUM(Psale) as Total FROM Stock GROUP BY Bcode,Pname;", conn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...