 |
|
รันแล้วมันฟ้องว่า "Update requires a valid DeleteCommand when passed DataRow collection with deleted rows." ที่btnSave ครับ ช่วยผมที T.T ต้องทำโปรเจคส่ง อ. |
|
 |
|
|
 |
 |
|
เอา Code ส่วนอื่นมาดูด้วยครับ
|
 |
 |
 |
 |
Date :
2012-09-19 10:45:51 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Public Class Form3
Private Sub btnAddImg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddImg.Click
Me.OpenFileDialog1.FileName = Nothing
Me.OpenFileDialog1.ShowDialog()
If Not Me.OpenFileDialog1.FileName = Nothing Then
Me.PictureBox1.ImageLocation = Me.OpenFileDialog1.FileName
End If
End Sub
Private Sub ทะเบียนรับBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Validate()
Me.ทะเบียนรับBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.ฐานข้อมูลโปรแกรมจริงDataSet)
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'ฐานข้อมูลโปรแกรมจริงDataSet.ทะเบียนรับ' table. You can move, or remove it, as needed.
Me.ทะเบียนรับTableAdapter.Fill(Me.ฐานข้อมูลโปรแกรมจริงDataSet.ทะเบียนรับ)
End Sub
Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click
ทะเบียนรับBindingSource.MovePrevious()
End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
ทะเบียนรับBindingSource.MoveNext()
End Sub
Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click
ทะเบียนรับBindingSource.AddNew()
End Sub
Private Sub btnSaveEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveEdit.Click
Me.ValidateChildren()
Me.ทะเบียนรับBindingSource.EndEdit()
Me.ทะเบียนรับTableAdapter.Update(ฐานข้อมูลโปรแกรมจริงDataSet.ทะเบียนรับ)
End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
ทะเบียนรับBindingSource.RemoveCurrent()
End Sub
End Class

|
 |
 |
 |
 |
Date :
2012-09-19 12:32:55 |
By :
silzacx |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็นเหมือนกันแก้ไงครับ
|
 |
 |
 |
 |
Date :
2017-03-02 16:01:57 |
By :
เจม |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือขอแนะนะก่อนเลยนะครับ ให้ทำการปรับแก้โค้ดก่อนได้ไหม เช่น
1.การกำหนดชื่อ Control ต่างๆ
2.การกำหนดชื่อ Object ต่างๆ
3.การทำหนดชื่อฐานข้อมูล table กับ field
อื่นๆอีก ควรจะเป็นภาษา Eng ให้หมด (อันนี้ไม่ได้มีใครกำหนดหรอกแต่เราต้องเขาใจว่า ภาษาบ้านเราบางที่โปรแกรมมันไม่รู้จักมั้ง) รันผ่านได้ก็ดีไป
และถ้ากลัวจำไม่ได้ให้ไปเขียนใส่ Excel ว่าเทเบิลนี้ประกอบไปด้วย field อะไรประเภทตัวหนึ่งสือหรือตัวเลข ขนาด
และควรจะใช้การเขียน comment แทนการกำหนดแบบนี้
"ทะเบียนรับBindingSource" = RegistersBindingSource ก็ยังดี
"Me.ฐานข้อมูลโปรแกรมจริงDataSet)" = SampleDB_Dataset ก็ยังได้
'ปุ๋ม Save ทะเบียนรับ XXX
Private Sub ทะเบียนรับBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Validate()
Me.ทะเบียนรับBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.ฐานข้อมูลโปรแกรมจริงDataSet)
End Sub
มันอาจฟังดูคัดใจคนที่เริ่มเขียนว่า เขียนอย่างนี้ก็รันผ่านแต่ผมอยากให้มันดูดีมีระเบียบ
อาจารย์ก็คงเหมือนกัน(ถ้าไม่ได้สอน ก็ควรแนะนำการเขียน)
มันอาจจะไม่ได้มีการกำหนดตายตัว แต่เราต้องศึกษาภาษาให้มากขึ้นถ้ารักการเขียนโปรแกรม
เท่านี้ละ
|
 |
 |
 |
 |
Date :
2017-03-02 17:04:55 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าใช้ datasource wizard ถ้าเราลองลาก data ลงมาในฟอร์ม มันก็จะมี โค้ดสำหรับ Save มาให้เราอยู่แล้วครับ
ใช้ตัวนั้นเป็นไกด์ได้

Code (VB.NET)
Private Sub ALS_F_201BindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles ALS_F_201BindingNavigatorSaveItem.Click
Me.Validate()
Me.ALS_F_201BindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DATA_ALSDataSet)
End Sub
ถ้าหากอยากเพิ่ม หรือไม่มี โค้ดตามที่บอกก็เพียงแค่ เพิ่มโค้ดนี้ใน
Code (VB.NET)
Me.Validate()
Me.ชื่อBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.ชื่อDataSet)
และหากต้องการใช้กับ หลายๆ BindingSource ก็เขียนแบบนี้
Code (VB.NET)
Me.Validate()
Me.ชื่อBindingSource1.EndEdit()
Me.ชื่อBindingSource2.EndEdit()
Me.ชื่อBindingSource3.EndEdit()
Me.ชื่อBindingSource4.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.ชื่อDataSet)
'หากยังอยู่หน้าเดิมอยู่ก็แนะนำให้ เพิ่ม fill ไปด้วย แบบนี้
Me.ชื่อTableAdapter1.Fill(Me.ชื่อDataSet.ชื่อTeable1)
Me.ชื่อTableAdapter2.Fill(Me.ชื่อDataSet.ชื่อTeable2)
Me.ชื่อTableAdapter3.Fill(Me.ชื่อDataSet.ชื่อTeable3)
Me.ชื่อTableAdapter4.Fill(Me.ชื่อDataSet.ชื่อTeable4)
|
 |
 |
 |
 |
Date :
2017-03-02 18:44:13 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|