У меня есть база данных в 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();
}
}