ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 按照whsfhwm提示的方法写的两个SQL语句到底有什么区别?为什么一个正确一个是错误的?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-7 20:00 | 显示全部楼层 |阅读模式
今天按照大侠whsfhwm 提示的方法的做数据透视表(利用宏录制外部数据查询SQL后自己修改代码)出现了我想不通的问题。
修改后代码中就这两句代码不同,其余部分一样,为什么一句可以实现数据透视表的创建,一句却出错呢?
请看着两句代码?
正确的SQL语句:

  1. select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,单价 from [sheet1$]
复制代码

错误的代码:

  1. select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,发图时间,计划完成时间,实际完成时间,PRE编号,PR单编号,QEV编号,单价 from [sheet1$]
复制代码

实际上我需要是的错误的代码中所能实现的数据透视表。

完整代码如下:
  1. Sub 生成pivot()
  2. '
  3. '生成pivot Macro
  4. ' 宏由 jooter 录制,时间: 2010-6-4
  5. '

  6. '
  7. Columns("H:H").Select
  8. Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _
  9. TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
  10. Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
  11. :=Array(1, 2), TrailingMinusNumbers:=True
  12. Range("M1").Select
  13. With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
  14. .Connection = Array( _
  15. "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=F:\working\2010\06\数据透视表\sadfas.xls;Mode=Share De" _
  16. , _
  17. "ny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";J" _
  18. , _
  19. "et OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions" _
  20. , _
  21. "=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Co" _
  22. , _
  23. "py Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
  24. )
  25. .CommandType = xlCmdTable
  26. .CommandText = Array( _
  27. "select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,单价 from [sheet1$]" _
  28. )
  29. '.CommandText = Array( _
  30. "select 区域,工装构成,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,发图时间,计划完成时间,实际完成时间,PRE编号,PR单编号,QEV编号,单价 from [sheet1$]" _
  31. )
  32. '.CommandText = Array( _
  33. "select 区域,工装构成,夹具总成,设计者,序号,图号,名称,iif(instr(数量,'各')>0,2*val(right(数量,len(数量)-instr(数量,'各'))),val(数量)) as 新数量,规格,制造商,发图时间,计划完成时间,实际完成时间,PRE编号,PR单编号,QEV编号,单价 from [sheet1$]" _
  34. )
  35. .MaintainConnection = True
  36. .CreatePivotTable TableDestination:="", TableName:="10", _
  37. DefaultVersion:=xlPivotTableVersion10
  38. End With
  39. ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
  40. ActiveSheet.Cells(3, 1).Select
  41. End Sub
复制代码



请高手帮我看看,为什么错误的代码不能生成数据透视表呢?
还有上面的代码可以简化吗?我看着好复杂,看不懂导入外部数据部分。

工装数据透视表调试.rar

18.03 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2010-6-7 21:02 | 显示全部楼层

回复 1楼 jooter 的帖子

QEV编号——————改为“QEV单编号” 就可以了。
粗心啦~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-7 21:27 | 显示全部楼层
原帖由 whsfhwm 于 2010-6-7 21:02 发表
QEV编号——————改为“QEV单编号” 就可以了。
粗心啦~~~

哎呀,我的神啊!真是少了一个字。
家里装的是office2007,运行不了,明天去帮公室试试看,应该是可以了,谢谢大侠whsfhwm!

请问大侠以下代码可以简化一下吗?看不懂啊!
  1. With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
  2. .Connection = Array( _
  3. "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=F:\working\2010\06\数据透视表\sadfas.xls;Mode=Share De" _
  4. , _
  5. "ny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";J" _
  6. , _
  7. "et OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions" _
  8. , _
  9. "=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Co" _
  10. , _
  11. "py Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
  12. )
复制代码

TA的精华主题

TA的得分主题

发表于 2010-6-7 21:34 | 显示全部楼层
你是用录制宏做的,可以肯定的是可以简化,我是不会,但可以给你一个思路,你按照语句分别将部分语句进行注释标志后运行,如能运行达到需要的表格,说明注释的语句就是可以简化的

TA的精华主题

TA的得分主题

发表于 2010-6-7 21:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
OLEDB;Provider=...
Data Source=...
Extended Properties=""HDR=YES;""
Jet OLEDB:Engine Type=35
好像其他的都可以省略吧。自己多动手试试吧(省略号表示=后面内容要跟上
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-29 02:42 , Processed in 0.040236 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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