Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > นำค่าจาก datagrid update ลง DB ได้ แต่ ข้อมูลที่ได้เป็นของrows สุดท้าย แก้ยังงไครับ



 

นำค่าจาก datagrid update ลง DB ได้ แต่ ข้อมูลที่ได้เป็นของrows สุดท้าย แก้ยังงไครับ

 



Topic : 046702

Guest




Dim j As Integer = 0
Dim i As Integer = 0
j = (dgvProductionList.Rows.Count)
Dim drow As DataGridViewRow

For i = 0 To j - 1

Dim a(i) As Double
Dim b(i) As Double
drow = dgvProductionList.Rows(i)
a(i) = CDbl((drow.Cells("Amount").Value))
b(i) = CDbl((drow.Cells("Amount_Total").Value))
sb.Remove(0, sb.Length())
sb = New System.Text.StringBuilder()
sb.Append(" Update GenerateFG_Details ")
sb.Append(" SET Amount = @Amount ,")
sb.Append(" Amount_Total = @Amount_Total")
sb.Append(" WHERE(GenerateID = @GenerateID)")

Dim sqlGenFG As String
sqlGenFG = sb.ToString()
com = New SqlCommand()
With com
.CommandText = sqlGenFG
.CommandType = CommandType.Text
.Connection = Conn
.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@Amount", SqlDbType.Float).Value = a(i)
.Parameters.Add("@Amount_Total", SqlDbType.Float).Value = b(i)
.Parameters.Add("@GenerateID", SqlDbType.NVarChar).Value = txtGenerateID.Text
.ExecuteNonQuery()
End With
ค่าที่ได้ใน DB
Amount =10
Amount_Total =10
แต่ค่าในDatagrid ก่อน update
Amount =14
Amount_Total =10



Tag : .NET, VB.NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-08-07 14:02:30 By : ชิน View : 1688 Reply : 12
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ลักษณะการเขียนคุ้นๆ เนอะ ยังกับคนเดียวกับคนนี้เลย https://www.thaicreate.com/dotnet/forum/046650.html

ตอบเลยกัน ใช้ transaction ไม่เห็น commit() เลย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-07 14:20:52 By : tungman
 


 

No. 2

Guest


ใช้ transaction ไม่เห็น commit() เลย


ทำแล้วค่าก็เหมือนเดิม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-07 15:30:22 By : ชิน
 

 

No. 3



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ใส่ไว้ตรงไหน commit น่ะ อย่าบอกนะว่าใส่ไว้ใน loop for

แต่ถ้าเป็นผม ผมไม่ทำหรอกนะ solution เนี่ย ผมจะใช้ dataadapter แทน

โดย convert datasource ของ datagridview มาเป็น datatable ก่อน

แล้วค่อยใช้ dataadapter update ข้อมูลทั้งตารางลงฐานข้อมูลเลยทีเดียว

ไม่ต้องมานั่งวนลูปในเมื่อย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-08 00:20:48 By : tungman
 


 

No. 4

Guest


ใส่ไว้ตรงไหน commit น่ะ อย่าบอกนะว่าใส่ไว้ใน loop for

แต่ถ้าเป็นผม ผมไม่ทำหรอกนะ solution เนี่ย ผมจะใช้ dataadapter แทน

โดย convert datasource ของ datagridview มาเป็น datatable ก่อน

แล้วค่อยใช้ dataadapter update ข้อมูลทั้งตารางลงฐานข้อมูลเลยทีเดียว

ไม่ต้องมานั่งวนลูปในเมื่อย




ใส่นอก loop ครับ


พอทำแบบที่บอก
com = New SqlCommand("Update GenerateFG_Details SET Amount = '" & Convert.ToChar(dtGenFG.Columns(9)) & "',Amount_Total = '" & Convert.ToChar(dtGenFG.Columns(10)) & "' Where GenerateID = '" & txtGenerateID.Text.ToString & "'", Conn)
com.ExecuteNonQuery()

Error converting data type varchar to float.

Amount ,Amount_Total เป็น float ครับ

พอเปลี่ยนเป็น Convert.Tochar ขึ้นแบบนี้ Unable to cast object of type 'System.Data.DataColumn' to type 'System.IConvertible'.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 10:30:02 By : ชิน
 


 

No. 5



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ไม่ต้อง commit ไม่ต้องใช้ executenonquery ไม่ต้องวนลูป

ใช้ sqldataadapter

DataGridView --> DataTable

Code (VB.Net)
Dim Dt As New DataTable()
Dim Dv As DataView = DirectCast(dgv.DataSource, DataView)

Dt = Dv.ToTable()


DataTable --> SqlDataAdapter --> MS SQL Server (อัฟเดต)

