SQL = "select * from sms where status=0"    rs.Open SQL, conn, 3, 3
    
Do While Not rs.EOF And Not rs.BOF    If SmsControl.SendMsg(rs("to_number"), rs("content")) = 0 Then    rs("status") = 1
    rs("finish_time") = Now()
    rs.Update
    rs.MoveNext
    i = i + 1    Else    rs("status") = 2
    rs("finish_time") = Now()
    rs.Update
    rs.MoveNext
    j = j + 1    End If
loopSmsControl.SendMsg是一个发短信控件的短信发送的方法,返回值为0表示一条短信发送成功。上面代码的意思就是发送成功了,就在数据库把该条短信的标志置为1,失败刚为2。现在的问题是,连发5条短信,如果用上述代码,就会有几条发送失败,而且有规律,成功的和失败是隔着来的。
如果去掉else和end if之间的代码,5条短信就都能发送成功。这算不算怪问题,请高人们给指点指点。

解决方案 »

  1.   


    Do While Not rs.EOF
       ...........
    loop
      

  2.   

    是不是SmsControl.SendMsg发送信息有时间的要求,你增加一个延时的函数试试
      

  3.   

    zzyong00(阿勇)最后确实最增加了延时弄好的,现在感觉好不踏实啊。clear_zero(clear_zero) 是否是这个意思:SQL = "select * from sms where status=0"    rs.Open SQL, conn, 3, 3
        
    Do While Not rs.EOF And Not rs.BOF    If SmsControl.SendMsg(rs("to_number"), rs("content")) = 0 Then    i = i + 1
        rs("status") = 1    Else    j = j + 1
        rs("status") = 2    End If    rs("finish_time") = Now()
        rs.Update
        rs.MoveNext
    loop