2016-09-04 1 views
1

У меня есть DataTable, который был загружен с запросом SqlDataReader. После того, как загружен мой DataTable, я делаю цикл, что я вставлял данные с индексом SqlCommand. Но DataTable не обновляется. Как обновить DataTable, пока данные обновляются в базе данных?Как обновить datatable после обновленного значения с помощью инструкции SqlCommand?

connectionx() 
     Dim dtreader As SqlDataReader 
     Dim cmddt As New SqlCommand("SELECT * from sometable", con) 

     dtreader = cmddt.ExecuteReader() 

     Dim dt As New System.Data.DataTable() 
     dt.Load(dtreader) 'Here from datareader 


     For index As Integer = currentRow To dt.Rows.Count - 1 
      Dim drR As DataRow = dt.NewRow() 
      Dim reader1 As SqlDataReader 

      Dim EP As DateTime 
      Dim EndW As String = dtnow.ToString("MM/dd/yyyy HH:mm") 
      Dim setEndWaiting As Integer = Convert.ToInt32(adapterSch.SetEndWTime(EndW, Convert.ToInt32(Session("ShipLoadingOrderFK")))) 


       Dim startPre As DateTime = EndW 
       Dim endPre As DateTime = startPre + TimeSpan.Parse(defPre) 
       Dim setPreDocumentTime As Integer = Convert.ToInt32(adapterSch.SetPreDocumentTime(startPre, endPre, Convert.ToInt32(Session("ShipLoadingOrderFK")))) 

       Dim startPump As DateTime = endPre 
       Dim endPump As DateTime 
       Dim shipKey As String = Shipid.SelectedValue 
       pumpigResult(MinutePumpResult, HoursPumpResult, FlowrateValue, Shipid.SelectedValue, Loading_No.Value, typeLoading.SelectedValue) 
       If FlowrateValue = 0 Or FlowrateValue = "" Then 
        endPump = endPre + TimeSpan.Parse(defPumping) 
       Else 
        endPump = endPre + New TimeSpan(HoursPumpResult, MinutePumpResult, 0) 
       End If 
       Dim setPumpTime As Integer = Convert.ToInt32(adapterSch.SetPumpingTime(startPump, endPump, Convert.ToInt32(Session("ShipLoadingOrderFK")))) 

       Dim startPost As DateTime = endPump 
       Dim endPost As DateTime = endPump + TimeSpan.Parse(defPost) 
       Dim setPostTime As Integer = Convert.ToInt32(adapterSch.SetPostTime(startPost, endPost, Convert.ToInt32(Session("ShipLoadingOrderFK")))) 

После ввода данных в каждый индекс с кодом выше. Я получил значение в предыдущей строке (индекс-1), но перед обновлением OLD Data перед обновлением.

Dim EP as datetime = Convert.ToDateTime(dt.Rows(index - 1)("PostDocEnd").ToString()) 

Как обновить DataTable так, что я могу получить предыдущие данные, которые были обновлены? Я снова попытаюсь перезагрузить DataTable, но это ничего.

Спасибо

+0

Событие, хотя там много кода, вы на самом деле не делаете ничего связанного с описанной проблемой. Нет вставки, нет «обновления». Я не вижу смысла этого цикла или созданной новой строки. – Plutonix

+0

Почему вы запускаете цикл с currentRow и устанавливаете начальное значение. Я не вижу оператор Next for For. Кажется, что код не является полным. Вы создаете новую строку drR и не инициализировали внутри цикла. Просмотрите свой код и заполните его, чтобы мы могли помочь обнаружить проблему. –

ответ

0

Решено! Я просто код строки для перезагрузки datareader при запуске индексации цикла и обновления данных.

dt.reset() 
    dtreader = cmddt.ExecuteReader() 
    Dim dt As New System.Data.DataTable() 
    dt.Load(dtreader) 

Он будет перезагружать данные при изменении базы данных.

Смежные вопросы