怪了怪了,真是怪了!

popety_bit 2002-08-05 03:08:53
大家看看我的程序出了什么毛病?

For k = 0 To lstWorker.ListCount - 1
If lstWorker.Selected(k) = True then
If rsTimeRecord.State Then
rsTimeRecord.Close
End If
rsTimeRecord.Open "select * from tbl_timerecord where 证件号码='" & Trim(lstWorker.ItemData(k)) & "'", Conn, adOpenDynamic, adLockOptimistic, adCmdText
If rsTimeRecord.EOF then Msgbox "记录集空!"
Statistic rsTimeRecord 'Statistic为自定义过程
End If
Next k
毛病:当我在列表框lstWorker中选了多个职工时,记录集rsTimeRecord在在打开第一个选中职工的记录时正常,可以后的就都为空了,我试了很多次,不管怎么选,总是第一个正常,以后的记录集都为空,怎么回事呀,大家遇到过这种情况吗?
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
popety_bit 2002-08-05
  • 打赏
  • 举报
回复
知道了,搞错了一个变量,气死了,真他妈的该死!
popety_bit 2002-08-05
  • 打赏
  • 举报
回复
to Pipi0714(皮皮0714):记录集的确是空的,因为下面还要对记录进行许多操作,而记录集里的确什么都没有,我就想不通,为什么总是第一次可以,以后就不行了呢?
tonykong 2002-08-05
  • 打赏
  • 举报
回复
If rsTimeRecord.State Then
rsTimeRecord.Close
End If

For k = 0 To lstWorker.ListCount - 1
If lstWorker.Selected(k) Then

rsTimeRecord.Open "select * from tbl_timerecord where 证件号码='" & Trim(lstWorker.ItemData(k)) & "'", Conn, adOpenKeyset, adLockReadOnly, adCmdText

If rsTimeRecord.RecordCount < 0 Then
MsgBox "记录集空!"
End If

rsTimeRecord.Close

Statistic rsTimeRecord 'Statistic为自定义过程
End If
Next k
Pipi0714 2002-08-05
  • 打赏
  • 举报
回复
判断经过查询的记录集是否为空不能单单用eof 属性。应该是:
if rsTimeRecord.bof and rsTimeRecord.eof then msgbox "记录为空"
popety_bit 2002-08-05
  • 打赏
  • 举报
回复
to net_jun(飞马) :我的FOR循环只执行一次,之后就不用K的值了
popety_bit 2002-08-05
  • 打赏
  • 举报
回复
to crackzzy(crackzzy):
是FOR循环的问题吗?可不用FOR循环,我怎么找到列表框中选中的职工呀?
而且列表框中选中的职工也不止一个呀?
net_jun 2002-08-05
  • 打赏
  • 举报
回复
下一次运行之前,应该把K值还原吧,在for 循环外加:

k=0

crackzzy 2002-08-05
  • 打赏
  • 举报
回复
我的意见(可能不正确):
我想在这里应该不能使用For循环吧?
应该是For循环出的问题。
For循环只是机械的实现对k值的累加,而不是根据k值灵活地决定下面执行的代码。
这里你应该把For循环整个去掉程序应该就正常了。只需要使用If对lstWorker.Selected(k)进行判断就可以了。程序会自动根据k的值选择正确的执行代码。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