没有合适的资源?快使用搜索试试~ 我知道了~
使用ADO-SQL处理EXCEL文件的程序架构(实例注释).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 29 浏览量
2021-10-02
13:13:58
上传
评论
收藏 829KB PDF 举报
温馨提示
试读
38页
使用ADO-SQL处理EXCEL文件的程序架构(实例注释).pdf
资源推荐
资源详情
资源评论
这是学习中的一个小结,其中必定存在错漏,需要各位朋友多多指正 (hand)
使用 ADO 连接文件自身时出现的问题及应对
ADO-SQL 语句对照使用-加载宏
使用方式一的实例
实例 1:汉语中的 “和”与逻辑运算中的 “或” (一楼)
实例 2:ADO 查询 (一楼)
实例 3:带窗体进度条的筛选 (一楼)
实例 4:通用多文件条件汇总 (二楼)
实例 5:sql 中的分类汇总、对字段使用函数 (二楼)
实例 6:sql 中的横向间隔显示字段值、排序 (二楼)
实例 7:将没有打开的文件汇总到当前表中 (三楼)(2006 年 4 月 10 日新增)
实例 7:改进版:将查询结果保存在临时对象中,而不再使用工作表单元格作为临时区
域
(第 3 页 23 楼)(2006 年 4 月 19 日新增)
实例 8:使用 Union 进行多表查询, 并对月份表进行汇总 (三楼)(2006 年 4 月 13
日新增)
实例 9:使用 IMEX=1 对于数据类型不一致的列强制为文本型处理 (第 3 页 22 楼)
(2006 年 4 月 18 日新增)
实例 10 :对于大数量文件,不打开源文件及目标文件而进行重新分类
(第 4 页 39 楼)
(2006 年 6 月 6 日新增)
实例 11:ADO 批量处理 ACCESS数据库 (第 5 页 48 楼)(2006 年 6 月 14 日新增)
实例 12 查询 ACCESS 后的结果直接产生新文件
实例 13 :批量导出 DBF 为对应 Excel 文件
实例 14:不打开文件而引用单列、单行或某个单元格(第 6 页 57 楼)
实例 15:格式相同的多文件多表去除空行后顺序汇入一张表中(第 7 页 68 楼)
实例 16 :替代 VLOOUP、SUMPRODUCT 的 VBA编码-多重 Join 的使用(第 7 页 69
楼)
实例 17:列出库中欠缺编号 -NOT IN 的应用(第 8 页 71 楼)
实例 18:用 Union 从字段不相同的两个 Access 表中筛选记录后按相似字段排序(第
11 页 102 楼)
实例 19:用 Union 进行忽略某种数值的汇总(第 11 页 104 楼)
实例 20:用 ADO 进行联动选择填写单据- ADO 与 LISTBOX(第 11 页 107 楼)
实例 21:多字段分类汇总-类数据透视表格式的汇总
(第 12 页 113 楼)
实例 22:ADO-SQL 语句对照使用(第 12 页 117 楼)
实例 23 : Transform 的使用-若要将某一字段的分类作为列标题,可使用 Transform 来实现(第
13 页 128 楼)
实例 24 :使用 ADO 在 Excel 中与 SQLSERVER 进行数据传输(第 14 页 140 楼)
使用方式二的实例
实例 2-1:标准查询格式 (三楼)(2006 年 4 月 12 日新增)
实例 2-2:对不打开的文件进行更新-无列标题时的处理 (三楼)
微软 ADO 使用帮助:
http://club.excelhome.net/dispbbs.asp?BoardID=2&ID=70082&replyID=&skin=0
相关资料:
http://club.excelhome.net/dispbbs.asp?BoardID=2&ID=159747&replyID=349064&ski
n=0
ADO-SQL 语句对照使用-加载宏
使用方法:
工具-加载宏-浏览, 找到下载的 “汇总 -查询 -分表 -合表 .xla ”,确定,确定,则在菜单上会增加一项 “汇
总-查询 -分表 -合表 ”,单击第一个菜单项:
多字段分类汇总-类数据透视表格式
即包含有 “ADO-SQL 语句对照 ”窗口:
卸载方法:
工具-加载宏,去掉 “汇总 -查询 -分表 -合表 ”前的对勾,确定即可。
实例 22 :Transform 的使用-若要将某一字段的分类作为列标题, 可使用 Transform 来实现 (第 13
页 128 楼)
http://club.excelhome.net/dispbbs.asp?boardid=2&replyid=626134&id=205703&page=1&skin=0&S
tar=2
Sub total()
Application.ScreenUpdating = False
Set Cnn = CreateObject("adodb.connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" &
ActiveWorkbook.FullName
[a4:d65536].ClearContents
Sql = "TRANSFORM COUNT( 通话类型 ) SELECT 对方号码 ,SUM([ 时长 (秒)]) FROM [ 原始数据 $]
GROUP BY 对方号码 PIVOT 通话类型 "
[a4].CopyFromRecordset Cnn.Execute(Sql)
cnn.Close
Set cnn = Nothing
Range("A3:E" & [a65535].End(xlUp).Row).Sort Key1:=Range("D3"), Order1:=xlDescending
Application.ScreenUpdating = True
End Sub
1. 设置对象
Set Conn = CreateObject("adodb.connection")
2. 打开联接
(1)包含字段名的情况
Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & 文件
全路径
(2)不包含字段名的情况
Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties= 'excel 8.0; hdr=no' ;data
source=" & 文件全路径
(3)同一列中数据类型不一致的情况
Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties= 'excel 8.0; imex=1' ;data
source=" & 文件全路径
3. 设置 sql 语句
Sql = sql 语句
4. 执行 sql 语句
放置结果的区域的左上角单元格 .CopyFromRecordset Conn.Execute(Sql)
5. 关闭联接
conn.Close
6. 对象置空
Set Conn = Nothing
处理不同问题时深色部分的代码可以保持不变,只要根据不同情况改变 红色 部分的代码即可。
所以对照上面的分析,本例中需要解释的就剩 SQL 语句了
Set Cnn = CreateObject("adodb.connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" &
ActiveWorkbook.FullName
[a4:d65536].ClearContents
Sql = "TRANSFORM COUNT( 通话类型 ) SELECT 对方号码 ,SUM([ 时长 (秒)]) FROM [ 原始数据
$] GROUP BY 对方号码 PIVOT 通话类型 "
[a4] .CopyFromRecordset Cnn.Execute(Sql)
cnn.Close
Set cnn = Nothing
若仅是获取工作表某区域中的数值而没有汇总等等其他的操作,那么基本的 SQL 语句为:
SELECT * FROM [ 表名 $区域 ]
若没有指明区域且包含字段名,则对于字段名连续的表:
SELECT * FROM [ 原始数据 $]) 可将 原始数据表 中所有 字段名下的数据取出,
SELECT 字段名 1 FROM [ 原始数据 $]) 可将 原始数据表 中指定 字段名 1 下的数据取出,
SELECT SUM( 字段名 2) FROM [ 原始数据 $]) GROUP BY 字段名 1 可求出 原始数据表 中字段
名 2 根据 字段名 1 的分类 求和 值,
若同时列出分类字段 字段名 1:
SELECT 字段名 1,SUM( 字段名 2) FROM [ 原始数据 $]) GROUP BY 字段名 1
则结果的第一列为 字段名 1 的不重复值,第二列为 字段名 2 根据 字段名 1 的分类 求和 值,
TRANSFORM COUNT (字段名 4) SELECT 字段名 1 FROM [ 原始数据 $]) GROUP BY 字段名
1 PIVOT 字段名 3
可将 PIVOT 后面指定的 字段名 3 的非重复值作为列标题,并求出 字段名 4 根据 字段名 1 的分类 个
数值,
TRANSFORM COUNT (字段名 4) SELECT 字段名 1,SUM( 字段名 2) FROM [ 原始数据 $]) GROUP
BY 字段名 1 PIVOT 字段名 3
得结果的第一列为 字段名 1 的不重复值, 第二列为 字段名 2 根据 字段名 1 的分类 求和 值,后面为 字段
名 3 的非重复值作为列标题的 字段名 4 根据 字段名 1 的分类 个数 值,
(上面所涉及到的字段名可相同也可不同)所以,
TRANSFORM COUNT (通话类型 ) SELECT 对方号码 ,SUM ([时长 (秒)]) FROM [ 原始数据 $]
GROUP BY 对方号码 PIVOT 通话类型
即可得到第一列为 对方号码 的不重复值, 第二列为 时长 根据 对方号码 的分类 求和 值,后面为 通话类型
的非重复值作为列标题的 通话类型 根据 对方号码 的分类 个数 值,因为通话类型只有两种 “主叫 ”和“被
叫”,所以第三列为 “主叫 ”次数即呼出次数,第四列为 “被叫 ”次数即呼入次数。
若要使用 ADO 来处理 Excel 文件,只要将以下 6 条基本的语句中的红色部分替换为实
际内容即可:
方式一:
Set Conn = CreateObject("adodb.connection")
,(1)设置对象
Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data
source=" & 文件全路径 ,(2)打开联接
Sql = sql 语句 & from [ 表的显示名称 $] " & sql 语句
,(3)设置 sql 语句
放置结果的区域的左上角单元格 .CopyFromRecordset Conn.Execute(Sql) ,(4) 执行 sql
语句
'或 Set temp = Conn.Execute(Sql) ' (4-1) 执行 sql 语句,并存于临时对象中
……… ' (4-2) 从临时对象中取出结果进行处理
Conn.Close ,(5)关闭联接
Set Conn = Nothing ,(6)对象置空
实例 1:汉语中的 “和”与逻辑运算中的 “或”
http://club.excelhome.net/dispbbs.asp?BoardID=2&ID=160318&replyID=353335&skin=0
设表中有包括 字段 1 的多个字段
Sub andor()
Dim Sql$
Set Conn = CreateObject("adodb.connection") ,(1)
Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data
a.xls ” ,(2)
Sql = "select * from [Sheet1$] where 字段 1='020009' or 字段 1='050023' or 字段
1='010024'"
,(3)
剩余37页未读,继续阅读
资源评论
资料大全
- 粉丝: 14
- 资源: 26万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 筷手引流工具.apk
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功