ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] VBA中的SQL多表多条件查询-已解决

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-26 17:05 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
答案用10楼的,11楼的记录数不对。
(本问题已基本解决,但由本问题又延伸出新的问题,高手请移步
http://club.excelhome.net/viewth ... e%3D1&frombbs=1

具体就是检查这个SQL语句错在哪里,应该怎么写
Sql = "select 采购单编号,名称,单位,数量,单价,小计 from [物资库$] as t1 left outer join select 采购单编号,申请单位,申请项目 from [采购单$] as t2 where t1.采购单编号=t2.采购单编号"

如果各位兄弟有时间,帮我看一下附件就更好。

附件有3个子表分别是:
采购报表,物资库,采购单

采购单表中有三个主要字段,采购单编号、申请单位、申请项目;
物资库中有若干编号:采购单编号、物品名称、单位、数量。。。

现在需要根据 选择的申请单位和申请项目,在采购单表中查找对应的采购单编号;
利用查找出来的采购单编号作为条件,提取对应的符合日期范围的物资库中的若干字段;

详情请参见附件。

主要问题是:不会利用查询结果作为条件进行VBA编码。
请高手帮忙对我的VBA进行编码,现在是提示“from语句错误”

[ 本帖最后由 lgqhawk 于 2009-6-27 17:32 编辑 ]

求助_090626采购物资管理.rar

18.16 KB, 下载次数: 318

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-26 19:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
SQL语句已解决 单位选择和项目选择问题,但日期范围的部分仍未解决;
新附件附后;

已自己解决部分的语句为:
Sql = "select 名称,规格,单位,sum(数量),单价,sum(小计) from [物资库$]" _
& " as t1" _
& " inner join" _
& " (select 采购单编号,申请单位,申请项目 from [采购单$]" _
& " where 申请单位 like '%" & dwxz & "%' and 申请项目 like '%" & xmxz & "%') as t2" _
& " on t1.采购单号=t2.采购单编号 group by 名称,规格,单位,单价"

[ 本帖最后由 lgqhawk 于 2009-6-26 19:58 编辑 ]

求助_090626采购物资管理V1.1.rar

19.07 KB, 下载次数: 330

TA的精华主题

TA的得分主题

发表于 2009-6-26 21:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
日期范围的部分
由于你的表太复杂了,我给你一个参考,不知有用没
select ....from table where 日期 between #2001-1-1# and #2002-1-1#

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-26 21:13 | 显示全部楼层

多谢3楼捧场

多谢捧场!大部分问题已解决;主要语句的格式是
select a,b,c,d from table1 as t1
inner join
(select a,e,f from table2
where e like 变量1 and f like 变量2) as t2
on t1.a=t2.a

日期问题,主要是我在第一个from之后,不能使用where 语句做条件,对字段D进行条件限定,一用就错;
其他倒没多大问题

[ 本帖最后由 lgqhawk 于 2009-6-26 21:15 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-6-26 21:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-26 21:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我建议你把这几个表导入ACCESS,在ACCESS中的查询器做一个实验

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-26 21:56 | 显示全部楼层
多谢提醒,问题又找到一半;
日期条件语句应该放在 表的联合条件 on 语句之后!
放在其他地方都是错误的位置;

但是又出现新问题“标准表达式中数据类型不匹配”
问题语句是 where 采购日期 between '#" & qsrq & "#' and '#" & jsrq & "#'
其中QSRQ和jsrq是变量。

快成功了,万一成功,我会把结果放上来。

另,期盼新的高手指导。

TA的精华主题

TA的得分主题

发表于 2009-6-26 22:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 采购01()
    Dim bbxz, xmxz, dwxz, qsrq, jsrq As String
    bbxz = Range("c2").Value '报表选择
    xmxz = Range("c3").Value '项目选择
    dwxz = Range("c4").Value '单位选择
    qsrq = Range("e2").Value '起始日期
    jsrq = Range("e3").Value '结束日期
    Sheet1.UsedRange.Offset(9).ClearContents
   
    Dim Sql$, Sql1$, Sql2$
    Dim RST As New ADODB.Recordset, conn As New ADODB.Connection
    conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
    Sql1 = "(select 采购单编号 from [采购单$] where 申请日期 between #" & qsrq & "# and #" & jsrq & "# and 申请单位='" & dwxz & "' and 申请项目='" & xmxz & "') a"
    Sql2 = "(select 采购单号,名称,规格,单位,sum(数量) as 数量,单价,sum(小计) as 小计 from [物资库$] where 采购日期 between #" & qsrq & "# and #" & jsrq & "# group by 采购单号,名称,规格,单位,单价) b"
    Sql = "select b.名称,b.规格,b.单位,b.数量,b.单价,b.小计 from " & Sql1 & " left join " & Sql2 & " on a.采购单编号=b.采购单号"
    RST.Open Sql, conn, 1, 1
    Range("c6") = RST.RecordCount
    Range("b10").CopyFromRecordset RST
    RST.Close
    conn.Close
End Sub

TA的精华主题

TA的得分主题

发表于 2009-6-26 22:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 8楼 extyg 的帖子

  学習了
我花了好多时间,还是沒能得到要的结果,
本来想试用SQL2005的CTE处里,但貌似跑不动,
真的厲害,又長进了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-26 23:02 | 显示全部楼层
刚发现8楼的兄弟做了一个!

不过我自己也做了一份,供大家参考!
个人感觉没有8楼的有条理,不过也能完成任务;

8楼的现在还没测试,马上去测试!
先把自己的结果放上来。

求助_090626采购物资管理V1.2.rar

20.86 KB, 下载次数: 957

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 10:24 , Processed in 0.047044 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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