标题:如何循环获取datagrid控件每行每个单元格的值,麻烦各位大佬看下,谢谢!
只看楼主
bing0705
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2018-4-17
结帖率:20%
已结贴  问题点数:10 回复次数:9 
如何循环获取datagrid控件每行每个单元格的值,麻烦各位大佬看下,谢谢!
我想循环获取datagird每行每个单元格的值,我写的这个for循环,总是获取最后一行的值,不能从第一行开始循环,请各位大佬看下。



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

搜索更多相关主题的帖子: 循环 获取 控件 每行 单元格 
2019-06-24 11:44
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:10 
回复 楼主 bing0705
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.MoveNext
用这两条语句可以从首行开始循环,循环一次,移下一行再循环。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-06-24 14:50
bing0705
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2018-4-17
得分:0 
麻烦给写个示例可以吗?我想获取每一行每一个单元格的值,循环获取,获取完一行,然后接着下一行,请问下代码怎么写,非常感谢!

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

2019-06-24 16:07
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:0 
回复 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

把“姓名”换成你数据库中的字段名就可以了。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-06-25 09:15
bing0705
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2018-4-17
得分:0 
你好!我按你写的代码测试还是只能获取最后一行的值,不能从第一行循环获取,麻烦你再试下,谢谢!





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

2019-06-25 16:07
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:0 
回复 5楼 bing0705
你这样循环完成后,底下的那些TextBox控件的内容,肯定是最后一条记录了。
你用Print 将内容都打印出来,就可以看到是不是从第一条记录开始循环的。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-06-25 16:21
bing0705
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2018-4-17
得分:0 
你好!debug.print下可以看到记录是从第一条开始循环的,但是一次把全部记录都显示出来了,我想在符合不同条件时播放不同的录音,可以获取完一行记录间隔几秒再获取下一行吗?或者有没有其他好的方法?非常感谢!



2019-06-26 10:05
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:0 
你试一下在PlaySound语句后面接一句Sleep(2000),就是让程序休眠2秒钟

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-06-26 10:24
bing0705
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2018-4-17
得分:0 
使用Sleep是可以实现,但是运行的时候程序就卡死了,我试了下Windows API函数timeGetTime()一直没达到效果,不能间隔几秒再获取下一行记录,请您给指点下,看我代码可有问题,非常感谢!

2019-06-26 15:45
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:0 
你要休眠5秒钟,这么长的时间程序不响应事件,当然会给你卡死的错觉。
你可以编写一个过程:
For i = 1 To 500
    Sleep(10)
    DoEvents
Next
每个循环只休眠10ms,且有DoEvents,这样就不会有卡死的错觉了。


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


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


不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-06-26 16:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495473-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.145561 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved