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,038

HOME > .NET Framework > Forum > บันทึกข้อมูลจาก Datagrid ลง DB กดบันทึกเเล้วขึ้น Debug ตรง .ExecutNoncury() คับ ช่วยที่คับ


 

[.NET] บันทึกข้อมูลจาก Datagrid ลง DB กดบันทึกเเล้วขึ้น Debug ตรง .ExecutNoncury() คับ ช่วยที่คับ

 
Topic : 061654



โพสกระทู้ ( 109 )
บทความ ( 0 )



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



Code (VB.NET)
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim tr As SqlTransaction = con.BeginTransaction
05.            For i As Integer = 0 To DataGridView1.RowCount - 1
06.                Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
07.                With cm
08.                    .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
09.                    .Parameters.AddWithValue("@b", cb1.SelectedValue)
10.                    .Parameters.AddWithValue("@c", DataGridView1.Rows(i).Cells(0))
11.                    .Parameters.AddWithValue("@d", DataGridView1.Rows(i).Cells(1))
12.                    .Parameters.AddWithValue("@e", DataGridView1.Rows(i).Cells(2))
13.                    .Parameters.AddWithValue("@f", DataGridView1.Rows(i).Cells(3))
14.                    .Parameters.AddWithValue("@g", txt6.Text)
15.                    .Parameters.AddWithValue("@h", DataGridView1.Rows(i).Cells(4))
16.                    .Parameters.AddWithValue("@i", ty.Text)
17.                    .Parameters.AddWithValue("@j", tz.Text)
18.                    .ExecuteNonQuery()
19.                End With
20.            Next
21.            tr.Commit()
22.            MessageBox.Show("บันทึกการแก้ไขข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
23.            DataGridView1.Rows.Clear()
24.        End Using
25.End Sub





บันทึกข้อมูลจาก Datagrid ลง DB กดบันทึกเเล้วขึ้น Debug ตรง .ExecutNoncury () คับ ช่วยที่คับ



Tag : .NET, VB.NET

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-06-14 16:58:21 By : crazy-Ugly View : 3025 Reply : 61
 

 

No. 1



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

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

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

Error ว่าอะไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-14 18:05:55 By : webmaster
 

 

No. 2



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

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

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

ตัวอย่างการใช้ SqlParameter ครับ

Code (VB.NET)
01.strConnString = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase;Max Pool Size=400;Connect Timeout=600;"
02. 
03.strSQL = "INSERT INTO files (Name,FilesName,FilesType) " & _
04." VALUES " & _
05." (@sName,@sFilesName,@sFilesType)"
06.objConn.ConnectionString = strConnString
07.objConn.Open()
08. 
09.Dim objCmd As New SqlCommand(strSQL, objConn)
10.objCmd.Parameters.Add("@sName", SqlDbType.VarChar).Value = Me.txtName.Text
11.objCmd.Parameters.Add("@sFilesName", SqlDbType.Binary).Value = imbByte
12.objCmd.Parameters.Add("@sFilesType", SqlDbType.VarChar).Value = strMIME
13.objCmd.ExecuteNonQuery()



Go to : ASP.NET SQL Server BLOB Binary Data and Parameterized Query

Go to : ASP.NET System.Data.SqlClient - Parameter Query (SqlParameter)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-14 20:53:30 By : webmaster
 

 

No. 3



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Error

นี่คับ มัน error ตรงนี้คับ ขึ้นข้อความแบบนี้คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 08:19:51 By : crazy-Ugly
 

 

No. 4



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ช่วยทีคับพี่ วิน ผมพยายามเขียนอยู่เป็นอาทิดละคับตรงบันทึก ไม่ได้จิงๆคับ เลยมาโพสขอความช่วยเหลือคับ

คือ ผม บันทึกข้อมูลที่มีอยู่ใน Datagrid เลยคับไม่ได้ผูกกับ textbox คับ ผมกระทำการใน Datagrid เลยคับ

โดยข้อมูลใน datagrid ผมดึงข้อมูลมาจาก tabal อื่นคับ ดึงเอาเฉพาะ รหัสสินค้า ชื่อสินค้า เเละจำนวนกล่อง มาคับ เพื่อจะมากรอกค่า Rate เพราะข้อมูลมันเหมือนกันแต่หาผลลัพพ์คนละส่วนงานคับ โดยใช้ Datagrid ตัวนี้เเหละคับเป็นตัวเชื่อม แต่มันบันทึกไม่ได้คับ

ข้อ Debug ดังภาพด้านบนครับ

ขอคุณครับ


ประวัติการแก้ไข
2011-06-15 08:53:57
2011-06-15 08:55:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 08:23:00 By : crazy-Ugly
 

 

No. 5



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Error Agian


Error อย่างนี้คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 09:24:21 By : crazy-Ugly
 

 

No. 6



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



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


ลองเพิ่ม .Value
Original
1..Parameters.AddWithValue("@c", DataGridView1.Rows(i).Cells(0))


เป็นแบบนี้
Revised
1..Parameters.AddWithValue("@c", DataGridView1.Rows(i).Cells(0).Value)


เพิ่มเติม
1. ถ้าจะให้ดีควรใช้ BindingSource ช่วย จะทำให้การเขียนโค้ดไม่ยึดติด Index ของ Column
2. ถ้าจะใช้ SqlTransaction ให้ครบหลักสูตร ต้องมีการเรียกใช้ Method Commit และ Rollback (เรียกเมื่อ Error)

Code (VB.NET)
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim bs As BindingSource = DataGridView1.DataSource   ' จะ Error ถ้าไม่ได้ใช้ BindingSource เป็น DataSource ในตอนแรก
05.            Dim tr As SqlTransaction = con.BeginTransaction
06.            Try
07. 
08.            For i As Integer = 0 To DataGridView1.RowCount - 1
09.                Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
10.                With cm
11.                    .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
12.                    .Parameters.AddWithValue("@b", cb1.SelectedValue)
13.                    .Parameters.AddWithValue("@c", bs.List(i)("proid"))
14.                    .Parameters.AddWithValue("@d", bs.List(i)("proname"))
15.                    .Parameters.AddWithValue("@e", bs.List(i)("box"))
16.                    .Parameters.AddWithValue("@f", bs.List(i)("trancost"))
17.                    .Parameters.AddWithValue("@g", txt6.Text)
18.                    .Parameters.AddWithValue("@h", bs.List(i)("amount"))
19.                    .Parameters.AddWithValue("@i", ty.Text)
20.                    .Parameters.AddWithValue("@j", tz.Text)
21.                    .ExecuteNonQuery()
22.                End With
23.            Next
24.            tr.Commit()
25.            MessageBox.Show("บันทึกการแก้ไขข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
26.            DataGridView1.Rows.Clear()
27.            Catch ex As Exception
28.                  tr.Rollback()               ' ถ้าจะใช้ SqlTransaction ก็ควรจะมี tr.Rollback() เพื่อให้ทำงานได้เต็มรูปแบบ
29.                  MessageBox.Show(ex.Message)
30.            Finally
31.                  tr.Dispose
32.            End Try
33.        End Using
34.End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 13:15:10 By : watcharop
 

 

No. 7



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


เคยใส่ . value ต่อท้ายเเล้วคับ Error จุดเดิมคับ แต่ข้อความที่Debug มาบอกเป็นแบบนี้คับ

value error
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 14:35:55 By : crazy-Ugly
 

 

No. 8



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ช่วยทีคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 14:47:02 By : crazy-Ugly
 

 

No. 9



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Code (VB.NET)
01.Private Sub butsup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butsup.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim bs As BindingSource = DataGridView1.DataSource 'จะ Error ถ้าไม่ได้ใช้ BindingSource เป็น DataSource ในตอนแรก
05.            Dim tr As SqlTransaction = con.BeginTransaction
06.            Try
07.                For i As Integer = 0 To DataGridView1.RowCount - 1
08.                    Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
09.                    With cm
10.                        .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
11.                        .Parameters.AddWithValue("@b", cb1.SelectedValue)
12.                        .Parameters.AddWithValue("@c", bs.List(i)("proid"))
13.                        .Parameters.AddWithValue("@d", bs.List(i)("proname"))
14.                        .Parameters.AddWithValue("@e", bs.List(i)("box"))
15.                        .Parameters.AddWithValue("@f", bs.List(i)("trancost"))
16.                        .Parameters.AddWithValue("@g", txt6.Text)
17.                        .Parameters.AddWithValue("@h", bs.List(i)("amount"))
18.                        .Parameters.AddWithValue("@i", ty.Text)
19.                        .Parameters.AddWithValue("@j", tz.Text)
20.                        .ExecuteNonQuery()
21.                    End With
22.                Next
23.                tr.Commit()
24.                MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
25.                DataGridView1.Rows.Clear()
26.                'หากโปรแกรม Error ให้เเสดงข้อมความของ Debug โดยใช้ Catch . . . as Exception
27.            Catch ex As Exception
28.                tr.Rollback()
29.                MessageBox.Show(ex.Message)
30.            Finally
31.                tr.Dispose()
32.            End Try
33.        End Using
34.End Sub


ผมลองเขียนตามที่พี่แนะนำครับ ยัง Error จุดเดิมคับ .ExecutNonQuery()

มันขึ้น Error แบบนี้คับ

Error message


ประวัติการแก้ไข
2011-06-15 16:42:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 14:52:25 By : crazy-Ugly
 

 

No. 10



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ช่วยผมด้วยคร๊าป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-16 08:06:31 By : crazy-Ugly
 

 

No. 11



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

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

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

ลอง Debug ดูครับ Error ตรง Line ไหนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-16 08:39:28 By : webmaster
 

 

No. 12



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Code (VB.NET)
01.Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
02.            con.Open()
03.            Dim bs As BindingSource = DataGridView1.DataSource 'จะ Error ถ้าไม่ได้ใช้ BindingSource เป็น DataSource ในตอนแรก
04.            Dim tr As SqlTransaction = con.BeginTransaction
05.            Try
06.                For i As Integer = 0 To DataGridView1.RowCount - 1
07.                    Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
08.                    With cm
09.                        .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
10.                        .Parameters.AddWithValue("@b", cb1.SelectedValue)
11.                        .Parameters.AddWithValue("@c", bs.List(i)("proid"))
12.                        .Parameters.AddWithValue("@d", bs.List(i)("proname"))
13.                        .Parameters.AddWithValue("@e", bs.List(i)("box"))
14.                        .Parameters.AddWithValue("@f", bs.List(i)("trancost"))
15.                        .Parameters.AddWithValue("@g", txt6.Text)
16.                        .Parameters.AddWithValue("@h", bs.List(i)("amount"))
17.                        .Parameters.AddWithValue("@i", ty.Text)
18.                        .Parameters.AddWithValue("@j", tz.Text)
19.                        .ExecuteNonQuery()
20.                    End With
21.                Next
22.                tr.Commit()
23.                MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
24.                DataGridView1.Rows.Clear()
25.                'หากโปรแกรม Error ให้เเสดงข้อมความของ Debug โดยใช้ Catch . . . as Exception
26.            Catch ex As Exception
27.                tr.Rollback()
28.                MessageBox.Show(ex.Message)
29.            Finally
30.                tr.Dispose()
31.            End Try
32.        End Using
33.End Sub


พี่วินครับ จากโค๊ดข้างบนนี้ เวลากด บันทึก rate เเล้วมัน show message เเบบนี้คับ

message error
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-16 10:13:00 By : crazy-Ugly
 

 

No. 13



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



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


ลองเปลี่ยน
For i As Integer = 0 To DataGridView1.RowCount - 1
เป็น
For i As Integer = 0 To bs.Count - 1

Code (VB.NET)
01.Private Sub butsup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butsup.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim bs As BindingSource = DataGridView1.DataSource 'จะ Error ถ้าไม่ได้ใช้ BindingSource เป็น DataSource ในตอนแรก
05.            Dim tr As SqlTransaction = con.BeginTransaction
06.            Try
07.                For i As Integer = 0 To bs.Count - 1
08.                    Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
09.                    With cm
10.                        .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
11.                        .Parameters.AddWithValue("@b", cb1.SelectedValue)
12.                        .Parameters.AddWithValue("@c", bs.List(i)("proid"))
13.                        .Parameters.AddWithValue("@d", bs.List(i)("proname"))
14.                        .Parameters.AddWithValue("@e", bs.List(i)("box"))
15.                        .Parameters.AddWithValue("@f", bs.List(i)("trancost"))
16.                        .Parameters.AddWithValue("@g", txt6.Text)
17.                        .Parameters.AddWithValue("@h", bs.List(i)("amount"))
18.                        .Parameters.AddWithValue("@i", ty.Text)
19.                        .Parameters.AddWithValue("@j", tz.Text)
20.                        .ExecuteNonQuery()
21.                    End With
22.                Next
23.                tr.Commit()
24.                MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
25.                DataGridView1.Rows.Clear()
26.                'หากโปรแกรม Error ให้เเสดงข้อมความของ Debug โดยใช้ Catch . . . as Exception
27.            Catch ex As Exception
28.                tr.Rollback()
29.                MessageBox.Show(ex.Message)
30.            Finally
31.                tr.Dispose()
32.            End Try
33.        End Using
34.End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-16 12:54:12 By : watcharop
 

 

No. 14



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


เหมือนเดิมคับพี่ ขึ้น message เหมือนเดิมคับ

ขอบใจมากคับที่ช่วยผม ไม่ได้จิงๆ คับ ขอบคุณมากคับ


ประวัติการแก้ไข
2011-06-16 17:16:24
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-16 17:09:58 By : crazy-Ugly
 

 

No. 15



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ช่วยผมทีคับ มันติดตรงไหนเหรอคับ ?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 08:36:54 By : crazy-Ugly
 

 

No. 16



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


อุปสรรค์จิงๆคับ จะเสดก็ไม่เสด ช่วยผมด้วยครับพี่ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 08:38:56 By : crazy-Ugly
 

 

No. 17



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ผมลองเปลี่ยนโดยไม่ใช้ Try คับ มัน error ตรงนี้คับ

test 2


ประวัติการแก้ไข
2011-06-17 08:55:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 08:51:42 By : crazy-Ugly
 

 

No. 18



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


จากภาพด้านบนผมลองเปลี่ยน แบบเป็นนี้คับ

test 3
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 09:03:28 By : crazy-Ugly
 

 

No. 19



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



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


ตอนเขียนโค้ด
กำหนดอะไรให้เป็น DataSource ของ DataGridView1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 09:12:21 By : watcharop
 

 

No. 20



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Dim bs As BindingSource = DataGridView1.DataSource คับ


ประวัติการแก้ไข
2011-06-17 10:47:49
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 10:44:30 By : crazy-Ugly
 

 

No. 21



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


test 2
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 10:49:41 By : crazy-Ugly
 

 

No. 22



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



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


ไม่ได้หมายถึงอย่างนั้น
งั้นลองใส่ MessageBox.Show("DataSource: " & DataGridView1.DataSource.GetType.ToString)
แล้วดูว่ามี Message ว่าอย่างไร

Code (VB.NET)
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
02.        MessageBox.Show("DataSource: " & DataGridView1.DataSource.GetType.ToString)
03.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
04.            con.Open()
05.            Dim bs As BindingSource = DataGridView1.DataSource   ' จะ Error ถ้าไม่ได้ใช้ BindingSource เป็น DataSource ในตอนแรก
06.            Dim tr As SqlTransaction = con.BeginTransaction
07.            Try
08. 
09.            For i As Integer = 0 To DataGridView1.RowCount - 1
10.                Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
11.                With cm
12.                    .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
13.                    .Parameters.AddWithValue("@b", cb1.SelectedValue)
14.                    .Parameters.AddWithValue("@c", bs.List(i)("proid"))
15.                    .Parameters.AddWithValue("@d", bs.List(i)("proname"))
16.                    .Parameters.AddWithValue("@e", bs.List(i)("box"))
17.                    .Parameters.AddWithValue("@f", bs.List(i)("trancost"))
18.                    .Parameters.AddWithValue("@g", txt6.Text)
19.                    .Parameters.AddWithValue("@h", bs.List(i)("amount"))
20.                    .Parameters.AddWithValue("@i", ty.Text)
21.                    .Parameters.AddWithValue("@j", tz.Text)
22.                    .ExecuteNonQuery()
23.                End With
24.            Next
25.            tr.Commit()
26.            MessageBox.Show("บันทึกการแก้ไขข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
27.            DataGridView1.Rows.Clear()
28.            Catch ex As Exception
29.                  tr.Rollback()               ' ถ้าจะใช้ SqlTransaction ก็ควรจะมี tr.Rollback() เพื่อให้ทำงานได้เต็มรูปแบบ
30.                  MessageBox.Show(ex.Message)
31.            Finally
32.                  tr.Dispose
33.            End Try
34.        End Using
35.End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 10:53:42 By : watcharop
 

 

No. 23



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



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


ถ้าจะให้ดี เอาโค้ด ทั้งฟอร์มมาแปะด้วยจะดีกว่า
อยากดูตอนโหลดข้อมูล
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 10:57:11 By : watcharop
 

 

No. 24



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


คับ แปป คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 11:38:22 By : crazy-Ugly
 

 

No. 25



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Code (VB.NET)
01.Private Sub butre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butre.Click
02.        If MessageBox.Show("คุณต้องการเรียกข้อมูลใช่หรือไม่?", "Database", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
03.            '****การดึงข้อมูลมาโชว์ใน DataGrid****'
04.            DataGridView1.Show()
05.            lv.Hide()
06.            Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
07.                con.Open()
08.                Dim sql As String = "select * from tblsum where keydate ='" & dtp.Value.ToString("MM/dd/yyyy") & "'and tranid ='" & cb1.SelectedValue & "'"
09.                Dim cmd As SqlCommand = New SqlCommand(sql, con)
10.                Dim dr As SqlDataReader = cmd.ExecuteReader
11.                Dim dt = New DataTable
12.                If dr.HasRows Then
13.                    Dim r As Integer = 0
14.                    While dr.Read
15.                        With DataGridView1
16.                            r = .RowCount - 1
17.                            .Rows.Add()
18.                            .Rows(r).Cells(0).Value = dr.Item(2)
19.                            .Rows(r).Cells(1).Value = dr.Item(3)
20.                            .Rows(r).Cells(2).Value = dr.Item(4)
21.                        End With
22.                    End While
23.                End If
24.            End Using
25.        End If
26.        DataGridView1.Focus()



อันนี้เป็นการเรียกข้อมูลคับ อิงจากวันที่ และ รหัสสินค้าคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 11:40:24 By : crazy-Ugly
 

 

No. 26



โพสกระทู้ ( 109 )
บทความ ( 0 )



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





ประวัติการแก้ไข
2011-06-17 11:46:25
2011-06-17 11:48:19
2011-06-17 15:02:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 11:44:01 By : crazy-Ugly
 

 

No. 27



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



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


จากโค้ดที่ให้มา
DataGridView1 มิได้ผูกข้อมูลกับ Object ใดๆ เลย
ซึ่งเป็นวิธีที่ไม่ค่อยนิยมทำกันนัก

เพราะฉะนั้นจึงไม่สามารถใช้โค้ดที่ผมเคยให้ไปได้ (โค้ดที่เกี่ยวเนื่องกับ bs)
ต้องใช้วิธีอ่านข้อมูลจาก DataGridView1 โดยตรง
อย่างที่คุณเขียนไว้แต่แรก

ช่วงนี้ลองหาตัวอย่างการใช้ DataGridView มาศึกษาก่อนดีกว่า
ใน WebSite นี้ก็มี
จะช่วยลดการเขียนโค้ดไปได้เยอะเลยล่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 12:44:10 By : watcharop
 

 

No. 28



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ไม่มีหนทางเลยเหรอคับพี่ คือผมใช้ datagrid มาเป็นตัวกลางในการเรียกข้อมูลมาใช้คับ ข้อมูลเดียวกันแต่นำไปใช้คนละส่วนคับ
ส่วนที่ 1 add ข้อมูลจาก การหาค่าประกันสินค้าคับ จะเก็บข้อมูลไว้ใน tblsum
ส่วนที่ 2 (ส่วนที่ผมนำมาตั้งกระทู้อ่ะคับ) ผมดึงข้อมูลมาจาก tblsum เอาเฉพาะ รหัสสินค้า ชื่อสินค้า และ จำนวนกล่อง คับ เพื่อมาหาค่า Rate คับ
เลยไม่ได้ผูกกับวัตถุใดๆ คับ ตอนเเรกลองดึงข้อมูลมาใส่ใน Listview เเต่ไม่ Listview ไม่สามารถเเทรข้อมูลต่อท้ายข้อมูลที่ดุงมาได้คับ เลยลองมาใช้ datagrid ผลลัพพ์คือ สามารถกระทำการได้ แต่ติดตรง บีนทึกลง DB นี่แหละคับ จนปัญญาจิงๆคับ


ประวัติการแก้ไข
2011-06-17 15:10:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-17 15:03:02 By : crazy-Ugly
 

 

No. 29



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ช่วยผมด้วยคับ


ประวัติการแก้ไข
2011-06-18 08:19:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-18 08:17:36 By : crazy-Ugly
 

 

No. 30



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


มีส่วนไหมคับที่เวลาผมดึงข้อมูลมา จะมี Record ที่ว่างอยู่สุดท้ายเสมอ อะคับ ส่วนนี้จะทำให้ Error ได้เป่าคับ

exam


เเล้วจะสามารถทำให้เวลาดึงข้อมูลมา ไม่เอา record ที่เป็นค่า ว่างได้เป่าคับ ให้พอดีกับข้อมูลที่ดึงมาเลยคับ

โค๊ด ดึงข้อมูล

Code (VB.NET)
01.f MessageBox.Show("คุณต้องการเรียกข้อมูลใช่หรือไม่?", "Database", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
02.            '****การดึงข้อมูลมาโชว์ใน DataGrid****'
03.            DataGridView1.Show()
04.            lv.Hide()
05.            Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
06.                con.Open()
07.                Dim sql As String = "select * from tblsum where keydate ='" & dtp.Value.ToString("MM/dd/yyyy") & "'and tranid ='" & cb1.SelectedValue & "'"
08.                Dim cmd As SqlCommand = New SqlCommand(sql, con)
09.                Dim dr As SqlDataReader = cmd.ExecuteReader
10.                Dim dt = New DataTable
11.                If dr.HasRows Then
12.                    Dim r As Integer = 0
13.                    While dr.Read
14.                        With DataGridView1
15.                            r = .RowCount - 1
16.                            .Rows.Add()
17.                            .Rows(r).Cells(0).Value = dr.Item(2)
18.                            .Rows(r).Cells(1).Value = dr.Item(3)
19.                            .Rows(r).Cells(2).Value = dr.Item(4)
20.                        End With
21.                    End While
22.                End If
23.            End Using
24.        End If
25.        DataGridView1.Focus()

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-18 09:25:37 By : crazy-Ugly
 

 

No. 31



โพสกระทู้ ( 109 )
บทความ ( 0 )



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



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-18 13:44:39 By : crazy-Ugly
 

 

No. 32



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



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


ใน DataGridViewRow จะมี Property
ชื่อ IsnewRow (ถ้าจำไม่ผิด) ก็ใช้ประโยชน์จากตัวนี้แหละ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-18 17:19:27 By : watcharop
 

 

No. 33



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ขอเป็น Code ได้ไหมคับพี่ คือผมดูเเล้วมันไม่มีคับ IsnewRow
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-20 08:39:38 By : crazy-Ugly
 

 

No. 34



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



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


ใช้ Tool ตัวไหนอยู่ครับ
มันจะเริ่มมีใน .NET 2.0
ซึ่งต้องใช้ VS2005 เป็นต้นไป

DataGridView1.Rows(0).IsNewRow

http://msdn.microsoft.com/en-US/library/system.windows.forms.datagridviewrow_members(v=VS.80).aspx

ตัวอย่างอยู่ล่างๆ หน่อย
http://msdn.microsoft.com/en-US/library/system.windows.forms.datagridviewrow.isnewrow(v=VS.80).aspx


ประวัติการแก้ไข
2011-06-20 09:47:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-20 09:45:49 By : watcharop
 

 

No. 35



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ผมใช้ 3.5 + SQL 2005 คับ

Code (VB.NET)
01.If MessageBox.Show("คุณต้องการเรียกข้อมูลใช่หรือไม่?", "Database", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
02.            '****การดึงข้อมูลมาโชว์ใน DataGrid****'
03.            DataGridView1.Show()
04.            lv.Hide()
05.            Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
06.                con.Open()
07.                Dim sql As String = "select * from tblsum where keydate ='" & dtp.Value.ToString("MM/dd/yyyy") & "'and tranid ='" & cb1.SelectedValue & "'"
08.                Dim cmd As SqlCommand = New SqlCommand(sql, con)
09.                Dim dr As SqlDataReader = cmd.ExecuteReader
10.                Dim dt = New DataTable
11.                If dr.HasRows Then
12.                    Dim r As Integer = 0
13.                    While dr.Read
14.                        With DataGridView1
15.                            r = .RowCount - 1
16.                            .Rows.Add()
17.                            .Rows(r).Cells(0).Value = dr.Item(2)
18.                            .Rows(r).Cells(1).Value = dr.Item(3)
19.                            .Rows(r).Cells(2).Value = dr.Item(4)
20.                        End With
21.                    End While
22.                End If
23.            End Using
24.        End If
25.        DataGridView1.Focus()


จากโค๊ดด้านบนนี้ ผมต้องเขียนยังไงคับ ช่วยที่คับพี่ ตรงนี้ได้ก็เสร็จครับโปรแกรมนี้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-20 10:54:01 By : crazy-Ugly
 

 

No. 36

Guest


ตอบความคิดเห็นที่ : 30 เขียนโดย : crazy-Ugly เมื่อวันที่ 2011-06-18 09:25:37
รายละเอียดของการตอบ ::
มุมขวาของ datagrid เอาเครื่องหมายถูกออกสิ พวก enable Add ,enable edit

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-20 11:23:19 By : test
 

 

No. 37



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



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


ตอบความคิดเห็นที่ : 35 เขียนโดย : crazy-Ugly เมื่อวันที่ 2011-06-20 10:54:01
รายละเอียดของการตอบ ::
เอ่อ ไม่รู้ว่าคุยกันประเด็นเดียวกันรึเปล่า
Property IsNewRow ใช้ตอนบันทึกข้อมูล
ส่วนตอนอ่านข้อมูลจาก DataReader เข้า DataGridView ไม่เกี่ยวกับ Property ตัวนี้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-20 13:21:21 By : watcharop
 

 

No. 38



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ตอบความคิดเห็นที่ : 36 เขียนโดย : test เมื่อวันที่ 2011-06-20 11:23:19
รายละเอียดของการตอบ ::

" มุมขวาของ datagrid เอาเครื่องหมายถูกออกสิ พวก enable Add ,enable edit "


... ขอบคุณครับ
ผมเอาออกเเล้วคับ มันไม่เเสดงข้อมูลคับ เวลากดเรียกข้อมูล.......



ประวัติการแก้ไข
2011-06-21 08:16:18
2011-06-21 08:17:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 08:15:36 By : crazy-Ugly
 

 

No. 39



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


โค๊ดบันทึกคับ จะต้องเขียนยังไงคับ ไม่ทราบจิงๆคับ

Code (VB.NET)
01.Private Sub butsup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butsup.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            'Dim bs As BindingSource = DataGridView1.DataSource 'จะ Error ถ้าไม่ได้ใช้ BindingSource เป็น DataSource ในตอนแรก
05.            Dim tr As SqlTransaction = con.BeginTransaction
06.            'Try
07.            For i As Integer = 0 To DataGridView1.RowCount - 1
08. 
09.                Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
10.                With cm
11.                    .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
12.                    .Parameters.AddWithValue("@b", cb1.SelectedValue)
13.                    .Parameters.AddWithValue("@c", DataGridView1.Rows(i).Cells(0).Value)
14.                    .Parameters.AddWithValue("@d", DataGridView1.Rows(i).Cells(1).Value)
15.                    .Parameters.AddWithValue("@e", DataGridView1.Rows(i).Cells(2).Value)
16.                    .Parameters.AddWithValue("@f", DataGridView1.Rows(i).Cells(3).Value)
17.                    .Parameters.AddWithValue("@g", txt6.Text)
18.                    .Parameters.AddWithValue("@h", DataGridView1.Rows(i).Cells(4).Value)
19.                    .Parameters.AddWithValue("@i", ty.Text)
20.                    .Parameters.AddWithValue("@j", tz.Text)
21.                    .ExecuteNonQuery()
22.                End With
23.            Next
24.            tr.Commit()
25.            MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
26.            DataGridView1.Rows.Clear()
27.            '' ''หากโปรแกรม Error ให้เเสดงข้อมความของ Debug โดยใช้ Catch . . . as Exception
28.            'Catch ex As Exception
29.            '    tr.Rollback()
30.            '    MessageBox.Show(ex.Message)
31.            'Finally
32.            '    tr.Dispose()
33.            'End Try
34.        End Using
35.    End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 08:39:22 By : crazy-Ugly
 

 

No. 40



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



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


มันยาก
เลยไม่เคยอยากเขียนให้ดู เหนื่อย
ผมไม่เคยใช้ DataGridView เก็บข้อมูลตรงๆ แบบนี้
เพราะมันจะวุ่นวายทั้งตอนโหลดข้อมูล และตอนบันทึกนี่แหละ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 09:00:24 By : watcharop
 

 

No. 41



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



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


ตัวอย่างที่ผมใช้ จะประมาณนี้
https://www.thaicreate.com/dotnet/forum/053293.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 09:04:19 By : watcharop
 

 

No. 42



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


พอมีหนทางอื่นไหมครับพี่ที่พอจะทำได้นอกจาก ที่ผมทำ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 13:22:07 By : crazy-Ugly
 

 

No. 43



โพสกระทู้ ( 437 )
บทความ ( 0 )



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


จากกระทู้ 39 จขกท. ทดสอบส่งค่าเป็น ข้อมูลตรงๆดูได้ไหมครับ ว่าผ่านหรือไม่ โดยไม่ต้องอ้างอิงไป Gridview ได้ผลอย่างไรบอกให้ทราบด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 14:35:59 By : kaimuk
 

 

No. 44



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


อธิบายก่อนน่ะครับ คือผมดึงข้อมูลมาจากตารางอื่นน่ะคับ ไม่ได้ Add ข้อมูลเข้าDatagrid ทั้งหมด และไม่ได้ผูก กับ เครื่องมือใดๆ คับ
แบบว่าใช้ Datagrid เป็นตัวแสดงผลเฉยๆคับ

แบบนี้คับ
rate

จากภาพด้านบน ผมจะคีย์ค่า Rate ลงไป (คีย์ในตาราง Datagrid เลยน่ะคับ ไม่ได้คีย์ใน Txtbox)
แล้วในช่อง Amount = จำนวนกล่อง * Rate

ผมใช้ Code นี้คับในการคำนวน
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Dim i As Integer
For i = 0 To DataGridView1.RowCount - 1
DataGridView1.Rows(i).Cells(4).Value = DataGridView1.Rows(i).Cells(3).Value * DataGridView1.Rows(i).Cells(2).Value
Next
End Sub



ดังภาพนี้คับ

amount

ปัญหาคือ พอผมคีย์ค่า Rate ครบตามข้อมูลที่ดึงมา เสร็จ แล้วกดบันทึก มันข้อ Error debug คับ (กระทู้ที่ 7)

ช่วยทีคับ


ประวัติการแก้ไข
2011-06-21 16:47:18
2011-06-21 16:52:11
2011-06-21 16:53:05
2011-06-21 16:55:27
2011-06-21 16:57:55
2011-06-21 16:59:53
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 16:43:46 By : crazy-Ugly
 

 

No. 45



โพสกระทู้ ( 437 )
บทความ ( 0 )



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


Code (VB.NET)
01.With cm
02..Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
03..Parameters.AddWithValue("@b", cb1.SelectedValue)
04..Parameters.AddWithValue("@c", DataGridView1.Rows(i).Cells(0).Value)
05..Parameters.AddWithValue("@d", DataGridView1.Rows(i).Cells(1).Value)
06..Parameters.AddWithValue("@e", DataGridView1.Rows(i).Cells(2).Value)
07..Parameters.AddWithValue("@f", DataGridView1.Rows(i).Cells(3).Value)
08..Parameters.AddWithValue("@g", txt6.Text)
09..Parameters.AddWithValue("@h", DataGridView1.Rows(i).Cells(4).Value)
10..Parameters.AddWithValue("@i", ty.Text)
11..Parameters.AddWithValue("@j", tz.Text)
12..ExecuteNonQuery()
13.End With


ตรง DataGridView1.Rows(i).Cells(0).Value บราๆๆ ทั้งหลายเนี้ยครับ กรณีที่เราใส่ค่าไปตรงๆเลย จะผ่านหรือไม่ จะได้พอสรุปได้ว่าเป็นกับ DataGrid หรือไม่น่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 16:59:17 By : kaimuk
 

 

No. 46



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ยังไงเหรอคับ ส่งค่าโดยตรง ผมดึงข้อมูลมาครับ ดูกระทู้ 44 คับ

อย่าว่ากันน่ะคับผมไม่รู้จิงๆ มือใหม่คับ


ประวัติการแก้ไข
2011-06-21 17:07:48
2011-06-21 17:08:35
2011-06-21 17:09:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-21 17:05:56 By : crazy-Ugly
 

 

No. 47



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ช่วยผมทีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 08:09:01 By : crazy-Ugly
 

 

No. 48



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



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


ทำไมไม่ลอง Insert เริ่มจากจำนวน Column น้อยๆ ก่อนล่ะ
จะได้รู้ว่า Column ไหนมีปัญหา
เช่นจาก Column ทั้งหมด keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone
ก็ลอง Insert แค่ ฟิล์ดที่เป็นตัวเลข กับเป็น Text ก่อน และก็ฟิล์ด ที่ไม่เกี่ยวข้องกับ DataGridView
จะได้มั่นใจว่า ปัญหาเกิดจากฟิล์ดวันที่ หรือฟิล์ดใน DataGridView

ปัญหาของมนุษย์หลายๆ ท่าน ก็เกิดจากการ Insert ฟิล์ดวันที่

Code (VB.NET)
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim tr As SqlTransaction = con.BeginTransaction
05.            For i As Integer = 0 To DataGridView1.RowCount - 1
06.                Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
07.                With cm
08.                    .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
09.                    .Parameters.AddWithValue("@b", cb1.SelectedValue)
10.                    .Parameters.AddWithValue("@c", DataGridView1.Rows(i).Cells(0))
11.                    .Parameters.AddWithValue("@d", DataGridView1.Rows(i).Cells(1))
12.                    .Parameters.AddWithValue("@e", DataGridView1.Rows(i).Cells(2))
13.                    .Parameters.AddWithValue("@f", DataGridView1.Rows(i).Cells(3))
14.                    .Parameters.AddWithValue("@g", txt6.Text)
15.                    .Parameters.AddWithValue("@h", DataGridView1.Rows(i).Cells(4))
16.                    .Parameters.AddWithValue("@i", ty.Text)
17.                    .Parameters.AddWithValue("@j", tz.Text)
18.                    .ExecuteNonQuery()
19.                End With
20.            Next
21.            tr.Commit()
22.            MessageBox.Show("บันทึกการแก้ไขข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
23.            DataGridView1.Rows.Clear()
24.        End Using
25.End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 08:39:24 By : watcharop
 

 

No. 49



โพสกระทู้ ( 437 )
บทความ ( 0 )



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


ตอบความคิดเห็นที่ : 48 เขียนโดย : watcharop เมื่อวันที่ 2011-06-22 08:39:24
รายละเอียดของการตอบ ::
ตามที่ท่านหางอึ่งกล่าวแหละครับ วันที่นี้ตัวปราบเซียนเลย ทดลองประมาณนี้ครับ

Code (VB.NET)
01.With cm
02..Parameters.AddWithValue("@a", "'2011-06-22 00:00:00'")
03..Parameters.AddWithValue("@b", "B")
04..Parameters.AddWithValue("@c", "B")
05..Parameters.AddWithValue("@d", "B")
06..Parameters.AddWithValue("@e", "B")
07..Parameters.AddWithValue("@f", "B")
08..Parameters.AddWithValue("@g", "B")
09..Parameters.AddWithValue("@h", "B")
10..Parameters.AddWithValue("@i", "B")
11..Parameters.AddWithValue("@j", "B")
12..ExecuteNonQuery()
13.End With


ส่วนอันไหนที่มันเป็น FK ก็ทำให้มันตรง ทดลอง Run ดูว่าผ่านหรือไม่น่ะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 08:49:06 By : kaimuk
 

 

No. 50



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


again

เหมือนเดิมคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 10:40:58 By : crazy-Ugly
 

 

No. 51



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


db

Database คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 10:45:56 By : crazy-Ugly
 

 

No. 52



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


" ทำไมไม่ลอง Insert เริ่มจากจำนวน Column น้อยๆ ก่อนล่ะ
จะได้รู้ว่า Column ไหนมีปัญหา
เช่นจาก Column ทั้งหมด keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone
ก็ลอง Insert แค่ ฟิล์ดที่เป็นตัวเลข กับเป็น Text ก่อน และก็ฟิล์ด ที่ไม่เกี่ยวข้องกับ DataGridView
จะได้มั่นใจว่า ปัญหาเกิดจากฟิล์ดวันที่ หรือฟิล์ดใน DataGridView

ปัญหาของมนุษย์หลายๆ ท่าน ก็เกิดจากการ Insert ฟิล์ดวันที่ "


try


แบบนี้บันทึกได้คับ ข้อมูลเข้า DB คับ


ประวัติการแก้ไข
2011-06-22 10:54:29
2011-06-22 10:55:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 10:51:47 By : crazy-Ugly
 

 

No. 53



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



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


ก็เป็นนิมิตหมายที่ดี
งั้นต่อไปก็ลองกับ DataGridView
ทีละ Column
เดี๋ยวก็เจอล่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 11:02:51 By : watcharop
 

 

No. 54



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ไม่ได้เลยคับ บันทึกข้อมุลใน Datagrid ไม่ได้ซัก Column เลยคับ

และผมลองเอา Code คำนวนออก ก็บันทึกไม่ได้คับ แต่มันขึ้น debug แบบนี้คับ
try3

try1


ประวัติการแก้ไข
2011-06-22 14:14:27
2011-06-22 14:29:37
2011-06-22 14:31:58
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 14:13:50 By : crazy-Ugly
 

 

No. 55



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



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


เริ่มจาก บันทึกเฉพาะ proid ซึ่งมีชนิดข้อมูลเป็น nvarchar(2)

Code (VB.NET)
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim tr As SqlTransaction = con.BeginTransaction
05. 
06.            ' ส่วนของการสร้าง Parameters ไว้ก่อน For Loop
07.           Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,bill,typeid,zone) values (@a,@b,@proid,@g,@i,@j)", con, tr)
08.                With cm
09.                    .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
10.                    .Parameters.AddWithValue("@b", cb1.SelectedValue)
11.                    .Parameters.Add("@proid", SqlDbType.NVarChar,2)    ' แนะนำให้ Add Parameters ด้วยวิธีนี้ การ AddWithValue อาจทำให้ระบบตีความหมายของชนิดตัวแปรไม่ตรงกับที่ต้องการ
12. 
13.                    .Parameters.AddWithValue("@g", txt6.Text)
14. 
15.                    .Parameters.AddWithValue("@i", ty.Text)
16.                    .Parameters.AddWithValue("@j", tz.Text)
17.            End With
18.             
19.            For i As Integer = 0 To DataGridView1.RowCount - 1
20.               If Not DataGridView1.Rows(i).IsNewRow Then
21.                  ' Parameters ใดที่ไม่มีการแก้ไขข้อมูล ก็ไม่จำเป็นต้องใส่ใน For Loop
22.                  cm.Parameters("@proid").Value = DataGridView1.Rows(i).Cells(0).Value
23.                  cm.ExecuteNonQuery()
24.               End If
25.            Next
26. 
27.            tr.Commit()
28.            MessageBox.Show("บันทึกการแก้ไขข้อมูลเรียบร้อยแล้ว", "Database", MessageBoxButtons.OK)
29.            DataGridView1.Rows.Clear()
30.        End Using
31.End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 14:44:03 By : watcharop
 

 

No. 56



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


จาก Code กระทู้งด้านบนครับ

ได้ครับ พี่หางอึ่ง บันทึกได้ครับ

ข้อมูลใน Datagrid ส่วนของ proid บันทึกได้ครับ ลงใน DB แล้วครับ (พอมีความหวังเเล้วครับ)


ประวัติการแก้ไข
2011-06-22 16:47:32
2011-06-22 16:49:15
2011-06-22 16:50:07
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-22 16:45:46 By : crazy-Ugly
 

 

No. 57



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


Code (VB.NET)
01.Private Sub butsup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butsup.Click
02.        Using con As New SqlConnection("data source=tiger;initial catalog=transport;uid=sa;pwd=47222420322")
03.            con.Open()
04.            Dim tr As SqlTransaction = con.BeginTransaction
05.            ' ส่วนของการสร้าง Parameters ไว้ก่อน For Loop
06.            Dim cm As New SqlCommand("insert into tblbbk1 (keydate,tranid,proid,proname,box,trancost,bill,amount,typeid,zone) values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)", con, tr)
07.            With cm
08.                .Parameters.AddWithValue("@a", dtp.Value.ToString("MM/dd/yyyy"))
09.                .Parameters.AddWithValue("@b", cb1.SelectedValue)
10.                .Parameters.Add("@c", SqlDbType.NVarChar, 2)    ' แนะนำให้ Add Parameters ด้วยวิธีนี้ การ AddWithValue อาจทำให้ระบบตีความหมายของชนิดตัวแปรไม่ตรงกับที่ต้องการ
11.                .Parameters.Add("@d", SqlDbType.NVarChar, 50)
12.                .Parameters.Add("@e", SqlDbType.Int)
13.                .Parameters.Add("@f", SqlDbType.NVarChar, 20)
14.                .Parameters.AddWithValue("@g", txt6.Text)
15.                .Parameters.Add("@h", SqlDbType.Float)
16.                .Parameters.AddWithValue("@i", ty.Text)
17.                .Parameters.AddWithValue("@j", tz.Text)
18.            End With
19.            Try
20.                For i As Integer = 0 To DataGridView1.RowCount - 1
21.                    If Not DataGridView1.Rows(i).IsNewRow Then
22.                        ' Parameters ใดที่ไม่มีการแก้ไขข้อมูล ก็ไม่จำเป็นต้องใส่ใน For Loop
23.                        cm.Parameters("@c").Value = DataGridView1.Rows(i).Cells(0).Value
24.                        cm.Parameters("@d").Value = DataGridView1.Rows(i).Cells(1).Value
25.                        cm.Parameters("@e").Value = DataGridView1.Rows(i).Cells(2).Value
26.                        cm.Parameters("@f").Value = DataGridView1.Rows(i).Cells(3).Value
27.                        cm.Parameters("@h").Value = DataGridView1.Rows(i).Cells(4).Value
28.                        cm.ExecuteNonQuery()
29.                    End If
30.                Next
31.                tr.Commit()
32.                If MessageBox.Show("คุณต้องการบันทึกข้อมูลใช่หรือไม่?", "Database", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
33.                    MessageBox.Show("บันทึกข้อมูลเรียบร้อยเเล้ว", "Database", MessageBoxButtons.OK, MessageBoxIcon.Information)
34.                    DataGridView1.Rows.Clear()
35.                    DataGridView1.Hide()
36.                    lv.Show()
37.                    butsup.Enabled = False
38.                    butre.Enabled = False
39.                End If
40.            Catch ex As Exception
41.                tr.Rollback()               ' ถ้าจะใช้ SqlTransaction ก็ควรจะมี tr.Rollback() เพื่อให้ทำงานได้เต็มรูปแบบ
42.                MessageBox.Show(ex.Message)
43.            Finally
44.                tr.Dispose()
45.            End Try
46.        End Using
47.        butre.Enabled = True
48.        butadd.Enabled = True
49.        butprint.Enabled = True
50.        buts.Enabled = True
51.End Sub


ได้เเล้วครับ พี่ ขอบคุณมากครับ สุดยอดครับ ขอบคุณๆๆๆๆๆๆ มากๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-23 09:44:21 By : crazy-Ugly
 

 

No. 58



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

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

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

เห็นต่อเนื่องหลายวัน ก็เอาใจช่วยอยู่ครับ

Cheer !!
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-24 09:40:06 By : webmaster
 

 

No. 59



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



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


เพิ่งเห็นว่า Mr.Win บอกวิธีตั้งแต่ Post#2
ถ้าจขกท. เชื่อตั้งแต่ตอนแรก ก็เสร็จไปนานแล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-24 10:37:27 By : watcharop
 

 

No. 60

Guest


ขอบคุณครับ i Love ThaiCreate.Com
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-24 10:43:24 By : คุณศุภกร
 

 

No. 61



โพสกระทู้ ( 109 )
บทความ ( 0 )



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


ขอบคุณมากครับ

น้ำใจงามจิงๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-25 11:14:48 By : crazy-Ugly
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : บันทึกข้อมูลจาก Datagrid ลง DB กดบันทึกเเล้วขึ้น Debug ตรง .ExecutNoncury() คับ ช่วยที่คับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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