学生之修改学籍信息窗体的记录查询

ADO的movefirst, movelast, movenext, moveprevious 方法 将指定Recordset对象中移动到第一个,最后一个,下一个或前一个使该记录成为当前记录
语法:
recordset.{MoveFirst,Movelast,MoveNext,MovePrexious}
用法:
使用movefirst 方法将当前记录位置移动到Recordset中的第一个记录
使用MoveLast 方法将当前记录位置移动到Recordset中的最后一个记录,Recordset对象必须支持书签或者向后光标移动,否则调用该方法将产生错误。
使用Movenext方法将当前记录向前移动一个记录(向Recordset的底部)。如果最后一个记录是当前记录并且调用Movenext方法,则当EOF属性为True时试图向前移动将产生错误,这时候需要一个if语句判断EOF,避免报错。
使用MovePrevious方法将当前记录位置向后移动一个记录(向记录集的顶部)。Recordset对象必须支持书签或向后游标移动,否则方法调用将产生错误。如果当前记录已经是第一条记录,BOF为true,如果在向前查询记录,将会报错。
两种方法实现记录的查询:
方法一:利用上述四种方法,代码如下

'定义数据集对象
Dim mrc as ADODB.Recordset

Private Sub firstCmd_Click()   ’查询第一条记录
	'移动到数据集的第一条记录
	Mrc.movefirst
	'调用显示数据的函数
	Call viewdata
End sub

Private Sub lastCmd_Click()     '显示最后一条记录
       '移动到数据集的最后一条记录
	mrc.MoveLast
      '调用显示数据的函数
    Call viewdata
End Sub

Private Sub PreviousCmd_Click() '显示上一条记录
	 '移动到数据集的上一条记录
	Mrc.moveprevious
	’判断是否到起始位置
	If Mrc.BOF then
		Mrc.movelast
	End if
	Call viewdata
End sub



Private Sub lastCmd_Click() '显示下一条记录
	‘数据集向后移动
	Mrc.movenext
	'判断是否到末尾位置
	If mrc.EOF then
		Mrc.movefirst
	End if
	Call viewdata
End sub

Public Sub viewdata()       '定义函数    
‘将记录显示在各个文本框之中
    txtSID.Text = mrc.Fields(0)
    txtName.Text = mrc.Fields(1)
    combosex.Text = mrc.Fields(2)
    DTPborn.Value = mrc.Fields(3)
    ComboClassNo.Text = mrc.Fields(4)
    txtTel.Text = mrc.Fields(5)
    DTPru.Value = mrc.Fields(6)
    txtAdress.Text = mrc.Fields(7)
    txtcomment.Text = mrc.Fields(8)
End Sub

方法二:从数据库中进行查询,用top来选择需要显示哪些记录
数据库里面用了一个id作为自增长的列,根据id的正序排序查询第一条top 1 记录,本来想直接按照学号排序,但是学号的录入不连续,按照学号排序会改变数据库里面数据的顺序,但是添加一个自增长的列再添加数据的话不会改变前面记录的顺序。

Private Sub firstCmd_Click()  
	‘查询数据库的第一条记录
	Txtsql=”selcet top 1 * from student_info order by id asc“
	Set mrc=executesql(txtsql,msgtext)
	'将数据库的第一条记录显示在各个文本框中
	Call viewdata
End sub


Private Sub lastCmd_Click()         '查询最后一条记录
   ‘查询数据库的最后一条记录
	Txtsql=" select top 1 * from student_info order by id desc"
	Set mrc=executesql(txtsql,msgtext)
  ‘将数据库的最后一条记录显示在各个文本框当中
	Call  viewdata
End sub


Private Sub nextCmd_Click()         '查询下一条记录    
    '查询当前记录的下一条记录
    txtsql = "select top 1 * from student_info where id>(select id from student_info where student_id='" & Trim(txtSID.Text) & "')"    ‘查询当前记录的下一条记录
    Set mrc = ExecuteSQL(txtsql, msgtext)
    '查询到最后一条记录不再查询
    If mrc.EOF = True Then
        MsgBox "已查询到最后一条记录!", vbOKOnly + vbExclamation
        Exit Sub
    End If
    '将下一条记录显示在各个文本框中
    Call viewdata

End Sub


Private Sub PreviousCmd_Click()             '查询上一条记录       t   
    txtsql = "select * from student_info where id=(select max(id) from student_info where id<(select id from student_info where student_id='" & Trim(txtSID.Text) & "'))"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    '查询到第一条记录不再查询
    If mrc.BOF = True Then
        MsgBox "已经查询到第一条记录!", vbOKOnly + vbExclamation
        Exit Sub
    End If
    Call viewdata
End Sub
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值