永发信息网

vb循环语句

答案:2  悬赏:0  手机版
解决时间 2021-03-15 03:05
Private Sub Form_Load()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\01.mdb" & ""

rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockOptimistic
rs.Open "select * from 001", cn
Set DataGrid1.DataSource = rs
End Sub

Private Sub Command1_Click()
'第一条数据不变,选中任意一条DATAGRID中的数据后将被选中的数据移动到第2条数据的位置,其它数据依次下移
a = rs.Fields(0)

rs.Requery
rs.MoveNext

b = rs.Fields(0)
rs.Fields(0) = a

rs.Update
rs.MoveNext

Do

a = rs.Fields(0)
rs.Fields(0) = b

rs.Update

If rs.EOF = True Then rs.Requery: Exit Sub

rs.MoveNext

b = rs.Fields(0)
rs.Fields(0) = a

rs.Update

Loop

rs.Requery

End Sub
当按下Command1后提示“多步操作产生错误。请检查每一步的状态值”是什么原因?
或者哪为能写一段执行我这个功能的代码吗?
具体就是:任意选种DATAGRID中的一条数据,然后按下Command1后将选中的数据移动到第2条的数据位置,原来的第2条数据以及其他数据依次后移。注:是要改变在数据中的数据位置的,不是单纯的在DATAGRID中显示
最佳答案
好了,给你调试完了。测试过的

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Private Sub Command1_Click()
a = rs.Fields(0)
rs.Delete
rs.MoveFirst
rs.MoveNext

b = rs.Fields(0)
rs.Fields(0) = a

Do While Not rs.EOF
rs.MoveNext
If Not rs.EOF Then
a = rs(0)
rs(0) = b
b = a
End If
Loop
rs.AddNew
rs(0) = b
On Error Resume Next
rs.Update
rs.MoveNext

rs.Requery
End Sub

Private Sub Form_Load()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\aa.mdb"

rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockOptimistic
rs.Open "select * from 001", cn
Set DataGrid1.DataSource = rs
End Sub
全部回答
循环语句包括for-next、while-wend、do-loop语句。 暂且先给你介绍一下这些语句的简单用法: for-next语句: for 变量 = 初值 to 终值 [step 步长] 循环体 next 当循环变量的值在初值到终值范围内时,执行一次循环体中的语句块,并使初值增加一个步长。当循环变量的值不在初值到终值范围内时,就退出循环,执行next后面的语句。for循环语句执行的流程图。其中, step 步长 可省略,省略时,步长=1. 例如: private sub form_activate() for i = 1 to 5 step 1 print i next end sub 在这个例子中,运行程序后,窗体上会写出如下文字: 1 2 3 4 5 解析: 变量i由初值1到终值5共循环5次,每次循环时,输出i,并且将i的值加上步长的值1.所以,但第二次循环式,i的值就变为2.循环5此后,i的值变为5.再循环时i就变为6,便超过了终值5,因此循环结束,vb开始运行next语句之后的代码。 do-loop语句: do 循环体 ...[exit do] loop 循环体会在do 与 loop 之间不停循环。exit do 语句可有可无,是为了设定当满足一定条件后,运行exit do 语句,即退出循环。 如: private sub form_activate() dim i as integer i = 1 do print i i = i + 1 '每次循环时都使i的值增加1 if i > 5 then exit do '当i的值大于5(即循环5此后)时,退出循环 loop end sub 其运行效果与上面的例子相同。 以上说明绝对不是复制的,给点辛苦分也行,谢谢~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
“神作” 是什么意思?
新运二号院我想知道这个在什么地方
先知图书馆在哪?详细坐标?日怒徽记在哪上缴?
流传至今的汉乐府民歌出处
速印德数码快印怎么去啊,有知道地址的么
k265那号车厢是补票
电脑清灰尘了下,弄完显示器不亮了不响灯是黄
滴滴打车司机怎么知道收多少钱
如果冬季在河上滑冰,发现河上的冰裂开了,你应
满庭芳化妆品薄利店怎么去啊,有知道地址的么
我一个视频转码用QQ影音转到一大半就转码失败
为什么QQ飞车,A级车怎么那么贵啊 A车的速度
怎样才能使夫妻的感情更长久更稳固?希望感情
玉枝店村在哪里啊,我有事要去这个地方
为防止视网膜脱落做视网膜激光冷凝术的费用!
推荐资讯
合肥市北京路18号在哪里
宣城市人民医院-磁共振室我想知道这个在什么
谁在河北邯郸买过房或者是资深一点的本地人啊
深卡其色长毛衣搭配什么颜色的外套裤子鞋子比
如何将做好的雪糕从模子里取出?
50、60、70年代玩的游戏
我的身体有病女友不管不问,缺一直给我包装外
请问大家一瓶50G的保湿霜用多长时间啊?
福州140路公交多长时间一趟车?路线怎么走
有没有资深运营,求回复
跪求《大明宫词》里面《长安夜市》《温泉水》
汝州市铁通营业厅在哪里
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?