Office中国论坛/Access中国论坛

标题: 请教:VBA出现"运行时错误3021" [打印本页]

作者: huangchao1980    时间: 2008-7-1 14:29
标题: 请教:VBA出现"运行时错误3021"
各位大侠小妹请教下, 单击窗体中的"JudgeVIP", 最后出现"运行时错误3021,当前无此记录"

[attach]30822[/attach]

Private Sub JudgeVIPStatus_click()
       Dim rst As DAO.Recordset
       Dim Intltdd As String
       Dim IntNowdd As String
       Dim dd As String
      
      dd = "1" & Right(Format(Date, "yyyymmdd"), 6)
      IntNowdd = dd
      
       Set rst = CurrentDb.OpenRecordset("select * from vipstatus")
      
      
      rst.MoveFirst
      Intltdd = rst![k2icdt]

       Do While (Not rst.EOF)
               
        
          If Intltdd < IntNowdd Then
          MsgBox Intltdd & dd & " " & IntNowdd & " " & Date & " " & Right(Format(Date, "yyyymmdd"), 6)
       'DoCmd.RunSQL "update vipstatus set k2rgco='normal'"
      

     '程序运行此处,用一个EDIT [attach]30822[/attach],日期小于当前日期的将状态更新为  "NORMAL",  这个语句怎么写? 这个SQL语句是错误的,不用了.

          Else
          MsgBox Intltdd
          Debug.Print Intltdd
          End If
         
           rst.MoveNext
          Intltdd = rst![k2icdt]
         
      Loop
     
        rst.Close

End Sub

[ 本帖最后由 huangchao1980 于 2008-7-1 16:34 编辑 ]
作者: kangking    时间: 2008-7-1 14:43
rst.MoveNext
          Intltdd = rst![k2icdt]
你将记录集中的记录移动到下一记录,然后从记录集中读取数据,但是,这时你可能已经移动到最后一条记录的后面了,再读数据时就会出错。所以,在 rst.MoveNext 后你应该看一下 eof()是否为真,如果是就是在记录集的尾了。
     rst.MoveNext
          if rst.eof then
           '在这里处理已经到记录集尾的情况
     end if
          Intltdd = rst![k2icdt]
作者: huangchao1980    时间: 2008-7-1 15:36
谢谢了!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3