Code (VB.Net)
Dim CommandString As String = "UPDATE [GenerateFG_Details] SET [Amount]=@Amount, [Amount_Total]=@Amount_Total WHERE [GenerateID]=@GenerateID"
Dim Command As New SqlCommand(CommandString, conn)
Command.Parameters.Add("@Amount", SqlDbType.Float, 8, "Amount") 'Amount คือชื่อ column ใน Dt อาจจะไม่ตรงเพราะผมไม่รู้ว่าคุณกำหนดไว้ชื่ออะไร
Command.Parameters.Add("Amount_Total", SqlDbType.Float, 8, "Amount_Total") 'Amount_Total คือชื่อ column ใน Dt อาจจะไม่ตรงเพราะผมไม่รู้ว่าคุณกำหนดไว้ชื่ออะไร
Command.Parameters.Add("@GenerateID", SqlDbType.NVarChar, 50, "GenerateID") 'GenerateID คือชื่อ column ใน Dt อาจจะไม่ตรงเพราะผมไม่รู้ว่าคุณกำหนดไว้ชื่ออะไร

Dim DataAdapter As New SqlDataAdapter()
DataAdapter.UpdateCommand = Command
DataAdapter.Update(Dt)



ประวัติการแก้ไข
2010-08-09 10:55:49
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 10:55:03 By : tungman
 


 

No. 6

Guest


คุณ tungman ครับ

dtGenFG = CType(dgvProductionList.DataSource, DataTable)

Dim CommandString As String = "UPDATE [GenerateFG_Details] SET [Amount]=@Amount, [Amount_Total]=@Amount_Total WHERE [GenerateID]=@GenerateID"
Dim Command As New SqlCommand(CommandString, Conn)
Command.Parameters.Add("@Amount", SqlDbType.Float, 9, "Amount") 'Amount คือชื่อ column ใน Dt อาจจะไม่ตรงเพราะผมไม่รู้ว่าคุณกำหนดไว้ชื่ออะไร
Command.Parameters.Add("Amount_Total", SqlDbType.Float, 10, "Amount_Total") 'Amount_Total คือชื่อ column ใน Dt อาจจะไม่ตรงเพราะผมไม่รู้ว่าคุณกำหนดไว้ชื่ออะไร
Command.Parameters.Add("@GenerateID", SqlDbType.NVarChar, 0, "GenerateID") 'GenerateID คือชื่อ column ใน Dt อาจจะไม่ตรงเพราะผมไม่รู้ว่าคุณกำหนดไว้ชื่ออะไร

Dim DataAdapter As New SqlDataAdapter()
DataAdapter.UpdateCommand = Command
DataAdapter.Update(dtGenFG)

ค่าที่ได้ เหมือนเดิมครับ

ค่าในDatagrid ก่อน update
Amount =14
Amount_Total =10

ค่าที่ได้ใน DB
Amount =10
Amount_Total =10


ช่วยด้วยครับ ท่านที่รู้ ทำ3วันตัวนี้ตัวเดียวยังไม่ได้เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 12:01:51 By : ชิน
 


 

No. 7



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


add parameter แปลกๆ นะ

Command.Parameters.Add("@Amount", SqlDbType.Float, 9, "Amount")
Command.Parameters.Add("Amount_Total", SqlDbType.Float, 10, "Amount_Total")
Command.Parameters.Add("@GenerateID", SqlDbType.NVarChar, 0, "GenerateID")

เจ้า 9, 10, 0 มันคือ size นะ ทำไม nvarchar มันเท่ากับ 0 ล่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 12:05:38 By : tungman
 


 

No. 8

Guest


add parameter แปลกๆ นะ

Command.Parameters.Add("@Amount", SqlDbType.Float, 9, "Amount")
Command.Parameters.Add("Amount_Total", SqlDbType.Float, 10, "Amount_Total")
Command.Parameters.Add("@GenerateID", SqlDbType.NVarChar, 0, "GenerateID")

เจ้า 9, 10, 0 มันคือ size นะ ทำไม nvarchar มันเท่ากับ 0 ล่ะ



เปลี่ยนแล้วครับค่าที่ได้ก็เหมือนเดิม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 12:26:14 By : ชิน
 


 

No. 9



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


-_-" เปลี่ยนชื่อ column ที่ป้อนให้ parameter ให้ตรงกับของ dtGenFG จริงด้วยครับ

ของผมมันสมมุติ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 13:00:07 By : tungman
 


 

No. 10

Guest


-_-" เปลี่ยนชื่อ column ที่ป้อนให้ parameter ให้ตรงกับของ dtGenFG จริงด้วยครับ

อันนี้แหละ ตรงแล้วครับ Amount,Amount_Total
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 13:59:36 By : ชิน
 


 

No. 11

Guest


ได้แล้วครับ ทุกคำตอบ ใช้ได้หมดเลย ครับ ใครจะนำไปใช้ก็ได้ครับ ทำได้หลายวิธี


ผมเขียนตกไปหน่อยครับ เพิ่ม WHERE(GenerateID = @GenerateID) AND ด้วย PrimaryKey

เพราะ GenerateID ของผมไม่ใช่ PrimaryKey



ขอบมากๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 15:34:30 By : ชิน
 


 

No. 12



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


จะให้นำวิธีเขียนตกไปใช้เหรอ ???
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 20:30:19 By : tungman
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : นำค่าจาก datagrid update ลง DB ได้ แต่ ข้อมูลที่ได้เป็นของrows สุดท้าย แก้ยังงไครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่