ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 【已解决】ADO能否实现一对多查询?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-12 18:06 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:ADO技术
本帖最后由 LMY123 于 2013-4-12 20:14 编辑

捕获.PNG

SQL实现一对多查找.rar (3.91 KB, 下载次数: 56)

TA的精华主题

TA的得分主题

发表于 2013-4-12 19:55 | 显示全部楼层
几乎没有这样的SQL语句,因为不知道字段名
使用TRANSFORM 语句变通一下:
  1. Sub Macro1()
  2.     Dim cnn As New ADODB.Connection
  3.     Dim SQL$
  4.     cnn.Open "provider = microsoft.jet.oledb.4.0; extended properties='excel 8.0;hdr=no'; data source =" & ThisWorkbook.FullName
  5.     SQL = "Transform sum(f2) select f1 from [数据$" & [a1].CurrentRegion.Address(0, 0) & "] group by f1 pivot f2"
  6.     Columns("E:IV").ClearContents
  7.     [e1].CopyFromRecordset cnn.Execute(SQL)
  8.     cnn.Close
  9.     Set cnn = Nothing
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-4-12 19:56 | 显示全部楼层
请看附件
SQL实现一对多查找.rar (10.55 KB, 下载次数: 192)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-12 20:03 | 显示全部楼层
本帖最后由 LMY123 于 2013-4-12 20:24 编辑
zhaogang1960 发表于 2013-4-12 19:56
请看附件

多谢版主及时指导,效果非常好,学习中
在版主的指导下,已完成工程部位对日期的一对多查询

Sub Macro1()
    Dim cnn As New ADODB.Connection
    Dim SQL$
    cnn.Open "provider = microsoft.jet.oledb.4.0; extended properties='excel 8.0;hdr=no'; data source =" & ThisWorkbook.FullName
    SQL = "Transform F2 select f1 from [数据$" & [a1].CurrentRegion.Address(0, 0) & "] group by f1 pivot f2"
    Columns("E:IV").ClearContents
    [e1].CopyFromRecordset cnn.Execute(SQL)
    cnn.Close
    Set cnn = Nothing
End Sub

捕获.PNG

SQL实现工程部位对日期的一对多查询---已实现.rar (11.86 KB, 下载次数: 95)

TA的精华主题

TA的得分主题

发表于 2013-4-12 21:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-6-26 21:19 | 显示全部楼层
这个好像数组也可办到,楼主是考虑到数据量大会导致数组变慢,才转而用SQL实现?

TA的精华主题

TA的得分主题

发表于 2013-6-26 21:26 | 显示全部楼层
zhouxiao 发表于 2013-6-26 21:19
这个好像数组也可办到,楼主是考虑到数据量大会导致数组变慢,才转而用SQL实现?


如果数据源在活动工作簿中时,通常数组+字典速度优于SQL

TA的精华主题

TA的得分主题

发表于 2013-6-29 16:26 | 显示全部楼层
zhaogang1960 发表于 2013-6-26 21:26
如果数据源在活动工作簿中时,通常数组+字典速度优于SQL

谢谢赵老师的解答,哪些情况下迫使我们使用ADO会比较有优势?能否请您列举几个典型的例子,不一定是现在就要学习,是想了解一下以后工作中如果碰到哪些问题,是可以用ADO解决的,我坐的是成本岗位

TA的精华主题

TA的得分主题

发表于 2013-6-29 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhouxiao 发表于 2013-6-29 16:26
谢谢赵老师的解答,哪些情况下迫使我们使用ADO会比较有优势?能否请您列举几个典型的例子,不一定是现在就 ...

通常数据源处于不打开状态使用ADO速度上有优势,特别是查询很多工作簿时更是如此

TA的精华主题

TA的得分主题

发表于 2013-6-29 16:47 | 显示全部楼层
zhaogang1960 发表于 2013-6-29 16:41
通常数据源处于不打开状态使用ADO速度上有优势,特别是查询很多工作簿时更是如此

谢谢赵老师,如果要学习ADO技术,除了常逛论坛外,有没有比较容易理解的书籍可以推荐给我一两本嘛?感谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 00:53 , Processed in 0.048440 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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