ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] SQL代码处理加工器V3.5

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-2-5 22:16 | 显示全部楼层 |阅读模式
在和数据库打交道时,我们常常需要据软件自带的工具(如SQL SERVER2000的企业管理器 或ACCESS的查询等等)生成的代码 转化成在VBA中能用的代码,举例如下:
用友T3的数据库为例,在SQL SERVER的企业管理器中表查询里很容易的生成这样的代码
SELECT SO_SODetails.cSOCode AS 销售订单号, SO_SODetails.dPreDate AS 预发日期,
Customer.cCusName AS 客户名称, Person.cPersonName AS 业务员,
Customer.cTrade AS 所属行业, InventoryClass.cInvCName AS 产品类别,
Inventory.cInvName AS 存货名称, Inventory.cInvStd AS 规格型号,
SO_SODetails.iQuantity AS 数量, SO_SODetails.iNatUnitPrice AS 单价无税,
SO_SODetails.iNatMoney AS 金额无税, SO_SODetails.iNatTax AS 税额,
SO_SODetails.iNatSum AS 价税合计, SO_SODetails.iFHQuantity AS 发货数量,
SO_SODetails.iFHMoney AS 发货金额
FROM SO_SODetails INNER JOIN
Inventory ON SO_SODetails.cInvCode = Inventory.cInvCode INNER JOIN
InventoryClass ON Inventory.cInvCCode = InventoryClass.cInvCCode INNER JOIN
SO_SOMain ON SO_SODetails.cSOCode = SO_SOMain.cSOCode INNER JOIN
Customer ON SO_SOMain.cCusCode = Customer.cCusCode INNER JOIN
Person ON SO_SOMain.cPersonCode = Person.cPersonCode
WHERE (MONTH(SO_SODetails.dPreDate) >= 1) AND (MONTH(SO_SODetails.dPreDate)
<= 1) AND (Person.cPersonName = '白小白') AND (Customer.cCusName = '大连船舶重工集团有限公司')

上面的这些代码如何能在VBA中引用呢?通常我是将它们转化成如下的代码
ssql = ""
ssql = ssql & "SELECT SO_SODetails.cSOCode AS 销售订单号, SO_SODetails.dPreDate AS 预发日期," & chr(13)
ssql = ssql & "Customer.cCusName AS 客户名称, Person.cPersonName AS 业务员," & chr(13)
ssql = ssql & "Customer.cTrade AS 所属行业, InventoryClass.cInvCName AS 产品类别," & chr(13)
ssql = ssql & "Inventory.cInvName AS 存货名称, Inventory.cInvStd AS 规格型号," & chr(13)
ssql = ssql & "SO_SODetails.iQuantity AS 数量, SO_SODetails.iNatUnitPrice AS 单价无税," & chr(13)
ssql = ssql & "SO_SODetails.iNatMoney AS 金额无税, SO_SODetails.iNatTax AS 税额," & chr(13)
ssql = ssql & "SO_SODetails.iNatSum AS 价税合计, SO_SODetails.iFHQuantity AS 发货数量," & chr(13)
ssql = ssql & "SO_SODetails.iFHMoney AS 发货金额" & chr(13)
ssql = ssql & "FROM SO_SODetails INNER JOIN" & chr(13)
ssql = ssql & "Inventory ON SO_SODetails.cInvCode = Inventory.cInvCode INNER JOIN" & chr(13)
ssql = ssql & "InventoryClass ON Inventory.cInvCCode = InventoryClass.cInvCCode INNER JOIN" & chr(13)
ssql = ssql & "SO_SOMain ON SO_SODetails.cSOCode = SO_SOMain.cSOCode INNER JOIN" & chr(13)
ssql = ssql & "Customer ON SO_SOMain.cCusCode = Customer.cCusCode INNER JOIN" & chr(13)
ssql = ssql & "Person ON SO_SOMain.cPersonCode = Person.cPersonCode" & chr(13)
ssql = ssql & "WHERE (MONTH(SO_SODetails.dPreDate) >= 1) AND (MONTH(SO_SODetails.dPreDate)" & chr(13)
ssql = ssql & "<= 1) AND (Person.cPersonName = '白小白') AND (Customer.cCusName = '大连船舶重工集团有限公司')" & chr(13)

恩,你发现了,仅挨着上面的这段代码就可以很容易的贴进VBE中稍做变量修改进行引用,如将 白小白 改为 →" & target.offset(0,-2) & "← .于是乎我就做了这样一个工具,方便加工代码,她好我也好..
----------光滑的分割线--------------
SQL代码加工合成工具V1.0.用法:打开文件后点击按钮,CTRL+V将代码直接贴进光标处的文本框→点击确定按钮→提示成功读入内存,同时打记事本→在记事本中按CTRL+V粘贴加工后的代码 加工后的代码可直接贴进VBE,请测试.

[ 本帖最后由 dcw0402 于 2010-3-21 22:11 编辑 ]

SQL代码加工合成工具V2.0.rar

16.52 KB, 下载次数: 156

SQL加工工具V3.0.rar

237.56 KB, 下载次数: 170

3.0版参见6楼说明

SQL加工工具V3.5托盘版.rar

57.13 KB, 下载次数: 165

TA的精华主题

TA的得分主题

发表于 2010-2-5 22:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
收藏一下,正在学SQL呢,谢谢楼主,

TA的精华主题

TA的得分主题

发表于 2010-2-6 00:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-2-27 22:24 | 显示全部楼层
一楼附件加入更新  将代码转化回来,我的实践中认为这是很有必要的,即将
ssql = ""
ssql = ssql & "SELECT * from a" & chr(13)
ssql = ssql & "wher a.field1 like '6001%'"
转化成
select * from a
where a.field like '6001%'

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-21 18:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
VB版出品  主要是针对VBS的学习
欢迎在一楼下载试用

[ 本帖最后由 dcw0402 于 2010-3-23 17:54 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-6-17 21:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好工具 ,谢谢分享。

TA的精华主题

TA的得分主题

发表于 2010-6-20 23:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-21 10:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-2 21:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-29 22:17 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-2 13:52 , Processed in 0.044209 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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