2017-01-04 151 views
0

此代碼記錄在ArrayList中插入ID和而循環播放時按下按鈕,它應該爲這個數組循環,並從陣列中的每個ID的數據,並把它放在DataTable,並添加新數據到數據表並最終在datagridview中顯示它。 在當我插入一條記錄,它工作正常,但是當我插入一個以上在DataGridView顯示剛剛過去的一個錯誤是什麼我做了,結果問題?!將數據添加到數據表

在MainForm的

Public Inserted_record_hold_dt As New DataTable 
Public Inserted_record_dt As New DataTable 
Public Sub Addcolumnstodatagrid() 
    Inserted_record_dt.Columns.Add("ID") 
    Inserted_record_dt.Columns(0).AutoIncrement = True 

    Inserted_record_dt.Columns.Add("drawingname") 
    Inserted_record_dt.Columns.Add("serial") 

End Sub 

和main_Load

Addcolumnstodatagrid() 

在節目按鈕調用這個這時候點擊循環數組列表已經有已添加

最新的ID對
Private Sub show_btn_Click(sender As System.Object, e As System.EventArgs) Handles show_btn.Click 
    Dim InsertedID As Integer 
    Inserted_record_dt.Clear() 
    Dim R As DataRow = Inserted_record_dt.NewRow 

    'Loop For each ID in the array "Inserted_List_Array" 
    For Each InsertedID In mainadd.Inserted_List_Array 
     'MsgBox(InsertedID.ToString) 
     Dim cmd As New SqlCommand("select drawingname , serial from main where drawingid = '" & InsertedID & "'", DBConnection) 
     DBConnection.Open() 
     Inserted_record_hold_dt.Load(cmd.ExecuteReader) 
     Try 

      R("drawingname") = Inserted_record_hold_dt.Rows(0).Item(0) 
      R("serial") = Inserted_record_hold_dt.Rows(0).Item(1) 
      Inserted_record_dt.Rows.Add(R) 

     Catch 
     End Try 
     'MsgBox("added") 
     DBConnection.Close() 
     cmd = Nothing 
     Inserted_record_hold_dt.Clear() 
    Next 
    sendmail.Show() 
    sendmail.Mail_DGView.DataSource = Inserted_record_dt 
End Sub 

請告訴我在我的代碼中有什麼問題。

回答

1

你錯就錯在聲明R參數外循環只是一個時間。通過這種方式,您可以連續替換DataRow的同一實例上的值,並始終插入相同的實例。

只需推動循環

For Each InsertedID In mainadd.Inserted_List_Array 
    ...... 
    Try 
     Dim R As DataRow = Inserted_record_dt.NewRow 
     R("drawingname") = Inserted_record_hold_dt.Rows(0).Item(0) 
     R("serial") = Inserted_record_hold_dt.Rows(0).Item(1) 
     Inserted_record_dt.Rows.Add(R) 

    Catch 
    .... 
Next 

做另一個重要的事情裏面的聲明是去除空try/catch語句,因爲你只是殺死異常(沒有消息,沒有日誌),因此你永遠不會知道這個導入是否有錯誤。最後,您將發佈可能會給最終用戶帶來不正確結果的產品。

+0

我做了什麼,你告訴我這樣做,它的作品,但在DataGridView中ID的計數工作不正確的,當我插入一條記錄的ID開始與0,當我插入另一張記錄ID爲1的開始第一記錄和第二爲2,如果我插入另一記錄的ID與2開始和記錄變爲2和第三變爲4 –

+0

可以選擇在哪裏啓動計數器用於與_Inserted_record_dt.Columns ID(0)= .AutoIncrementSeed 1_當你定義數據表時 – Steve