如何使用datagrid将sms发送到特定列中一行中的每个值。 VB6

时间:2017-06-21 10:34:51

标签: vb6

我是Vb6的新手。我只想知道如何使用我的短信代码发送特定列中行中的所有数字。在此代码中,我收到的消息超出了我想要接收的消息。请帮我修复循环方法。

Dim x As String
Dim e As Integer
Dim allcontacts As String

For i = 0 To DataGrid1.VisibleRows
    For e = 0 To DataGrid1.ApproxCount - 1

    allcontacts = DataGrid1.Columns(5).CellValue(DataGrid1.GetBookmark(e))


    ' Send an 'AT' command to the phone
    MSComm1.Output = "AT" & vbCrLf
    Sleep 500
    MSComm1.Output = "AT+CMGF=1" & vbCrLf     'This line can be removed if your modem will always be in Text Mode...
    Sleep 500
    MSComm1.Output = "AT+CMGS=" & Chr(34) & allcontacts & Chr(34) & vbCrLf   'Replace this with your mobile Phone's No.
    Sleep 1000
    MSComm1.Output = "From School Activities Management System: " & vbCrLf & vbCrLf & "The time now is " & Label3.Caption & vbCrLf & vbCrLf & "Announcement:" & vbCrLf & Text1.Text & Chr(26)
    Sleep 2000


    Next e
Next i

x = DataGrid1.VisibleRows
MsgBox "Message Sent to " + x + " contacts in faculty."
End Sub

这是数据网格的屏幕截图: filled Datagrid screenshot

1 个答案:

答案 0 :(得分:0)

根据您的屏幕截图,您似乎希望每行发送1个短信。因此,我会尝试以下代码:

   Dim i As Integer
   Dim allcontacts As String

   For i = 0 To DataGrid1.VisibleRows - 1
      allcontacts = DataGrid1.Columns(5).CellValue(DataGrid1.GetBookmark(i))

      ' Send an 'AT' command to the phone
      MSComm1.Output = "AT" & vbCrLf
      Sleep 500
      MSComm1.Output = "AT+CMGF=1" & vbCrLf     'This line can be removed if your modem will always be in Text Mode...
      Sleep 500
      MSComm1.Output = "AT+CMGS=" & Chr(34) & allcontacts & Chr(34) & vbCrLf   'Replace this with your mobile Phone's No.
      Sleep 1000
      MSComm1.Output = "From School Activities Management System: " & vbCrLf & vbCrLf & "The time now is " & Label3.Caption & vbCrLf & vbCrLf & "Announcement:" & vbCrLf & Text1.Text & Chr(26)
      Sleep 2000
   Next i

   MsgBox "Message Sent to " & DataGrid1.VisibleRows & " contacts in faculty."

要记住的一件事是,只会为屏幕上可见的行发送消息。如果它们从屏幕上滚动而无法看到,则不会发送任何消息。