为什么DO WHILE NOT RS.EOF成了死循环

maq2000 2007-12-06 10:48:29
Private Sub Form_Load()
Dim strsql, strdsn As String
Dim conn As New ADODB.Connection
Set conn = New ADODB.Connection
strsql = "select * from cd_table"
strdsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
conn.Open strdsn
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strsql, conn, 1, 3
Do While Not rs.BOF
rs.MoveFirst
Loop
Do While Not rs.EOF
rs.MoveNext
Loop
End Sub
怎么这样成了死循环啊??
...全文
1070 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
VlaobailaoheiV 2009-03-02
  • 打赏
  • 举报
回复
受教了
whoo529 2008-07-31
  • 打赏
  • 举报
回复
up
toury 2007-12-06
  • 打赏
  • 举报
回复
把13楼的strdsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\mysite\db1.mdb"
改回去:strdsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb";

我测试后忘记改了
vbman2003 2007-12-06
  • 打赏
  • 举报
回复
我晕死,看来我真是老眼昏花了.............
^_^
toury 2007-12-06
  • 打赏
  • 举报
回复

Private Sub Form_Load()
Dim i%, strsql$, strdsn$ ' As String
Dim conn As New ADODB.Connection, rs As New ADODB.Recordset

strdsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\mysite\db1.mdb"
conn.Open strdsn
strsql = "select * from cd_table"
rs.Open strsql, conn, 1, 3

If Not rs.EOF Then rs.MoveLast

Do While Not rs.BOF
i = i + 1
Debug.Print i, "MoveFirst"
''''''''''''''''''rs.MoveFirst '你永远移动到第一条记录,当然死循环!
rs.MovePrevious
Loop

i = 0

Do While Not rs.EOF
i = i + 1
Debug.Print i, "MoveNext"

rs.MoveNext
Loop
rs.Close: Set rs = Nothing
conn.Close: Set conn = Nothing
End Sub

maq2000 2007-12-06
  • 打赏
  • 举报
回复
但我这个怎么成了死循环啊??
和这个实例化有关吗
toury 2007-12-06
  • 打赏
  • 举报
回复
10楼说的不严谨;
创建记录集的两个方式:
1): Dim rs As New ADODB.Recordset '声明并经实例化
2):
Dim rs As ADODB.Recordset '声明
set rs=New ADODB.Recordset '实例化
toury 2007-12-06
  • 打赏
  • 举报
回复
知其然还要知其所以然
声明记录集的两个方式:
1): Dim rs As New ADODB.Recordset '已经实例化
2):
Dim rs As ADODB.Recordset '未实例化
set rs=New ADODB.Recordset '实例化
maq2000 2007-12-06
  • 打赏
  • 举报
回复
Dim rs As New ADODB.Recordset
''''''''''''''Set rs = New ADODB.Recordset 多此一举
这个是什么意思??
都是这样写的啊!!
Tiger_Zhao 2007-12-06
  • 打赏
  • 举报
回复
Do While Not rs.BOF 'BOF的表示移到了第一条的前面
rs.MoveFirst '移到第一条,这么可能到达BOF
Loop '整个循环属于无用代码,可删除之
toury 2007-12-06
  • 打赏
  • 举报
回复
Dim rs As New ADODB.Recordset
''''''''''''''Set rs = New ADODB.Recordset 多此一举
vbman2003 2007-12-06
  • 打赏
  • 举报
回复
哦,看错了
8好意思.........
vbman2003 2007-12-06
  • 打赏
  • 举报
回复
你的代码中有:
Do While Not rs.BOF
rs.MoveFirst '<--------这个不死才怪
Loop
maq2000 2007-12-06
  • 打赏
  • 举报
回复
for i=1 to rs.recordcount
rs.movenext
next i
这样还是是死循环,真晕了,是其他的地方出错了吗?
maq2000 2007-12-06
  • 打赏
  • 举报
回复
Do While Not rs.EOF
rs.MoveNext
Loop
这里为什么成了死循环
我在其他地方都可以的啊
非凡笨笨 2007-12-06
  • 打赏
  • 举报
回复
同LS~~~
饮水需思源 2007-12-06
  • 打赏
  • 举报
回复
for i=1 to rs.recordcount
rs.movenext
next i
maq2000 2007-12-06
  • 打赏
  • 举报
回复

改成
If Not rs.BOF Then rs.MoveFirst
就对了,谢谢大家
maq2000 2007-12-06
  • 打赏
  • 举报
回复
Do While Not rs.BOF
rs.MoveFirst
Loop
这个是没在第一个记录我就把他移到第一个记录啊!!怎么会死循环呢??

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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