| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3134 人关注过本帖
标题:关于movenext的一点小问题
只看楼主 加入收藏
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
结帖率:77.78%
收藏
 问题点数:0 回复次数:10 
关于movenext的一点小问题
这是我写的移动到下一条的代码,有点小问题不满意,点一次会自动移动到下一条记录,如果中间有N条记录不满足条件,也需要点击N次后才会在窗体显示我需要的记录,白白点击的这么多次窗体text内容不会变动(当然我也不需要让它变动)。我的想法是有什么法子,会跳过这中间的N个不满足条件的记录一次性跳到满足条件的记录并在窗体显示出来,真抠老壳!请大侠相助!
Private Sub Cmd_Next_Click()
    'If rst.State = adStateOpen Then rst.Close
    'rst.Open "SELECT * FROM GzTable where 来往单位=' & Com_Sz.Text'", conn, adOpenKeyset, adLockOptimistic
    If rst.BOF = False And rst.EOF = False Then
        If rst.Fields("来往单位").Value = Com_Sz.Text And rst.Fields("是否结账").Value = False Then
            Txt_JE.Text = rst.Fields("挂账金额").Value
            Txt_Rq.Text = rst.Fields("日期").Value
            Txt_Qd.Text = rst.Fields("签单人").Value
            Txt_Lm.Text = rst.Fields("挂账类目").Value
            Txt_Bz.Text = rst.Fields("备注").Value
        End If
    End If
    If rst.EOF = True Then
        MsgBox "已经是最后一条记录了!!", vbCritical + vbOKOnly, "提示"
    Else
        rst.MoveNext
    End If
End Sub
2016-11-01 21:17
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
在通用部分定义一个SS变量 Dim SS As Integer ,你的 Cmd_Next_Click 事件中添加下面代码就解决问题了。
程序代码:
SS = SS + 1
rst.Open "SELECT * FROM GzTable where 来往单位='" & Com_Sz.Text & "' And 是否结账 = False", conn, adOpenKeyset, adLockOptimistic   '这样一条语句就能够解决问题,检测出来的数据均是符合要求的,不需要再次判断。
    For I = 1 To SS - 1
        rst.MoveNext   '点击一次,指针自动向下移动
    Next I
            Txt_JE.Text = rst.Fields("挂账金额").Value
            Txt_Rq.Text = rst.Fields("日期").Value
            Txt_Qd.Text = rst.Fields("签单人").Value
            Txt_Lm.Text = rst.Fields("挂账类目").Value
            Txt_Bz.Text = rst.Fields("备注").Value


在自动移动指针需要增加一个判断:
    For I = 1 To SS - 1
       If Not rst.EOF Then  rst.MoveNext   '点击一次,指针自动向下移动,如果指针已经到达末尾,不再移动
    Next I


[此贴子已经被作者于2016-11-1 21:53编辑过]


请不要选我!!!
2016-11-01 21:41
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
回复 2楼 ZHRXJR
我发现选择com_sz的“挂账单位”后在窗体显示的是满足条件的最后一条记录,代码如下:
Private Sub Com_sz_click()
    If rst.State = adStateOpen Then rst.Close
    rst.Open "SELECT * FROM GzTable", conn, adOpenKeyset, adLockOptimistic
    If Not rst.EOF Then
        rst.MoveFirst
    End If
    For intloop1 = 0 To rst.RecordCount - 1
        If rst.Fields("来往单位").Value = Com_Sz.Text And rst.Fields("是否结账").Value = False Then
            Txt_JE.Text = rst.Fields("挂账金额").Value
            Txt_Rq.Text = rst.Fields("日期").Value
            Txt_Qd.Text = rst.Fields("签单人").Value
            Txt_Lm.Text = rst.Fields("挂账类目").Value
            Txt_Bz.Text = rst.Fields("备注").Value
            
        End If
        rst.MoveNext
    Next intloop1
End Sub
同时还有个"上一条"按钮,这个怎么解决?按照你的代码我试验了一次,存在一点小问题:1、好像只是点击第一次“下一条“的时候有效,后面就不行了;2、“上一条”和"下一条"不能自由的点击,点了“上一条”后再点击“下一条”不能返回!
不好意思,我是半壶水,问题有点多哈!

[此贴子已经被作者于2016-11-1 22:18编辑过]

