ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11428|回复: 37

[求助] 【ADO】能不能从recordset里再select?能不能合并recordset?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-4-27 14:11 | 显示全部楼层 |阅读模式
recordset里是汇总过的查询结果,需要在此基础上再做两级汇总。
为了后面便于统一处理,我需要把这两级的数据也塞进这个recordset里。

上策:最好能从recordset里直接再select(原数据不变),然后AddNew之类的,有这样的方法么?
中策:如果必须再从源数据里select,怎么合并两个recordset?(二重循环就不用说了,要高阶方法)
下策:用union,只从源数据里select一次,也不必编辑recordset。(这样SQL语句太复杂,不易读)

请大家支招。多谢。

[ 本帖最后由 phoenies 于 2010-4-27 14:14 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-4-27 14:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
select * from (select * from xxxxx)嵌套使用

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-27 14:25 | 显示全部楼层
大侠,您这select出来怎么合并结果?还是union吧。。。
后面两级汇总其实不用嵌套直接就可以从源数据里查出来。

我还是想知道上策和中策的可能性。

TA的精华主题

TA的得分主题

发表于 2010-4-27 14:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-27 14:51 | 显示全部楼层
您是说这不是上策?
首先,这种方法能不能实现呢?如果不能实现,根本连“策”都不是,就不用谈优劣了。
如果能实现,当然要看看是怎么实现的才能谈优劣啦。

[ 本帖最后由 phoenies 于 2010-4-27 14:53 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-27 15:11 | 显示全部楼层
上策果然不行,光试下AddNew就报错:Cannot update. Database or object is read-only。
不是要调Update方法才更新么?怎么现在就报错了。。。
大侠不鸟我了啊,呵呵

编辑:知道怎么办了。以下3行创建离线RecordSet,就能AddNew了。
  1. rs.CursorLocation = adUseClient
  2. rs.Open query, conn, adOpenStatic, adLockOptimistic
  3. Set rs.ActiveConnection = Nothing
复制代码

[ 本帖最后由 phoenies 于 2010-4-27 16:36 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-4-27 15:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
从理论上来讲,能少运行一次Ado连接就尽量少运行一次,所以用多层嵌套的方法进行查询是有相当优势的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-27 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 alzeng 于 2010-4-27 15:28 发表
从理论上来讲,能少运行一次Ado连接就尽量少运行一次,所以用多层嵌套的方法进行查询是有相当优势的。


我的上策不也是连接一次数据库么?
怎么就么没人正面回答问题呢?到底可行还是不可行?不能从RecordSet执行查询?

[ 本帖最后由 phoenies 于 2010-4-27 16:42 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-4-27 16:44 | 显示全部楼层
如果你一定认为这是上策,建议你做以下运行:
Arr = Application.Tanspose(Rs.GetRows)
然后对这个数组进行操作。

TA的精华主题

TA的得分主题

发表于 2010-4-27 16:47 | 显示全部楼层
其实select * from (select * from xxxxx)这种嵌套查询,二次查询就是建立在第一次查询结果的基础上来进行的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 22:03 , Processed in 0.031202 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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