Office中国论坛/Access中国论坛

标题: 请问怎样将ADO的recordset得到的记录赋值给列表框 [打印本页]

作者: zyp    时间: 2015-12-29 22:04
标题: 请问怎样将ADO的recordset得到的记录赋值给列表框
大家好!

用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(这个好像不可以)

请多多赐教

谢谢!

作者: smileyoufu    时间: 2015-12-29 22:07
可以,直接将记录集绑定给组合框即可
作者: admin    时间: 2015-12-29 22:07
set me.list0.Recordset=Rs
作者: zyp    时间: 2015-12-30 09:25
admin 发表于 2015-12-29 22:07
set me.list0.Recordset=Rs

谢谢!

正解!这样省事多了!


作者: zyp    时间: 2015-12-30 09:26
smileyoufu 发表于 2015-12-29 22:07
可以,直接将记录集绑定给组合框即可

谢谢!


因为记录来源不是本地的表,是远程的一个表,所以不能直接绑定数据源
作者: zyp    时间: 2015-12-30 09:56
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,这个列表框就无法显示任何资料

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

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






作者: xinrenq    时间: 2016-1-4 13:23
zyp 发表于 2015-12-30 09:56
谢谢!

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

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

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

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

谢谢xinrenq

谢谢你的及时雨,问题得以完美的解决了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3