2016-11-01 22:12
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
无论是用sql语句过滤符合条件的记录还是vb条件语句选择符合条件的记录,打开记录集的语句都必须在“上一条”“下一条”按钮外面。
就按照你的思路来,代码简单修改如下:
Private Sub Cmd_Next_Click()
    '下一条
    do while not rst.eof
        rst.movenext
        If rst.Fields("来往单位").Value = Com_Sz.Text And rst.Fields("是否结账").Value = False Then
            Txt_JE.Text = rst.Fields("挂账金额").Value
            Txt_Rq.Text = rst.Fields("日期").Value
            Txt_Qd.Text = rst.Fields("签单人").Value
            Txt_Lm.Text = rst.Fields("挂账类目").Value
            Txt_Bz.Text = rst.Fields("备注").Value
            exit do
        End If
     loop
     if rst.eof then MsgBox "已经是最后一条记录了!!", vbCritical + vbOKOnly, "提示"
End Sub

Private Sub Cmd_Prev_Click()
    '上一条
    do while not rst.bof
        rst.moveprev   '记录集向上的方法,可能拼写错误
        If rst.Fields("来往单位").Value = Com_Sz.Text And rst.Fields("是否结账").Value = False Then
            Txt_JE.Text = rst.Fields("挂账金额").Value
            Txt_Rq.Text = rst.Fields("日期").Value
            Txt_Qd.Text = rst.Fields("签单人").Value
            Txt_Lm.Text = rst.Fields("挂账类目").Value
            Txt_Bz.Text = rst.Fields("备注").Value
            exit do
        End If
     loop
     if rst.bof then MsgBox "已经是第一条记录了!!", vbCritical + vbOKOnly, "提示"
End Sub

[此贴子已经被作者于2016-11-1 22:36编辑过]

2016-11-01 22:32
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
回复 4楼 xzlxzlxzl
有点小问题,这样判断eof或者bof会出错!
2016-11-01 22:55
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
感谢xzlxzlxzl和ZHRXJR的鼎力支持!终于解决了所有的问题,又加了一条判断语句,分享一下:
Private Sub Cmd_Prev_Click()
    Do While Not rst.BOF
         rst.MovePrevious
         If rst.BOF = False And rst.EOF = False Then '记录集向上的方法,可能拼写错误
            If rst.Fields("来往单位").Value = Com_Sz.Text And rst.Fields("是否结账").Value = False Then
             Txt_JE.Text = rst.Fields("挂账金额").Value
             Txt_Rq.Text = rst.Fields("日期").Value
             Txt_Qd.Text = rst.Fields("签单人").Value
             Txt_Lm.Text = rst.Fields("挂账类目").Value
             Txt_Bz.Text = rst.Fields("备注").Value
             Exit Do
         End If
         End If
      Loop
      If rst.BOF Then MsgBox "已经是第一条记录了!!", vbCritical + vbOKOnly, "提示"
End Sub

Private Sub Cmd_Next_Click()
   Do While Not rst.EOF
         rst.MoveNext
         If rst.BOF = False And rst.EOF = False Then
         If rst.Fields("来往单位").Value = Com_Sz.Text And rst.Fields("是否结账").Value = False Then
             Txt_JE.Text = rst.Fields("挂账金额").Value
             Txt_Rq.Text = rst.Fields("日期").Value
             Txt_Qd.Text = rst.Fields("签单人").Value
             Txt_Lm.Text = rst.Fields("挂账类目").Value
             Txt_Bz.Text = rst.Fields("备注").Value
             Exit Do
         End If
         End If
      Loop
      If rst.EOF Then MsgBox "已经是最后一条记录了!", vbCritical + vbOKOnly, "提示"
End Sub
2016-11-01 23:04
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
能自己研究搞定,赞一个。
2016-11-02 08:42
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
回复 3楼 huangyz_xy
你的问题没有说“上一条”、“下一条”,如果是“上一条”按钮、“下一条”按钮,非常简单。
我给你的代码是点击一次,移到到下一条,没有上一条的代码。
稍等给你“第一条”按钮、“上一条”按钮、“下一条”按钮、“最后一条”按钮的代码。

请不要选我!!!
2016-11-02 10:58
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
回复 8楼 ZHRXJR
谢谢,看看你的实现方法,有你更精彩!
2016-11-02 11:42
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
题主通过询问、摸索得到正确答案的精神可嘉!至于代码的效率、精炼以及实现方法都可以通过训练提高,答主无需强加自己的实现思路。
2016-11-02 13:43
快速回复:关于movenext的一点小问题
数据加载中...
 
   



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

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