标题:為什麽這句總不執行啊?請各位幫我看看.
只看楼主
sunboy
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-4-18
 问题点数:0 回复次数:12 
為什麽這句總不執行啊?請各位幫我看看.

Dim tmpRs As New ADODB.Recordset Dim tmprd As New ADODB.Recordset Private Sub Form_Load()

Dim sh As String Set tmprd = ExecuteSQL("select * from song") '从SQL更新点唱率 If tmprd.BOF = False And tmprd.EOF = False Then tmprd.MoveLast tmprd.MoveFirst End If

Set tmpRs = ExecuteAccess("select * from song ") Do While tmptd.EOF = False If tmprd.Fields("songname") = tmprs.Fields("歌曲名") Then If tmprs.Fields("点唱次数") <> tmprd.Fields("songcount") Then tmprs.Fields("点唱次数") = tmprd.Fields("songcount")(這一句總不執行,很鬱悶) tmprs.Update tmprd.MoveNext tmprs.MoveNext End If End If Loop MsgBox "" End Sub

大家幫我看看是什麽原因~~~~很急~~~~唉~~~沒有辦法,找你們.

[此贴子已经被作者于2004-06-02 11:21:54编辑过]

搜索更多相关主题的帖子: tmprd SQL False Set 
2004-06-02 09:55
firechun
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2004-4-13
得分:0 

如果tmprd和tmprs的第一条记录不相同,你的do while就是死循环,这时你标为红色的那部分代码永远执行不了,循环也不可能退出。要想让你的代码正确执行,前提是tmprd和tmprd记录数相同,每条记录对应的字段“songname”,“歌曲名”也必须相同。

用双循环进行比较吧,比较简单,效率可能低一点。

另外,对ado的recordset来说,无需使用movelast,movefirst来刷新记录集数(recordcount)


本人在编程中国发表的所有文章,除特别说明外均属原创,转载时请注明作者编程中国
2004-06-02 10:23
firechun
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2004-4-13
得分:0 
补充一下,这个错误你只要跟踪一下就很容易发现啊,为什么你会找不到原因?不解。。。

本人在编程中国发表的所有文章,除特别说明外均属原创,转载时请注明作者编程中国
2004-06-02 10:25
sunboy
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-4-18
得分:0 
我跟蹤啦~~~~每條記錄相對應的.就是不執行.暈~~~~

看到代码晕啦!!!
2004-06-02 11:21
sunboy
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-4-18
得分:0 
以下是引用firechun在2004-06-02 10:23:00的发言:

如果tmprd和tmprs的第一条记录不相同,你的do while就是死循环,这时你标为红色的那部分代码永远执行不了,循环也不可能退出。要想让你的代码正确执行,前提是tmprd和tmprd记录数相同,每条记录对应的字段“songname”,“歌曲名”也必须相同。

用双循环进行比较吧,比较简单,效率可能低一点。

另外,对ado的recordset来说,无需使用movelast,movefirst来刷新记录集数(recordcount)

不知你的雙循環是怎麽實現的.

看到代码晕啦!!!
2004-06-02 11:26
firechun
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2004-4-13
得分:0 
以下是引用sunboy在2004-06-02 11:21:22的发言: 我跟蹤啦~~~~每條記錄相對應的.就是不執行.暈~~~~

If tmprd.Fields("songname") = tmprs.Fields("歌曲名") Then 是这一整块都不执行,还是你在后面加说明的那一句不执行?从你的代码来看,当tmprd第一条记录的"songname"和tmprs第一条记录的"歌曲名"不相等的话,程序就进入死循环。如果只是你加说明的那句不执行,那我真是无话可说了。。。。 ------------------------------------------------------------ If tmprs.Fields("点唱次数") <> tmprd.Fields("songcount") Then tmprs.Fields("点唱次数") = tmprd.Fields("songcount")(這一句總不執行,很鬱悶) tmprs.Update tmprd.MoveNext tmprs.MoveNext End If -------------------------------------------------------- End If

[此贴子已经被作者于2004-06-02 12:29:21编辑过]


本人在编程中国发表的所有文章,除特别说明外均属原创,转载时请注明作者编程中国
2004-06-02 12:28
sunboy
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-4-18
得分:0 

If tmprd.Fields("songname") = tmprs.Fields("歌曲名") Then 這句還是執行的.

就是為紅色的那部分不執行.但我跟蹤記錄是tmprs 的值和tmprd 的值是相等的.

所以很鬱悶,為什麽不執行~~~~~


看到代码晕啦!!!
2004-06-02 18:43
sunboy
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-4-18
得分:0 
再說我的數據都是一致的,SQL數據庫裏的數據是從ACCESS裏導入進去的.

看到代码晕啦!!!
2004-06-02 18:46
sunboy
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-4-18
得分:0 
你看如果要修改請問怎麽改呢?我現在用的是兩個不同的庫.

看到代码晕啦!!!
2004-06-02 18:48
xingehappy
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2004-4-14
得分:0 

是你這一句有問題:

If tmprs.Fields("点唱次数") <> tmprd.Fields("songcount") Then

把這一句先改成:

If tmprs.Fields("点唱次数") < tmprd.Fields("songcount") Then

或改成:

If tmprs.Fields("点唱次数") > tmprd.Fields("songcount") Then

看看能不運行過去.


我又回頭去飛,去追.就算我追到最后只剩冰雪.天都為我傷悲.冷的愛快枯萎.任漫天風雪覆蓋我的心碎........
2004-06-03 08:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-1914-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.244679 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved