ผมต้องการบันทึกข้อมูลจาก Datagridview เซฟลง ฐานข้อมูล MsAccess ครับ โค้ด VB
ช่วยด้วยครับ บันทึกข้อมูลจาก Datagridview แล้วไม่ลง Access ครับ
Private Sub SaveToAccess()
' MessageBox.Show("บันทึกสินค้าแล้วคะ", "คำยืนยัน", MessageBoxButtons.OK)
tr = Conn.BeginTransaction()
Try
sb.Remove(0, sb.Length)
sb.Append("INSERT INTO Sales (sale_ids,cus_ids,pro_ids,pro_name,emp_ids,date_sales,total_s)")
sb.Append(" VALUES (@sale_ids,@cus_ids,@pro_ids,@pro_name,@emp_ids,@date_sales,@total_s)")
Dim sqlAdd As String
sqlAdd = sb.ToString()
For i As Integer = 0 To DataGridView1.RowCount - 1
If Not DataGridView1.Rows(i).IsNewRow Then
With Com
.CommandText = sqlAdd
.CommandType = CommandType.Text
.Connection = Conn
.Transaction = tr
.Parameters.Add("@sale_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(0).Value
.Parameters.Add("@cus_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(1).Value
.Parameters.Add("@pro_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(2).Value
.Parameters.Add("@pro_name", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(3).Value
.Parameters.Add("@emp_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(4).Value
.Parameters.Add("@date_sales", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(5).Value
.Parameters.Add("@total_s", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(6).Value
.ExecuteNonQuery()
.Parameters.Clear()
End With
End If
Next
tr.Commit()
'MessageBox.Show("เพิ่มพนักงานใหม่ เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "ข้อความ", MessageBoxButtons.OK, MessageBoxIcon.None)
Catch ex As Exception
'MessageBox.Show("คุณป้อนรหัสพนักงานซ้ำ !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
tr.Rollback()
End Try
End SubCode (VB.NET)
จะต้องแก้ยังไงบ้างครับ ขอบคุณครับTag : .NET, Ms Access, VS 2010 (.NET 4.x)
Date :
2014-08-24 14:28:02
By :
Ballriffer
View :
2677
Reply :
7
เซฟทีละหลาย ๆ เรคคอร์ดครับ
Date :
2014-08-24 14:29:01
By :
Ballriffer
ถ้าคุณใช้ >=.NET 4.0 และ SQL Server 2008(R2)
และผมต้องการ Insert ข้อมูลแค่ 2 Columns เท่านั้น
Code (VB.NET)
Dim sb As New StringBuilder()
For i As Integer = 0 To DataGridView1.RowCount - 1
sb.Append("(" & "'pencil'" & ", " & "1200.25" & "),")
Next
Dim strTricks As XCData =
<![CDATA[
INSERT
INTO
Sales (pro_name, total_s) Values {0}
]]>
Dim strSQL As String = String.Format(strTricks.Value, sb.Remove(sb.Length - 1, 1).ToString())
...
...
...
OleDb และ ODBC ใช้ชื่อพารามิเตอร์ไม่ได้ครับ มันต้องเป็นแบบนี้ครับ
Code (VB.NET)
Insert into Sales (pro_name, total_s) Values (?, ?)
Parameters.Add("@pro_name", OleDbType.VarChar).Value = "pencil" 'มันเป็นข้อความ
Parameters.Add("@total_s", OleDbType.Double).Value = 1200.25 'มันเป็นจำนวนตัวเลข
ประวัติการแก้ไข 2014-08-24 16:48:56 2014-08-24 16:51:06 2014-08-24 16:52:43
Date :
2014-08-24 16:41:39
By :
หน้าฮี
จาก #NO 2 บรรทัดที่ 6 - 11 ทำไมผมถึงใช้แบบนี้
เหตุผล : SQL Query ของผมบางอัน มันยาวเฟื้อยเลยครับ ยาว 7-8 หน้ากระดาษครับ (คำนวนต้นทุน)
ถ้าผมใช้การเชื่อมต่อสตริง เช่น & หรือ StringBuilder() มันไม่ไหวครับ (งงตายเลย)
Date :
2014-08-24 16:58:52
By :
หน้าฮี
ขอโทดนะครับ พอดีมือใหม่มาก ๆ เลยครับ งงอะ
Date :
2014-08-24 17:48:27
By :
Ballriffer
รูปแบบการทำงานตามภาพเลยครับ ตอนนี้ผมเก็บข้อมูลรายการจาก textbox ให้มาลงใน datagridview ได้แล้วครับ
ทีนี้ผมก็ต้องการที่จะเก็บข้อมูลการสั่งซื้อภายใน datagridview มาลงฐานข้อมูล access ครับ
โดยเก็บทีละหลาย ๆ รายการครับ
ตัวอย่างในเว็บ ผมเจอแต่ sql ครับ ลองแปลงแล้วแต่ไม่ได้ เพราะความเข้าใจยังไม่มากครับ
ช่วยหน่อยนะ
Date :
2014-08-24 17:54:52
By :
Ballriffer
Code (VB.NET)
Private Sub SaveToAccess()
' MessageBox.Show("บันทึกสินค้าแล้วคะ", "คำยืนยัน", MessageBoxButtons.OK)
tr = Conn.BeginTransaction()
Try
sb.Remove(0, sb.Length)
sb.Append("INSERT INTO Sales (sale_ids,cus_ids,pro_ids,pro_name,emp_ids,date_sales,total_s) ")
sb.Append("VALUES (?, ?, ?, ?, ?, ?, ?)")
Dim sqlAdd As String
sqlAdd = sb.ToString()
For i As Integer = 0 To DataGridView1.RowCount - 1
If Not DataGridView1.Rows(i).IsNewRow Then
With Com
.CommandText = sqlAdd
.CommandType = CommandType.Text
.Connection = Conn
.Parameters.Clear()
.Transaction = tr
.Parameters.Add("@sale_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(0).Value
.Parameters.Add("@cus_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(1).Value
.Parameters.Add("@pro_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(2).Value
.Parameters.Add("@pro_name", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(3).Value
.Parameters.Add("@emp_ids", OleDbType.VarChar).Value = DataGridView1.Rows(i).Cells(4).Value
.Parameters.Add("@date_sales", OleDbType.Date).Value = CDate(DataGridView1.Rows(i).Cells(5).Value)
.Parameters.Add("@total_s", OleDbType.Double).Value = CDbl(DataGridView1.Rows(i).Cells(6).Value)
.ExecuteNonQuery()
End With
End If
Next
tr.Commit()
'MessageBox.Show("เพิ่มพนักงานใหม่ เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "ข้อความ", MessageBoxButtons.OK, MessageBoxIcon.None)
Catch ex As Exception
MessageBox(ex.Message)
'MessageBox.Show("คุณป้อนรหัสพนักงานซ้ำ !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
tr.Rollback()
End Try
End Sub
ประวัติการแก้ไข 2014-08-25 04:33:39
Date :
2014-08-25 04:31:37
By :
หน้าฮี
ขอบคุณนะครับ ได้แล้ว ผมก็งงว่า VALUE คืออะไร มานึกได้อีกที อ่อ มันก็คือค่าแต่ละเซลของ Datagridview นั้่นเองครับ
Date :
2014-08-29 11:11:40
By :
Ballriffer
Load balance : Server 02