Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4885|回复: 24

[已解决]VBA中SQL运行

[复制链接]
发表于 2013-3-4 14:54 | 显示全部楼层 |阅读模式
各位大侠,小弟在运行一VBA时,里面有两句SQL,前面一句可以实现预期结果,说明相应的链接没问题呀,可后一句却不行,但这一句直接放在access里面却可以出结果,为啥呀??
在VBA中为:
        sa = "select [Part_No] from [" & mytblName_AVL & "] as tmp group by [Part_No],[Project]  having (count(*)>1 and [Project] like '*UMA')"
        sSq = "delete * from " & mytblName_AVL & " where (((" & mytblName_AVL & ".Part_No) in (" & sa & ")) and ((" & mytblName_AVL & ".Project) like '*UMA'))"
        CNN.Execute sSq  ‘可以运行下去却相应的预期结果却没实行,没删除应删除的数据、、、、
mytblName_AVL为一变量了
在Access里面把mytblName_AVL改成对应的表名却可以出现结果,改成删除查询后可以删除数据、、、、
最佳答案
2013-3-6 08:14
我加了UMB类似的记录,为了测试UMA后缀的条件。
还是SQL语句的写法不对。
  1.     sa = "select Part_No from " & mytblName_AVL & " group by Part_No,Project having count(*)>1 and Project like '%UMA'"
  2.     sSq = "delete * from " & mytblName_AVL & " where  Part_No in (" & sa & ")"
复制代码
如果只是从一个表里操作的话,数据库名这个前缀还是可以省略的。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-4 14:57 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-3-4 15:37 | 显示全部楼层
hwc2ycy 发表于 2013-3-4 14:57
把附件传上来吧。

嗯嗯,帮忙看看哈、、、
回复

使用道具 举报

 楼主| 发表于 2013-3-4 15:40 | 显示全部楼层
wffgg2008 发表于 2013-3-4 15:37
嗯嗯,帮忙看看哈、、、

呀呀没加成功再加上、、

DADF.zip

29.18 KB, 下载次数: 13

回复

使用道具 举报

发表于 2013-3-4 16:13 | 显示全部楼层
你的SQL语句就查不到结果嘛,结果是空的,你先这条一条整明白吧。
delete * from HC where (((HC.Part_No) in (select [Part_No] from [HC] as tmp group by [Part_No],[Project]  having (count(*)>1 and [Project] like '*UMA'))) and ((HC.Project) like '*UMA'))
回复

使用道具 举报

 楼主| 发表于 2013-3-4 17:16 | 显示全部楼层
hwc2ycy 发表于 2013-3-4 16:13
你的SQL语句就查不到结果嘛,结果是空的,你先这条一条整明白吧。
delete * from HC where (((HC.Part_No) ...

不是红色那部分呀?!我嵌的应是下面绿色这部分呀、、、
delete * from HC where (((HC.Part_No) in (select [Part_No] from [HC] as tmp group by [Part_No],[Project]  having (count(*)>1 and [Project] like '*UMA'))) and ((HC.Project) like '*UMA'))
我把整句放到access里面可以整出来呀,且可以转成图片上的呀、、、
AAA.Jpg
回复

使用道具 举报

发表于 2013-3-4 19:16 | 显示全部楼层
QQ截图20130304191419.jpg
回复

使用道具 举报

发表于 2013-3-4 19:20 | 显示全部楼层
执行删除前有44条记录。
QQ截图20130304191749.jpg
回复

使用道具 举报

 楼主| 发表于 2013-3-4 20:34 | 显示全部楼层
hwc2ycy 发表于 2013-3-4 19:20
执行删除前有44条记录。

没有呀,只有二十二条记录呀。。。班长可能执行两次了。
SQL那句呀,and 后面的也是主查询的,只有select 到and前面那点是子查询的。。。班长可以试下把子查询的语句放进access里面看看,有结果、、、
dadf.jpg
回复

使用道具 举报

发表于 2013-3-4 20:47 | 显示全部楼层
我直接在EXCEL里MQ运行查的,莫非在ACESS里的结果不同?
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-23 15:58 , Processed in 0.470625 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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