ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA两表格相连求一个SQL语名?急在线等

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-6 18:33 | 显示全部楼层 |阅读模式
本帖最后由 horse0918 于 2024-3-6 18:43 编辑

表1

项目编号    合同编号  合同名称  合同金额   结算金额
X001         T01                            10000
X001          T02                           20000        0
X002          T04                           15000      10000
X002          T05                           15000      
x002          T06                            20000                              
表2
合同编号   已拨金额
  T01            5000
  T02            12000
  T04            800
  T05             2000
  说明:表1是所有项目所有合同的列表,但由于录入原因部分合同结算金额未录的为空,视为0,认为该合同未结算。表2,由于是过程管理,所以一些合同到目前未发生拨款金额,求:产生一个新字段,命名 未拨金额   规则:当合同结算=0或合同金额=“” 时,未拨金额=合同金额-已拨金额,否则 未拨金额=结算金额-已拨金额;且要求表3,不在表1的合同,其未拨金额需计算。

结果效果如表3
项目编号    合同编号  合同名称  合同金额   结算金额            已拨金额      未拨金额
X001         T01                            10000                                 5000             5000
X001          T02                           20000        0                       12000           8000
X002          T04                           15000      10000                  800               9200
X002          T05                           15000                                 2000             13000
x002          T06                           20000                                                     20000


我试了

sqlstr = "SELECT a.项目编号, a.合同编号,a.合同名称,a.合同金额,a.结算金额,b.已拨金额,"
sqlstr = sqlstr & "iif(a.结算金额=0 or a.结算金额=“”,a.合同金额-b.已拨款金额,a.结算金额-b.已拨金额) as 未拨金额  from 表1 as a left join 表2 as b  on a.合同编号=b.合同编号"

提示错误,请大侠们帮忙!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-6 18:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
就算我的SQL语句成立,最后一条记录未拨金额 20000也未能产生,如何产生无拨合同的未拨金额?

TA的精华主题

TA的得分主题

发表于 2024-3-6 18:57 | 显示全部楼层
本帖最后由 fzxba 于 2024-3-7 08:59 编辑

看错版块,表名错用
image.png

TA的精华主题

TA的得分主题

发表于 2024-3-7 08:04 | 显示全部楼层
qlstr = "SELECT a.项目编号, a.合同编号,a.合同名称,a.合同金额,a.结算金额,b.已拨金额, iif(nz(a.结算金额,0)>0 ,a.结算金额-b.已拨金额, a.合同金额-b.已拨金额) as 未拨金额  from 表1 as a inner join 表2 as b  on a.合同编号=b.合同编号"

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-7 08:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢三楼与四楼的大侠们

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-7 08:52 | 显示全部楼层
四楼的语句有点小BUG ,当结算金额数据为空,结果未产生。谢谢

TA的精华主题

TA的得分主题

发表于 2024-3-7 12:37 | 显示全部楼层
sqlstr = ”SELECT 表1.*, 表2.已拨金额, [合同金额]*((Nz([结算金额])<>0)+1)+Nz([结算金额])-Nz([已拨金额]) AS 未拨金额
FROM 表1 LEFT JOIN 表2 ON 表1.合同编号 = 表2.合同编号“
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-22 05:46 , Processed in 1.054892 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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