2016-09-04 15 views
1

SqlDataReaderクエリがロードされたDataTableがあります。私のDataTableがロードされた後、私はすべてのインデックスSqlCommandでデータを挿入したことを繰り返す。ただし、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")))) 

上記のコードですべてのインデックスを挿入した後に、データを挿入した後。前の行(index-1)の値を取得しましたが、の前に旧データが取得されています。私は更新された以前のデータを得ることができるようにDataTableをリフレッシュする方法

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

?私は再度DataTableを再ロードしようとしましたが、何もありません。

ありがとうございます

+0

イベントにはたくさんのコードがありますが、説明した問題に関連するものは実際には何も表示しません。挿入されず、「リフレッシュ」もありません。私はそのループのポイントまたは新しい行が作成されて表示されません – Plutonix

+0

なぜあなたは、currentRowでループを開始し、どこで初期値を設定します。 ForステートメントのNextは表示されません。コードが完成していないようです。新しい行drRを作成し、ループ内で初期化されません。コードを確認して完了すると、問題の発見に役立ちます。 –

答えて

0

解決済み! インデックスのループを開始してデータテーブルをリロードし、データテーブルをリフレッシュするためのコードを書くだけです。

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

データベースが変更されている間、データテーブルをリロードします。

関連する問題