我将“注册系统”访问数据库添加到了“注册系统vb.net”表单中,作为数据源。数据库中有2个表,即accountTable和studentEnrollmentInformation。我将accountTable的详细信息和数据网格视图拖到了表单设计器中。以下代码自动出现在代码设计器中:
Private Sub AccountTableBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
Me.Validate()
Me.AccountTableBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.EnrollmentSystemDataBaseDataSet)
End Sub
Private Sub enrollmentSystem_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.AccountTableTableAdapter.Fill(Me.EnrollmentSystemDataBaseDataSet.accountTable)
End Sub
以下代码可用于更新accounTableDataGridView,但不适用于StudentEnrollmentInformationDataGridView,因此我手动创建了一个 用于StudentEnrollmentInformation。
Function updateStudent()
Me.Validate()
Me.StudentEnrollmentInformationBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.EnrollmentSystemDataBaseDataSet)
Me.StudentEnrollmentInformationTableAdapter.Fill(Me.EnrollmentSystemDataBaseDataSet.studentEnrollmentInformation)
End Function
这是包含更新代码的函数,我已手动创建了这些更新代码以更新studentEnrollmentDataGridView。添加新行效果很好,但是当我尝试更新studentEnrollmentDataGridView时,表中的文本消失,并且不会更新/保存。我还具有用于更新工作正常的accountTableDataGridView的功能。
Function update() 'THIS FUNCTION CONTAINS PRE-MADE CODE TO MAKE UPDATING SHORTER IN WRITING CODE.
Me.Validate()
Me.AccountTableBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.EnrollmentSystemDataBaseDataSet)
Me.AccountTableTableAdapter.Fill(Me.EnrollmentSystemDataBaseDataSet.accountTable)
End Function
我的问题是如何更新系统中的多个表?更新另一个表可以正常工作,但另一个则不能。
答案 0 :(得分:0)
在原始的自动生成的代码中,这是首先检索数据的行:
Private Sub enrollmentSystem_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.AccountTableTableAdapter.Fill(Me.EnrollmentSystemDataBaseDataSet.accountTable)
End Sub
在加载表单时,将帐户数据检索到已经绑定的DataTable
中。如果您也想检索学生入学数据,请在同一位置进行处理:
Private Sub enrollmentSystem_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.AccountTableTableAdapter.Fill(Me.EnrollmentSystemDataBaseDataSet.accountTable)
Me.StudentEnrollmentInformationTableAdapter.Fill(Me.EnrollmentSystemDataBaseDataSet.studentEnrollmentInformation)
End Sub
现在,您将在加载表单时填充两个绑定的DataTables
。在保存时,您可以执行相同的操作,即,将代码保存以将更改保存到另一个DataTable
,您已经在其中保存了第一个代码:
Private Sub AccountTableBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
Me.Validate()
Me.AccountTableBindingSource.EndEdit()
Me.StudentEnrollmentInformationBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.EnrollmentSystemDataBaseDataSet)
End Sub
您不需要任何代码来专门保存来自DataTable
的更改,因为UpdateAll
的全部意义在于它会更新DataTables
中的所有DataSet
。
和往常一样,如果它似乎无法按预期工作,则可以对其进行调试。在这种情况下,这意味着要在UpdateAll
行上设置一个断点,并在调用之前和之后检查DataSet
的确切状态,并可能还要检查数据库的状态。>