2016-11-06 85 views
1

我有這個循環,每次條件爲真時都會彈出一個消息框。僅在循環中顯示消息框一次vb.net

For i = 0 To DataGridView1.Rows.Count - 1 
     Dim c As Boolean 
     c = DataGridView1.Rows(i).Cells(0).Value 
     If c = True Then 
      cmd3.Connection = con 
      con.Open() 

      cmd3.CommandText = "insert into student select * from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "' delete from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "'" 
      dr3 = cmd3.ExecuteReader() 
      MessageBox.Show("Account approved.") 
      con.Close() 
     Else 

     End If 
    Next 

該消息框顯示的次數與選中的行數一樣多。我只想展示一次。我將郵箱重新定位到任何地方,但它不起作用。我搜查了但沒有拿出答案。 我試圖將它移到循環外,但問題是,即使條件爲假,消息框仍然顯示。

謝謝!

+0

將它移到循環之外?也許根據至少添加一條記錄的標誌進行射擊。 – Plutonix

+0

我試圖把它移到循環之外,問題是,消息框甚至顯示條件是錯誤的 – ABCDE

+0

*基於至少添加了一條記錄的標誌,引發火災* – Plutonix

回答

1

一種方法是創建一個成功批准的計數器和另一個不成功批准的計數器,並在完成循環後顯示這些計數器。計數器在循環中遞增,具體取決於每次迭代中布爾值c的結果。

Dim iSuccessCount As Integer 
Dim iFailedCount As Integer 

For i = 0 To DataGridView1.Rows.Count - 1 
    Dim c As Boolean 
    c = DataGridView1.Rows(i).Cells(0).Value 

    If c = True Then 
     iSuccessCount +=1 
     cmd3.Connection = con 
     con.Open() 

     cmd3.CommandText = "insert into student select * from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "' delete from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "'" 
     dr3 = cmd3.ExecuteReader() 
     con.Close() 
    Else 
     iFailedCount += 1 
    End If 
Next 

Dim sb As New StringBuilder 

sb.Append(iSuccessCount.ToString) 
sb.Append(If(iSuccessCount = 1, " account was ", " accounts were ")) 
sb.Append("approved.") 
sb.Append(Environment.NewLine) 
sb.Append(iFailedCount.ToString) 
sb.Append(If(iFailedCount = 1, " account was ", " accounts were ")) 
sb.Append("not approved.") 

MessageBox.Show(sb.ToString) 
相關問題