|
|
|
ต้องการบันทึกข้อมูลจาก DataGridView ลง Database หลายๆแถว |
|
|
|
|
|
|
|
มีข้อมูลหลายๆแถวแต่เพิ่มลงฐานข้อมูลได้แค่แถวเดียว ช่วยแก้ code ด้วยครับ
Code (C#)
private void saveSalesOrder_Click(object sender, EventArgs e)
{
try
{
OleDbConnection OleDbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=SparesStore.mdb;");
OleDbCommand OleDbCmd = new OleDbCommand();
OleDbCmd.Connection = OleDbConn;
OleDbCmd.CommandText = "INSERT INTO SalesOrder VALUES (customer_id, customer_name, invoice_id, date, invoice_product_id, invoice_product, invoice_quantity, invoice_unit, invoice_price, invoice_amount)";
OleDbConn.Open();
OleDbCmd.Parameters.Add("@รหัสลูกค้า", OleDbType.VarChar).Value = customer_id.Text;
OleDbCmd.Parameters.Add("@ชื่อ", OleDbType.VarChar).Value = customer_name.Text;
OleDbCmd.Parameters.Add("@เลขที่", OleDbType.VarChar).Value = invoice_id.Text;
OleDbCmd.Parameters.Add("@วันที่", OleDbType.Date).Value = date.Text;
for (int i = 0; i <= salesOrderView.RowCount - 1; ++i)
{
OleDbCmd.Parameters.Add(new OleDbParameter("@รหัสสินค้า", salesOrderView.Rows[i].Cells[0].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@สินค้า", salesOrderView.Rows[i].Cells[1].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@จำนวน", salesOrderView.Rows[i].Cells[2].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@หน่วยนับ", salesOrderView.Rows[i].Cells[3].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@ราคา", salesOrderView.Rows[i].Cells[4].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@จำนวนเงิน", salesOrderView.Rows[i].Cells[5].Value));
OleDbCmd.ExecuteNonQuery();
}
OleDbConn.Close();
MessageBox.Show("บันทึกสำเร็จ");
customer_id.Clear();
customer_name.Clear();
invoice_id.Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
//salesOrderView.Rows.Clear();
}
Tag : .NET, Ms Access, Win (Windows App), C#
|
|
|
|
|
|
Date :
2012-03-25 23:46:13 |
By :
DevilMonkeyZ |
View :
3704 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น่าจะแบบนี้ครับ
Code (C#)
private void saveSalesOrder_Click(object sender, EventArgs e)
{
try
{
OleDbConnection OleDbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=SparesStore.mdb;");
OleDbConn.Open();
for (int i = 0; i <= salesOrderView.RowCount - 1; ++i)
{
OleDbCommand OleDbCmd = new OleDbCommand();
OleDbCmd.Connection = OleDbConn;
OleDbCmd.CommandText = "INSERT INTO SalesOrder VALUES (customer_id, customer_name, invoice_id, date, invoice_product_id, invoice_product, invoice_quantity, invoice_unit, invoice_price, invoice_amount)";
OleDbCmd.Parameters.Add("@รหัสลูกค้า", OleDbType.VarChar).Value = customer_id.Text;
OleDbCmd.Parameters.Add("@ชื่อ", OleDbType.VarChar).Value = customer_name.Text;
OleDbCmd.Parameters.Add("@เลขที่", OleDbType.VarChar).Value = invoice_id.Text;
OleDbCmd.Parameters.Add("@วันที่", OleDbType.Date).Value = date.Text;
OleDbCmd.Parameters.Add(new OleDbParameter("@รหัสสินค้า", salesOrderView.Rows[i].Cells[0].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@สินค้า", salesOrderView.Rows[i].Cells[1].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@จำนวน", salesOrderView.Rows[i].Cells[2].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@หน่วยนับ", salesOrderView.Rows[i].Cells[3].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@ราคา", salesOrderView.Rows[i].Cells[4].Value));
OleDbCmd.Parameters.Add(new OleDbParameter("@จำนวนเงิน", salesOrderView.Rows[i].Cells[5].Value));
OleDbCmd.ExecuteNonQuery();
}
OleDbConn.Close();
MessageBox.Show("บันทึกสำเร็จ");
customer_id.Clear();
customer_name.Clear();
invoice_id.Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
//salesOrderView.Rows.Clear();
}
|
|
|
|
|
Date :
2012-03-26 06:35:43 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ขอบคุณมากครับ
|
|
|
|
|
Date :
2012-03-26 18:07:57 |
By :
DevilMonkeyZ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วถ้าโค้ดแบบด้านบนนั้น เวลาเก็บครั้งต่อไปมันจะถูกลงไปทับตัวเดิมในดาต้าเบสหรือปล่าวครับ เพราะผมดูคร่าวๆแล้ว ทุกครั้งที่กดจะเริ่มเก็บลงตั้งแต่ช่องแรกใหม่อ่ะครับ
มีโค้ดอ่ะไรตรงไหนในโค้ดด้านบนที่สามารถทำให้การเก็บข้อมูลครั้งใหม่ไม่ลงไปทับของเดิมอ่ะครับ ผมอ่านโค้ดไม่ค่อยออก = ="
|
|
|
|
|
Date :
2012-03-27 09:34:30 |
By :
หนึ่ง |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้ น่าสนใจมากครับ แต่ถ้าเป็น ฐานข้อมูล SQL Server2008 มันจะมีการเรียกใช้อย่างไรครับ
แต่ด้านบนที่ถามว่ามันจะทับหรือป่าว คือมันไม่ทับโดยดูจากค่า Index i ครับ
|
|
|
|
|
Date :
2012-09-25 10:12:53 |
By :
Littlefatboyz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่วิน ช่วยทีครับ อันนี้ผมก็ต้องการดูอยู่เหมือนกันครับ
|
|
|
|
|
Date :
2012-09-25 10:25:35 |
By :
Littlefatboyz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตั้งกระทู้พร้อมรายละเอียดใหม่ครับ
|
|
|
|
|
Date :
2012-09-26 08:59:04 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|