2014-01-09 71 views
1

我有一个数据适配器,包含数据集中的4个表。当我将新记录更新到表中时,它出现在SQL数据库中,并且关联的datagridivew已被重新加载到表中,但是当我尝试使用以下代码读取新记录时,它无法找到记录。无法从表中读取新记录

Dim row As DataRow = dsSrvAV.Tables("ServiceAvailability").Select("ID = " & intRecordID).FirstOrDefault() 

相同的代码用于读取应用程序打开时数据库中的其他记录,它只是它无法读取的新记录。

这是写入新的记录

Dim newAvailability As DataRow = dsSrvAV.Tables("ServiceAvailability").NewRow() 

'Add some data to it 
newAvailability("Service_ID") = cboServices.SelectedValue 
newAvailability("Date") = Format(dtpDate.Value.ToString, "Short Date") 
newAvailability("Downtime") = nudDowntime.Value 
newAvailability("Notes") = txtNotes.Text 
newAvailability("MajorIncident") = txtMajorIncident.Text 
newAvailability("ActionsTaken") = txtActionsTaken.Text 
newAvailability("Type") = cboType.SelectedValue 
newAvailability("Root_Cause") = txtRootCause.Text 

'Add it to the table 
dsSrvAV.Tables("ServiceAvailability").Rows.Add(newAvailability) 

'Update the adapter 
daSrvAv.Update(dsSrvAV, "ServiceAvailability") 
dsSrvAV.Tables("ServiceAvailability").AcceptChanges() 

任何人都可以提供任何想法,为什么这不会允许新的记录回读的代码。

感谢 丰富

+0

你从哪里得到intRecordId?你确定它的正确价值吗? ID列是int吗? – robnick

+0

intRecord从datagridview中从数据库中的pkey值中获取。它适用于数据库中存在的所有其他记录,只是新添加了它找不到的记录。 –

+0

'dsSrvAV'在两个地方都明确指向相同的'DataSet'对象? –

回答

0

每评论 - 这解决了这个问题。

关闭您的dsSrvAv数据集,然后重新打开它,然后执行选择。

关键绩效:你是否每秒增加1,000,000条记录。如果它是1,000,000,那么是有开销。如果它的每秒1没有任何明显的开销。