扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:陶刚编译 来源:yesky 2007年11月9日
关键字:
Try daCustomer.Update(dsAllData.Tables("Customer")) Catch dbcEx As Data.DBConcurrencyException Dim dResult As DialogResult dResult = MessageBox.Show(messageString, _ "Data Concurrency Exception Occurred", _ MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error, _ MessageBoxDefaultButton.Button1, _ MessageBoxOptions.DefaultDesktopOnly) If dResult = DialogResult.Yes Then '两个选择:填充整个表或者刷新该行 'daCustomer.Fill(dsAllData.Tables("Customer")) UpdateRow("Customer", dbcEx.Row.Item("ID")) ElseIf dResult = DialogResult.No Then '保存新行的拷贝 Dim drCopy As DataRow, drCurrent As DataRow drCopy = dsAllData.Tables("Customer").NewRow() Dim dc As DataColumn drCurrent = _ dsAllData.Tables("Customer").Rows.Find(dbcEx.Row.Item("ID")) For Each dc In drCurrent.Table.Columns If dc.ReadOnly = False Then _ drCopy.Item(dc.ColumnName) = drCurrent.Item(dc.ColumnName) Next '从数据库中获取当前值 UpdateRow("Customer", dbcEx.Row.Item("ID")) '现在恢复用户输入的值并再次保存 For Each dc In drCurrent.Table.Columns If dc.ReadOnly = False Then _ drCurrent.Item(dc.ColumnName) = drCopy.Item(dc.ColumnName) Next daCustomer.Update(dsAllData.Tables("Customer")) End If End Try |
Private Sub UpdateRow(ByVal TableName As String, ByVal ID As Integer) '获取到特定行的引用 Dim dr As DataRow = dsAllData.Tables(TableName).Rows.Find(ID) '建立命令更新获取新的下层数据 Dim cmd As New SqlClient.SqlCommand("SELECT * FROM " & TableName & _ " WHERE ID=" & ID.ToString(), connCustSvc) '打开连接并建立数据读取器(DataReader) connCustSvc.Open() Dim rdr As SqlClient.SqlDataReader = cmd.ExecuteReader() rdr.Read() '将新数据从数据库复制到数据行 Dim dc As DataColumn For Each dc In dr.Table.Columns If dc.ReadOnly = False Then _ dr.Item(dc.ColumnName) = rdr.Item(dc.ColumnName) Next '接受数据行中的改变 dr.AcceptChanges() connCustSvc.Close() End Sub |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者