设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 7475|回复: 9
打印 上一主题 下一主题

[窗体] 请问怎样将ADO的recordset得到的记录赋值给列表框

[复制链接]
跳转到指定楼层
1#
发表于 2015-12-29 22:04:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好!

用ADO的Recordset取得的记录,除了用Do...Loop循环将其加入到列表框中,能不能直接将RecordSet的值直接赋给列表框做数据源

我现在的方法:
Dim RS as new adodb.recordset,  SQL as string
sql="SELECT Kid,Kname FROM kf ORDER BY Kname"
RS.open sql,Currentproject.connection,adopenkeyset, adlockReadOnly
Do until RS.Eof
        me.List0.Additem Rs!kid &";"& Rs!Kname
        Rs.MoveNext
Loop

上面的方法当然可以加入,但是太麻烦了
有没有更好的办法,比如me.list0.RowSource=Rs.Source(这个好像不可以)

请多多赐教

谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-12-29 22:07:52 | 只看该作者
可以,直接将记录集绑定给组合框即可

点击这里给我发消息

3#
发表于 2015-12-29 22:07:52 | 只看该作者
set me.list0.Recordset=Rs
4#
 楼主| 发表于 2015-12-30 09:25:40 | 只看该作者
admin 发表于 2015-12-29 22:07
set me.list0.Recordset=Rs

谢谢!

正解!这样省事多了!

5#
 楼主| 发表于 2015-12-30 09:26:50 | 只看该作者
smileyoufu 发表于 2015-12-29 22:07
可以,直接将记录集绑定给组合框即可

谢谢!


因为记录来源不是本地的表,是远程的一个表,所以不能直接绑定数据源
6#
 楼主| 发表于 2015-12-30 09:56:46 | 只看该作者
admin 发表于 2015-12-29 22:07
set me.list0.Recordset=Rs

谢谢!

不过还是有一点问题, 如果这个Connection不是Currentproject.connection,而是其它方式来打开的连接,用set me.list0.Recordset=Rs无法在列表框中显示记录;
比如用
DIM CN as New Adodb. Connection
CN.Open "driver={microsoft Access Driver (*.mdb)};dbq=F:\test.mdb;"
或者
DIM CN as New Adodb. Connection
CN.open "Driver=SQL Sever;Server=MyServer;Uid=Sawd=1234;database=Db2011"
,通过上面这样的连接打开的记录,直接赋值给列表框的Recordset,这个列表框就无法显示任何资料

不知是什么原因造成的, 请哪位有解决过这个问题的朋友告知一下,谢谢!
7#
发表于 2016-1-4 10:29:49 | 只看该作者
本帖最后由 wu8313 于 2016-1-4 10:31 编辑

获取结果集,你至少可以使用三种方法:
第一:Connection 对象上的 Execute 方法
第二: Recordset 上的 Open 方法
第三:使用 Command 对象(适用于: 重用代码中的命令或者需要将详细的参数信息传递给命令)
一般像这个情况,我倾向于后台写好 存储过程获取结果集,然后利用command调用它。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
发表于 2016-1-4 13:23:11 | 只看该作者
zyp 发表于 2015-12-30 09:56
谢谢!

不过还是有一点问题, 如果这个Connection不是Currentproject.connection,而是其它方式来打开 ...

connection的有个游标属性CursorLocation,当值为adUseClient时,你就可以在本地加载了
一般默认是adUseServer,所以你要改一下就行了。
9#
 楼主| 发表于 2016-1-4 21:50:57 | 只看该作者
wu8313 发表于 2016-1-4 10:29
获取结果集,你至少可以使用三种方法:
第一:Connection 对象上的 Execute 方法
第二: Recordset 上的  ...

谢谢! 我是用Recordset的OPEN来取得记录集的,记录集的取得是完全没有问题,也可以通过do循环将记录集输出,只是将记录集直接赋值给列表框做数据源时,列表框并没有显示相应的记录;

在xinrenq给出的解决方案完全可以解决了这个问题了,就是加一句 CN.cursorLocation=adUseClient,问题就迎刃而解了
10#
 楼主| 发表于 2016-1-4 21:52:30 | 只看该作者
xinrenq 发表于 2016-1-4 13:23
connection的有个游标属性CursorLocation,当值为adUseClient时,你就可以在本地加载了
一般默认是adUse ...

谢谢xinrenq

谢谢你的及时雨,问题得以完美的解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 04:49 , Processed in 0.110802 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表