请教:VB MoveNext下一项只能显示第二项,其他的不显
查询到的数据集有几项,但点击“下一项”只会显示第二项,其他的不会显示,怎么解决啊!!
代码如下:
Private Sub CmdMD_Click(Index As Integer)
adoCouCheck.CommandType = adCmdText
adoCouCheck.RecordSource = " select * from Course_Tb"
adoCouCheck.Refresh
Select Case Index
Case Is = 0 '移到第一条记录
If Not adoCouCheck.Recordset.BOF Then adoCouCheck.Recordset.MoveFirst
Case Is = 1 '移到上一条记录
If adoCouCheck.Recordset.RecordCount <> 0 Then
If adoCouCheck.Recordset.BOF = False Then adoCouCheck.Recordset.MovePrevious
If adoCouCheck.Recordset.BOF = True Then adoCouCheck.Recordset.MoveFirst
End If
Case Is = 2 '移到下一条记录
If adoCouCheck.Recordset.RecordCount <> 0 Then
If adoCouCheck.Recordset.EOF = False Then adoCouCheck.Recordset.MoveNext
If adoCouCheck.Recordset.EOF = True Then adoCouCheck.Recordset.MoveLast
End If
Case Is = 3 '移到最后一条记录
If Not adoCouCheck.Recordset.EOF Then adoCouCheck.Recordset.MoveLast
End Select
With adoCouCheck.Recordset
For i = 0 To 4
If adoCouCheck.Recordset.Fields(i) <> "" Then
txtCourse(i).Text = adoCouCheck.Recordset.Fields(i)
Else
txtCourse(i).Text = ""
End If
Next i
End With
End Sub
[解决办法]
写错了一个地方,利用模块级变量和recordset的move方法实现。
我还是建议用一个模块级变量来保存你每次操作后记录的索引值,加如为 m_CurIndex
Case Is = 1 '移到上一条记录
If adoCouCheck.Recordset.RecordCount <> 0 Then
If adoCouCheck.Recordset.BOF = False Then
m_CurIndex=m_CurIndex-1
adoCouCheck.Recordset.Move(m_CurIndex)
end if
If adoCouCheck.Recordset.BOF = True Then
adoCouCheck.Recordset.MoveFirst
m_CurIndex=0
endif
End If
Case Is = 2 '移到下一条记录
If adoCouCheck.Recordset.RecordCount <> 0 Then
If adoCouCheck.Recordset.EOF = False Then
m_CurIndex=m_CurIndex+1
adoCouCheck.Recordset.Move(m_CurIndex)
end if
If adoCouCheck.Recordset.EOF = True Then
adoCouCheck.Recordset.MoveLast
m_CurIndex=adoCouCheck.Recordset.recordCount-1
end if
End If
移至第一行时加上m_CurIndex=0 ,移至最后一行时加上m_CurIndex=adoCouCheck.Recordset.recordCount-1
请问:VB MoveNext下一项只能显示第二项,其他的不显
请教:VBMoveNext下一项只能显示第二项,其他的不显查询到的数据集有几项,但点击“下一项”只会显示第二项,其
