×

错误 BOF或EOF中有一个是真,或者但前的记录已被删除

hqy hqy 发表于2023-03-06 16:59:52 浏览161 评论0

抢沙发发表评论

在做一个采购系统的采购但时
我想通过产品的名称查询显示产品的信息
Private Sub Combo1_LostFocus()
    Set rs5 = conn.Execute("select 产地,规格,包装,单位 from product where 商品名称=' " & Trim(Combo1.Text) & " '")
        With rs5
        .MoveFirst
        Do While Not .EOF
            DoEvents
            Text6.Text = !规格
            Text9.Text = !包装
            Text7.Text = !单位
            Text10.Text = !产地
            .MoveNext
        Loop
    End With         
End Sub

运行的时候出错,BOF或EOF中有一个是真,或者但前的记录已被删除
我想知道怎么才能让记录不为空
--------------------编程问答-------------------- 之前判断一下,是否有记录
.MoveFirst
--------------------编程问答-------------------- 判断是没有记录的
但是我就是不知道为什么会没有记录
我的查询语句没有错误的啊 --------------------编程问答-------------------- 哈哈,这个问题我这段时间一直在研究,并刚刚获得结果,给分不? --------------------编程问答-------------------- 哎,数据库为空就会出错!空时不要MOVE来MOVE去的!







----------------------------------------------------
人事考勤工资系统88元!9天自助建站系统8元!VB项目毕业设计参考20元!阳光软件网:
http://www.sun883.com --------------------编程问答-------------------- 用rs.open sql, conn ,1,1试试看 --------------------编程问答-------------------- 问题1 :

Ifconn.Execute("select 产地,规格,包装,单位 from product where 商品名称=' " & Trim(Combo1.Text) & " '") .EOF <> True Or .BOF <> True Then
产地,规格,包装,单位中肯定有一项不符合商品名称条件去除掉
问题2 :
未做判断,如果有提示错误代码关掉
If .EOF = True Or .BOF = True Then
.....
'.MoveNext 
.MovePrevious 
ElseIf .EOF = True Or .BOF = True Then
MsgBox "没有记录了。"
'.MoveLast 
.MoveFirst 
end if
问题3 :
比较关键的东东,即便是运行很正常也老是跳出那个问题语句,彻底解决掉它。
Adodc1.BOFAction = adStayBOF 
Adodc1.EOFAction = adStayEOF --------------------编程问答-------------------- 问题3 是用Adodc控件时出现的问题 --------------------编程问答-------------------- 不给分啊! --------------------编程问答-------------------- '去掉.MoveFirst,还有DoEvents如果可以的话也去掉
Private Sub Combo1_LostFocus()
    Set rs5 = conn.Execute("select 产地,规格,包装,单位 from product where 商品名称=' " & Trim(Combo1.Text) & " '")
    With rs5
        Do While Not .EOF
            DoEvents
            Text6.Text = !规格
            Text9.Text = !包装
            Text7.Text = !单位
            Text10.Text = !产地
            .MoveNext
        Loop
    End With         
End Sub --------------------编程问答-------------------- 楼上如果去掉movefirst的话那就无法定位数据库指针拉,到时会发生无可预知的错误哦 --------------------编程问答-------------------- 问题是很奇怪
我在另外的一个COMBO2中就不会产生错误了
而且我的数据库是没有问题的
--------------------编程问答-------------------- 刚出来的记录集用movefirs定位个屁,本来就在开始。如果真想就加上一句:

Private   Sub   Combo1_LostFocus() 
        Set   rs5   =   conn.Execute( "select   产地,规格,包装,单位   from   product   where   商品名称= '   "   &   Trim(Combo1.Text)   &   "   ' ") 
        With   rs5 
                if .BOF then exit sub
                Do    
                        DoEvents 
                        Text6.Text   =   !规格 
                        Text9.Text   =   !包装 
                        Text7.Text   =   !单位 
                        Text10.Text   =   !产地 
                        .MoveNext 
                Loop While   Not   .EOF
        End   With                   
End   Sub


打赏

本文链接:https://www.kinber.cn/post/3699.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客