2015-10-29 90 views
-1

我有这段代码,我希望这个循环为每一行迭代。但是,如果if条件为false,则此代码不会迭代。
我在其他部分尝试过“继续”,但它没有奏效。即使如果我将msgbox放入其他部分并在每次显示时单击msg框,循环都会继续。但它不实用,因为我有1000行要检查。For循环If条件 - 当条件不满足时迭代

Public Function SMS() 
    CustomerTableAdapter.Fill(MyHotelManagementSystemDataSet63.Customer) 
    For i = 0 To MyHotelManagementSystemDataSet63.Customer.Rows.Count - 1 
     If MyHotelManagementSystemDataSet63.Customer(i).DOB.Day = Date.Now.Day AndAlso _ 
      MyHotelManagementSystemDataSet63.Customer(i).DOB.Date.Month = Date.Now.Month Then 
      Dim SerialPort As New System.IO.Ports.SerialPort() 
      If SerialPort.IsOpen Then 
       SerialPort.Close() 
      End If 
      SerialPort.PortName = "COM29" 
      SerialPort.BaudRate = 9600 
      SerialPort.Parity = Parity.None 
      SerialPort.StopBits = StopBits.One 
      SerialPort.DataBits = 8 
      SerialPort.Handshake = Handshake.RequestToSend 
      SerialPort.DtrEnable = True 
      SerialPort.RtsEnable = True 
      SerialPort.NewLine = vbCrLf 
      Dim message As String 
      Dim nm = MyHotelManagementSystemDataSet63.Customer(i).Name 
      Dim tp = MyHotelManagementSystemDataSet63.Customer(i).Telephone 
      message = "Dear " + nm + " ***)" 
      SerialPort.Open() 
      If SerialPort.IsOpen() Then 
       SerialPort.Write("AT" & vbCrLf) 
       SerialPort.Write("AT+CMGF=1" & vbCrLf) 
       SerialPort.Write("AT+CMGS=" & Chr(34) & tp & Chr(34) & vbCrLf) 
       SerialPort.Write(message & Chr(26)) 
       SerialPort.Close() 
      Else 
       MsgBox("Port not available") 
      End If 
     Else 

     End If 
    Next 
    Return True 
End Function 

Pleaes帮我做这个for循环继续,不需要任何用户交互。

+2

您的问题不清楚。你说“不要交际”是什么意思?为什么? – DarkKnight

+0

实际上,如果'i> = 2',循环会自动持续。你不需要明确地调用“继续”。 –

+0

循环从'0到CustomerDataSet.customer.Rows.count - 1'进行迭代,但是因为你的'If'只有'0'和'1''Do somethin''的值。 – Enigmativity

回答

0

你检查,如果Rows.Count设置,而不是0

如果情况并非如此

For i = 0 To CustomerDataSet.customer.Rows.count - 1 
    if i < 2 Then 
    'Do something 
    Else 
    Continue For 
    End If 
Next 
+0

Veenman行数没有设置,正如我前面提到的,如果我在其他部分中设置了一个msg框并在每次出现时单击它,循环将继续。但我想要的是在其他部分有直接执行到下一行的内容,对于其他部分应该有什么?请帮忙 – A1990

+0

@ A1990编辑:只要代码进入Else块,它将进入For循环的下一个迭代(例如,如果I = 2,它将进入第4次迭代(然后我= 3))我认为这是你正在寻找的 – DieVeenman

+1

执行将继续到下一行没有在else语句中的任何代码 – Fabio

0

使用Exit For如果你不想条件后返回迭代行false

For i = 0 To CustomerDataSet.customer.Rows.count - 1 
    If condition = false Then Exit For 
    'Do something for rows which condition = true 
Next 

使用Continue For如果你想迭代到下一行不执行你的DoSomething代码

For i = 0 To CustomerDataSet.customer.Rows.count - 1 
    If condition = false Then Continue For 
    'Do something for rows which condition = true 
Next