Private Sub cmdOK_Click()
  If IsNumeric(Txt1) = False Or IsNumeric(Txt2) = False Or IsNumeric(Txt3) = False Then
    MsgBox "请输入数值型数据!"
    Exit Sub
  End If
  If blnAddBX = True Then
    With main_rsgl_bxgl
      rs.Open "select * from 员工福利表", cnn, adOpenKeyset, adLockOptimistic
      For i = 0 To .lstEmployee.ListCount - 1
        If .lstEmployee.Selected(i) = True Then
          rs.AddNew
          rs.Fields("员工编号") = Left(.lstEmployee.List(i), 5)
          rs.Fields("员工姓名") = Mid(.lstEmployee.List(i), 6, Len(.lstEmployee.List(i)))
          rs.Fields("养老保险") = Txt1.Text
          rs.Fields("失业保险") = Txt2.Text
          rs.Fields("医疗保险") = Txt3.Text
          rs.Fields("所属月份") = Str(Year(DTPicker1.Value)) & "-" & Format(Month(DTPicker1.Value), "00")
          rs.Update
        End If
      Next i
      rs.Close
      .Adodc1.Refresh
    End With
  Else
    With main_rsgl_bxgl
       rs.Open "select * from 员工福利表 where 员工编号='" + .Adodc1.Recordset.Fields("员工编号") + "'", cnn, adOpenKeyset, adLockOptimistic
       If rs.RecordCount > 0 Then
         rs.Fields("养老保险") = Txt1.Text
         rs.Fields("失业保险") = Txt2.Text
         rs.Fields("医疗保险") = Txt3.Text
         rs.Fields("所属月份") = Str(Year(DTPicker1.Value)) & "-" & Format(Month(DTPicker1.Value), "00")
         rs.Update
         rs.Close
       End If
      .Adodc1.Refresh
    End With
  End If
  Unload Me
End Sub3021的提示
EOF或BOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

解决方案 »

  1.   

    .Adodc1.Recordset.Fields("员工编号") 里没有记录集吗,要在每次用到他是判断下是否存在值
        With main_rsgl_bxgl 
         if not .Adodc1.Recordset.eof And not .Adodc1.Recordset.Bof  then
          rs.Open "select * from 员工福利表 where 员工编号='" + .Adodc1.Recordset.Fields("员工编号") + "'", cnn, adOpenKeyset, adLockOptimistic 
          If rs.RecordCount > 0 Then 
            rs.Fields("养老保险") = Txt1.Text 
            rs.Fields("失业保险") = Txt2.Text 
            rs.Fields("医疗保险") = Txt3.Text 
            rs.Fields("所属月份") = Str(Year(DTPicker1.Value)) & "-" & Format(Month(DTPicker1.Value), "00") 
            rs.Update 
            rs.Close 
          End If 
          .Adodc1.Refresh 
         end if
        End With 
      End If