VB中datagrid访问了数据库,显示了一条记录,怎么显示另一项记录例如上一项记录
我的前一项记录按钮代码是PrivateSubCommand2_Click()Adodc1.ConnectionString=ConnectString()Adodc1.R...
我的前一项记录按钮代码是
Private Sub Command2_Click()
Adodc1.ConnectionString = ConnectString()
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
Adodc1.Recordset.MoveLast
End If
Text1.Text = Adodc1.Recordset.Fields("序号")
Adodc1.RecordSource = "select * from 重点接头管理表 where 序号 = '" & Text1.Text & "'"
Adodc1.Refresh
End Sub
附:查询按键代码没有问题 展开
Private Sub Command2_Click()
Adodc1.ConnectionString = ConnectString()
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
Adodc1.Recordset.MoveLast
End If
Text1.Text = Adodc1.Recordset.Fields("序号")
Adodc1.RecordSource = "select * from 重点接头管理表 where 序号 = '" & Text1.Text & "'"
Adodc1.Refresh
End Sub
附:查询按键代码没有问题 展开
2个回答
展开全部
这代码有点无语,你到底是要移动记录,还是要重新查询数据?
如果你在"查询“里连接数据库并获取了数据,后面就不需要再去连接数据库了,直接操作记录就可以了,一般的移动记录的代码就只要这么几行:
dim rs as ADODB.Recordset '为简化代码,定义一个记录集变量
set rs=Adodc1.Recordset
if rs.eof and rs.bof then exit sub '如果没有记录,退出过程
rs.MovePrevious
If rs.BOF Then rs.MoveLast
如果你在"查询“里连接数据库并获取了数据,后面就不需要再去连接数据库了,直接操作记录就可以了,一般的移动记录的代码就只要这么几行:
dim rs as ADODB.Recordset '为简化代码,定义一个记录集变量
set rs=Adodc1.Recordset
if rs.eof and rs.bof then exit sub '如果没有记录,退出过程
rs.MovePrevious
If rs.BOF Then rs.MoveLast
更多追问追答
追问
我就是想我是想点击上一项记录按钮后,datagrid控件中出现序号是3的记录(现在是4),但是在datagrid控件没实现,我才试试让Recordset中指针移动,
先给text1赋值,再重新访问的。按你那种代码实现的是按了上一项记录,datagrid控件中什么都不变,是不是跟datagrid控件有关啊?
追答
那是因为你在代码里获得的序号还是4,重新获取数据后当然还是当前这条记录
你可以试试这样:
Text1.Text = Format(Adodc1.Recordset.Fields("序号")-1)
Adodc1.RecordSource = "select * from 重点接头管理表 where 序号 = '" & Text1.Text & "'"
Adodc1.Refresh
前面连接数据库的代码就不需要了,只要没主动关闭,不需要重复连接。
不过这种逻辑很不规范,如果你做个简单的程序,就这么勉强用吧。
这种方法相当于每次只显示一条记录,那要网格干什么,直接用几个文本框更简单。
网格的一般模式是:根据条件显示若干记录,然后用指针(鼠标点击或者键盘方向键移动)移动来选择某个记录,就跟 Excel 类似,一次显示大量记录才是网格的最大好处。
七鑫易维信息技术
2024-09-02 广告
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分...
点击进入详情页
本回答由七鑫易维信息技术提供
展开全部
Adodc1.Recordset.Move 行数
这语句来表示,行书不能大于Adodc1.Recordset所有行数就行了
这语句来表示,行书不能大于Adodc1.Recordset所有行数就行了
更多追问追答
追问
例如:Adodc1.Recordset.Move 3行?
追答
Adodc1.Recordset.Move 3
就是第4行
Adodc1.Recordset.Move 0
是第一行
看来你还不熟悉ADO控件,要游标遍历他就用个循环
Dim i as integer '//全局变量
'//把adodc1.recordset也要作为全局变量
function xiayitiao
if i<adodc1.recordset.recordcount then
i=i+1
else
i=0
end if '//这就是下一条语句
adodc1.recordset.move i
end function
'//上一条方法里面就是 -1了
function shangyitiao
if i>0 then
i=i-1
else
i=adodc1.recordset.recordcount
end if '//这就是下一条语句
adodc1.recordset.move i
end function
private Sub 上一条_Click()
call shangyitiao
end sub
private Sub 下一条_Click()
call xiayitiao
end sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询