注册 登录
编程论坛 VB6论坛

如何循环获取datagrid控件每行每个单元格的值,麻烦各位大佬看下,谢谢!

bing0705 发布于 2019-06-24 11:44, 2443 次点击
我想循环获取datagird每行每个单元格的值,我写的这个for循环,总是获取最后一行的值,不能从第一行开始循环,请各位大佬看下。
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2019-6-24 11:50编辑过]

9 回复
#2
wufuzhang2019-06-24 14:50
回复 楼主 bing0705
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.MoveNext
用这两条语句可以从首行开始循环,循环一次,移下一行再循环。
#3
bing07052019-06-24 16:07
麻烦给写个示例可以吗?我想获取每一行每一个单元格的值,循环获取,获取完一行,然后接着下一行,请问下代码怎么写,非常感谢!

[此贴子已经被作者于2019-6-24 16:25编辑过]

#4
wufuzhang2019-06-25 09:15
回复 3楼 bing0705
Private Sub Command1_Click()
  Dim i As Long
  Adodc1.Recordset.MoveFirst
  For i = 0 To Adodc1.Recordset.RecordCount - 100
      Debug.Print DataGrid1.Columns("姓名").Value
      Adodc1.Recordset.MoveNext
  Next
End Sub

把“姓名”换成你数据库中的字段名就可以了。
#5
bing07052019-06-25 16:07
你好!我按你写的代码测试还是只能获取最后一行的值,不能从第一行循环获取,麻烦你再试下,谢谢!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录




[此贴子已经被作者于2019-6-25 16:08编辑过]

#6
wufuzhang2019-06-25 16:21
回复 5楼 bing0705
你这样循环完成后,底下的那些TextBox控件的内容,肯定是最后一条记录了。
你用Print 将内容都打印出来,就可以看到是不是从第一条记录开始循环的。
#7
bing07052019-06-26 10:05
你好!debug.print下可以看到记录是从第一条开始循环的,但是一次把全部记录都显示出来了,我想在符合不同条件时播放不同的录音,可以获取完一行记录间隔几秒再获取下一行吗?或者有没有其他好的方法?非常感谢!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

#8
wufuzhang2019-06-26 10:24
你试一下在PlaySound语句后面接一句Sleep(2000),就是让程序休眠2秒钟
#9
bing07052019-06-26 15:45
使用Sleep是可以实现,但是运行的时候程序就卡死了,我试了下Windows API函数timeGetTime()一直没达到效果,不能间隔几秒再获取下一行记录,请您给指点下,看我代码可有问题,非常感谢!
只有本站会员才能查看附件,请 登录

#10
wufuzhang2019-06-26 16:26
你要休眠5秒钟,这么长的时间程序不响应事件,当然会给你卡死的错觉。
你可以编写一个过程:
For i = 1 To 500
    Sleep(10)
    DoEvents
Next
每个循环只休眠10ms,且有DoEvents,这样就不会有卡死的错觉了。


对于TimeGetTime函数,
你在Adodc1.Recordset.MoveFirst前面加一句Adodc1.Refresh,看有没有效果


[此贴子已经被作者于2019-6-26 16:41编辑过]

1