首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 数据集为空时,报错 [已结贴,结贴人:sniper_nie]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sniper_nie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-22 17:14:10 楼主
    我从数据库查出了一条我要的数据,然后我就点删除进行删除操作,因为数据集里只有这么一条数据,就提示错误“运行时错误’3021‘:BOF或EOF中有一个是“真”,或者是当前的记录已被删除,所需的操作要求一个当前的记录”
    程序代码如下:
    Private Sub CmdSelect_Click() '查询数据库,并让text显示第一条的值
    Call OpenConn
    sql = "select * from 日报数据 where 时间 = '" & Trim(DTPicker1.Value) & "'"
    rs.CursorLocation = adUseClient
    rs.Open sql, cn, adOpenKeyset, adLockPessimistic
    Set DataGrid1.DataSource = rs    '赋值给DAtagrid
    DataGrid1.Refresh
    If Not rs.EOF Then    <-----这块出错?
      Text1(0).Text = rs.Fields(0).Value
      Text1(1).Text = rs.Fields(1).Value
      Text1(2).Text = rs.Fields(2).Value
      Text1(3).Text = rs.Fields(3).Value
    end if

    Private Sub CmdDel_Click() '删除
    On Error Resume Next
    Dim answer As String
    answer = MsgBox("确定要删除吗?", vbYesNo, "")
    If answer = vbYes Then
      rs.Delete
      DataGrid1.Refresh
      MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
    End If
    End Sub
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-22 17:41:031楼 得分:40
    '******************
    '在此处增加的代码
    if rs.RecordCount>0 then
      rs.MoveFirst
    else
      '记录是空的,下面的就不要再执行了.
        Exit sub
    end if

    '*******************
    If Not rs.EOF Then    <-----这块出错?
      Text1(0).Text = rs.Fields(0).Value
      Text1(1).Text = rs.Fields(1).Value
      Text1(2).Text = rs.Fields(2).Value
      Text1(3).Text = rs.Fields(3).Value
    end if
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Leftie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 18:55:162楼 得分:30
    VB code
    '删除后重新打开记录集,用如下语句判断: If rs.recordcount>0 then '有记录集的操作 else '没有记录集的操作 end if
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • m60a1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 14:10:243楼 得分:20
    DataGrid1.Refresh
    if rs.recordcount <> 0 and rs.recordcount <> -1 then
          If Not rs.EOF Then    <-----这块出错?
              Text1(0).Text = rs.Fields(0).Value
              Text1(1).Text = rs.Fields(1).Value
              Text1(2).Text = rs.Fields(2).Value
              Text1(3).Text = rs.Fields(3).Value
          end if
    else
          msgbox "库中已无数据,请与管理员联系!"
    end if
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bing110
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 15:01:384楼 得分:10
    呵呵,我一般用If not rs.eof and not rs.bof then
    ……
    可以试一下。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sniper_nie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 22:29:055楼 得分:0
    引用 1 楼 fvflove 的回复:
    '******************
    '在此处增加的代码
    if rs.RecordCount>0 then
      rs.MoveFirst
    else
      '记录是空的,下面的就不要再执行了.
        Exit sub
    end if

    '*******************
    If Not rs.EOF Then    <-----这块出错?
      Text1(0).Text = rs.Fields(0).Value
      Text1(1).Text = rs.Fields(1).Value
      Text1(2).Text = rs.Fields(2).Value
      Text1(3).Text = rs.Fields(3).Value
    end if


    请问fvflove,按你的意思是应该写在查询模块里吧,但删除之后还是报相同的错误!
    在删除里写的话,rs.delete、datagrid1.refresh之后,也还是报错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sniper_nie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 22:39:526楼 得分:0
    引用 2 楼 Leftie 的回复:
    VB code'删除后重新打开记录集,用如下语句判断:
    If rs.recordcount>0 then
        '有记录集的操作
    else
        '没有记录集的操作
    end if



    我觉得我说的已经够清楚了吧,明明是只有一条数据的,删除之后肯定就没有了。。。
    恕我反应迟钝,麻烦你能不能再写清楚点?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sniper_nie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 23:24:077楼 得分:0
    自己解决了,谢谢各位
    Private Sub CmdDel_Click() '删除
    On Error Resume Next

    Dim answer As String
    answer = MsgBox("确定要删除吗?", vbYesNo, "")
    If answer = vbYes Then
    MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
      DataGrid1.AllowDelete = True
      rs.Delete
      DataGrid1.Refresh
      If rs.RecordCount = 0 Then
      For j = 0 To 20
      Text1(j).Text = ""
      Text1(j).Locked = True
      Text1(j).BackColor = &H8000000F
      Next j
      End If
      DataGrid1.AllowDelete = False
      CmdDel.Enabled = False
      Else
      Exit Sub
      CmdDel.Enabled = False
      End If
    'End If
    End Sub
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved