Более простой способ делать расчеты в базе данных MS Access? - PullRequest
0 голосов
/ 06 июля 2019

У меня есть база данных в MS Access и программа, которая вычитает количество, которое является столбцом в таблице базы данных.

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

Это код, который я сейчас использую

// SALE STARTS HERE
int customerID;  

OleDbConnection objconn = new OleDbConnection(conn);
objconn.Open();

OleDbConnection objconn2 = new OleDbConnection(Con_Str);
objconn2.Open();

OleDbCommand cmd3 = new OleDbCommand("insert into CUSTOMERINVOICE (INVOICEDATE, INVOICESTATUS, ISDEBTORINVOICE, INVOICETYPE)" + "VALUES('"+System.DateTime.Now.ToShortDateString()+",0,0,1)", objconn2);
cmd3.ExecuteNonQuery();

OleDbDataAdapter ada2 = new OleDbDataAdapter("SELECT TOP 1 ID FROM CUSTOMERINVOICE ORDER BY ID DESC", objconn2);

DataTable dt2 = new DataTable();
ada2.Fill(dt2);

DataRow dr2 = dt2.Rows[0];
customerID = Int32.Parse(dr2["ID"].ToString());

foreach(DataGridViewRow row in dgSaleBasket.Rows)
{
    OleDbCommand cmd4 = new OleDbCommand("INSERT INTO  CUSTOMERINVOICEDETAIL (INVOICEID, ITEMCODE, DESCRIPTION, QUANTITY, PRICE)" + "VALUES(" + customerID + ",'"+row.Cells[0].Value.ToString()+"','"+row.Cells[1].Value.ToString()+"',"+row.Cells[2].Value.ToString()+",'"+row.Cells[4].Value.ToString()+"')", objconn2);
    cmd4.ExecuteNonQuery();

    OleDbDataAdapter ada5 = new OleDbDataAdapter("SELECT CODE, Onhand FROM STMAST.DBF where CODE ='" + row.Cells[0].Value + "'", objconn);

    DataTable dt5 = new DataTable();
    ada5.Fill(dt5);

    int onhand;
    int quantityPurchased = Int32.Parse(row.Cells[2].Value.ToString());
    int newOnhand;

    for (int i = 0; i < dt2.Rows.Count; i++)
    {
        DataRow dr5 = dt5.Rows[i];
        onhand = Int32.Parse(dr2["onhand"].ToString());
        newOnhand = onhand - quantityPurchased;

        OleDbCommand cmd6 = new OleDbCommand("UPDATE stmast SET onhand =" +newOnhand+ " WHERE code =" + row.Cells[0].Value, objconn2);
        cmd6.ExecuteNonQuery();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...